热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

用MySQL+HeartBeat实现MySQL主主自动切换来保证网站不中断服务

对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如OracleOPSserver和IBMDB2(share-nothingarchitecture)。最

对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如Oracle OPS server和IBM DB2 (share-nothing architecture)。最

Mysql HA实现MYSQL的高可用

一、背景

当前大多网站采用MYSQL+Linux+APACHE这种经典配置,如何防止单点失败造成的整个网站的不可用是网站管理者必须要考虑的问题,其中数据库的高可用性(Database server’s high availability)是重中之重。

对于数据库的高可用性,各商业软件的厂商都有各自的解决方案,比如Oracle OPS server和IBM DB2 (share-nothing architecture)。最近MYSQL AB也发布了MYSQL cluster 软件,使用与IBM DB2类似的技术。

MySQL cluster可能会是日后最理想的方案,但是从资源、可集成度方面考虑,,给出一个简单实用的方案借鉴。本文介绍的是性价比比较高的一种: 使用Heartbeat 2.0配置Linux高可用性集群。

二、实现原理

通过Linux HA 软件 heartbeat 实现IP的自动漂移,即当一台服务器宕机后,浮动IP(整个cluster的对外IP )自动漂移到另外一台服务器。

通过Mysql自身的replication 实现不同机器上多个数据库的同步整体性能此方案将会降低MYSQL 1%左右的性能,可用性及数据安全性将大有提高,同时服务器的切换对终端使用者是透明的,终端应用不需要进行更改。

所需硬件

安装有双网卡的配置大致相同的服务器或工作机两台 一条交叉网线(用于双机对连的心跳线)

所需软件

Linux HA 软件 heartbeat (只支持两个节点),安装盘里集成的有这个软件的rpm包

软件主页:

Mysql软件

软件主页:

实现步骤

一、设置硬件环境:如下表:

计算机名: 网卡 ip地址

primary Eth0

eth1

192.168.0.10/255.255.255.0

10.0.0.1/255.0.0.0 (用于心跳)

backup Eth0

eth1

192.168.0.11/255.255.255.0

10.0.0.2/255.0.0.0 (用于心跳

primary和backup的eth0分别连接到你的交换机

primary和backup的eth1之间用心跳线直连起来,做心跳

浮动IP为192.168.0.8/255.255.255.0

二、安装MYSQL

在primary节点上安装mysql数据库

这里我开始都把它下载到本地了,所以这里我用软件把mysql包上传到服务器root目录下

1、在linux系统中添加运行Mysql的用户和组

[root@primary ~]# groupadd mysql

[root@primary ~]# useradd -g mysql mysql

2、解压缩源码包

[root@primary ~]# tar -zxvf mysql-5.0.22.tar.gz

[root@primary ~]# cd mysql-5.0.22

3、配置编译

配置mysql的安装目录,并制定数据库的存放位置

[root@primary mysql-5.0.22]# ./configure –prefix=/usr/local/mysql \

–localstatedir=/var/lib/mysql

4、编译并安装

[root@primary mysql-5.0.22]#make

[root@primary mysql-5.0.22]#make install

5、装载原始授权到数据库

[root@primary mysql-5.0.22]#./scripts/mysql_install_db

6、copy配置文件到/etc目录

[root@primary mysql-5.0.22]# cp support-files/my-medium.cnf /etc/my.cnf

7、copy启动脚本到资源目录

cp support-files/mysql.server /etc/rc.d/init.d/mysqld

8、添加mysql服务,让系统启动时自动启动mysql服务

[root@primary mysql-5.0.22]#chmod +x /etc/rc.d/init.d/mysqld

[root@primary mysql-5.0.22]#chkconfig –level 235 mysqld on

9、更改目录属主/var/lib/mysql

[root@primary mysql-5.0.22]#chown -R mysql.mysql /var/lib/mysql

10、启动mysql

[root@primary mysql-5.0.22]#service mysqld start

11、设置环境变量

[root@primary ~]# vi /etc/profile添加一行就 ,在运行mysql的时候就不用输入很长的路经了

export PATH=$PATH:/usr/local/mysql/bin

设置好之后,用下行命令是设置立即生效

# source /etc/profile

在backup服务器上安装mysql如同上面的步骤

在mysql数据库中创建一个库,用来同步数据和测试用,mysql安装完后有一个练习库test这里就不建了直接就用它了。在test库里面先建一个表

登陆mysql数据库

mysql -u root -p

(执行后提示输入密码,正确输入mysql root用户密码后,登入mysql,以下操作在mysql命令行下进行)

要使用test数据库,先用use命令选择该数据库:

mysql> use test

创建一个表

下面使用create table语句指定你要建的表的布局,下面只是用于一个测试的表。我就随便建了一个:

mysql> create table data(name VARCHAR(20), address VARCHAR(50), phone VARCHAR(20));

Query OK, 0 rows affected (0.11 sec)

在表中添加一条记录,用insert into语句:

mysql> insert into data(name,address,phone) values(‘jhone’,'beijing’,’138000000′);

Query OK, 1 row affected (0.02 sec)

查看表中的记录

mysql> select * from data;

+——-+———+———–+

| name | address | phone |

+——-+———+———–+

| jhone | beijing | 138000000 |

+——-+———+———–+

1 row in set (0.05 sec)

linux

推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
author-avatar
我的天空有点蓝2012_916
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有