当前位置:文档之家› 通过KeepAlived搭建MySQL双主模式的高可用集群系统

通过KeepAlived搭建MySQL双主模式的高可用集群系统

通过KeepAlived搭建MySQL双主模式的高可用集群系统一、整体架构企业级mysql集群具备高可用、可扩展、易管理、低成本的特点。

下面将介绍企业环境中经常应用的一个解决方案,即MySQL的双主互备架构,主要设计思路是通过MySQL Replication技术将两台MySQL Server互相将对方作为自己的Master,自己又同时作为对方的Slave来进行复制。

这样就实现了高可用构架中的数据同步功能,同时,将采用KeepAlived 来实现Mysql的自动failover。

在这个构架中,虽然两台MySQL Server互为主从,但同一时刻只有一个MySQL Server可读写,另一个MySQL Server只能进行读操作,这样可保证数据的一致性。

整个架构下图所示。

二、MySQL主主互备模式配置环境第一步要做的工作是在这两天机器上都安装mysql,在做主从复制的时候mysql的版本尽量保持一致。

即使不一样一定要以主服务的版本为最高的版本,从服务器的版本不能高于主服务器的版本。

1、Mysql的安装与配置Mysql5.6版本之后,编译mysql方式变为cmake安装cmake:#yum install cmake#cd mysql-5.6.17#cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/mysql/data \-DSYSCONFDIR=/etc \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_MEMORY_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \-DMYSQL_TCP_PORT=3306 \-DENABLED_LOCAL_INFILE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DEXTRA_CHARSETS=all \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_cimake && make install如果没有就创建用户就创建如下用户:#groupadd mysql#useradd -g mysql mysql修改/usr/local/mysql权限:#chown -R mysql:mysql /usr/local/mysql#cd /usr/local/mysql进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表:#scripts/mysql_install_db--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data --user=mysql2、启动MySQL添加服务,拷贝服务脚本到init.d目录,并设置开机启动#cd /usr/local/mysql#cp support-files/mysql.server /etc/init.d/mysql#chkconfig mysql on#service mysql start--启动MySQL三、配置mysql主从服务器1、修改MySQL配置文件在默认情况下MySQL的配置文件是/etc/f。

但我们需要修改的路径是自己安装MySQL的路径。

首先修改DB1主机的配置文件,在/usr/local/mysql/f文件中的“[mysqld]”段添加如下内容:server-id = 1log-bin=mysql-binrelay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%然后修改DB2主机的配置文件,在/usr/local/mysql/f文件中的“[mysqld]”段添加如下内容:server-id = 2log-bin=mysql-bin(如果只有一主一从,在从库上是不需要开启binlog日志的,后面是为了演示互为主从这才加上去的)relay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%其中,server-id是节点标识,主、从节点不能相同,必须全局唯一。

log-bin表示开启MySQL的binlog日志功能。

“mysql-bin”表示日志文件的命名格式,会生成文件名为mysql-bin.000001、mysql-bin.000002等的日志文件。

relay-log用来定义relay-log日志文件的命名格式。

replicate-wild-ignore-table是个复制过滤选项,可以过滤掉不需要复制的数据库或表,例如“mysql.%“表示不复制mysql库下的所有对象,其他依此类推。

与此对应的是replicate_wild_do_table选项,用来指定需要复制的数据库或表。

2、手动同步数据库如果DB1上已经有mysql数据,那么在执行主主互备之前,需要将DB1和DB2上两个mysql的数据保持同步,首先在DB1上备份mysql数据,执行如下SQL语句:mysql>FLUSH TABLES WITH READ LOCK; (解锁:unlock tables;)Query OK, 0 rows affected (0.00 sec)在不退出终端的情况下,再开启一个终端直接打包压缩数据文件或使用mysqldump工具来导出数据。

这里通过打包mysql文件来完成数据的备份,操作过程如下:[root@DB1 ~]# cd /usr/local[root@DB1 lib]# tar zcvf mysql.tar.gz mysql[root@DB1 lib]# scp mysql.tar.gz DB2:/usr/local/将数据传输到DB2后,依次重启DB1和DB2上面的mysql。

3、创建复制用户并授权首先在DB1的mysql库中创建复制用户,操作过程如图所示。

mysql> grant replication slave on *.* to 'repl_user'@'192.168.1.89' identified by 'repl_passwd';然后在DB2的mysql库中将DB1设为自己的主服务器,操作如下所示。

Change master to master_host='192.168.1.85',master_user='repl_user',master_password='repl_passwd',master_log_file='mysql-bin.000001',master_log_pos=431;这里需要注意master_log_file和master_log_pos两个选项,这两个选项的值刚好是在DB1上通过SQL语句“show master status”查询到的结果。

接着就可以在DB2上启动slave服务了,可执行如下SQL命令:mysql> start slave;下面查看DB2上slave的运行状态,如图所示。

通过查看slave的运行状态发现,一切运行正常,这里需要重点关注的是Slave_IO_Running和Slave_SQL_Running,这两个就是在Slave节点上运行的主从复制线程,正常情况下这两个值都应该为Yes。

另外还需要注意的是Slave_IO_State、Master_Host、Master_Log_File、Read_Master_Log_Pos、Relay_Log_File、Relay_Log_Pos和Relay_Master_Log_File几个选项,从中可以查看出mysql复制的运行原理及执行规律。

最后还有一个Replicate_Wild_Ignore_Table选项,这个是之前在f中添加过的,通过此选项的输出值可以知道过滤掉了哪些数据库。

到这里位置,从DB1到DB2的mysql主从复制已经完成了。

接下来开始配置从DB2到DB1的mysql主从复制,这个配置过程与上面的完全一样,首先在DB2的mysql库中创建复制用户,操作如图grant replication slave on *.* to 'repl_user'@'192.168.1.85' identified by 'repl_passwd';然后在DB1的mysql库中将DB2设为自己的主服务器,操作如下change master to master_host='192.168.1.89',master_user='repl_user',master_password='repl_passwd',master_log_file='mysql-bin.000001',master_log_pos=862;接着就可以在DB1上启动slave服务了,可执行如下SQL命令:mysql> start slave;下面查看DB1上slave的运行状态,如图所示。

从图上中可以看出Slave_IO_Running和Slave_SQL_Running都是Yes状态,表明DB1上复制服务运行正常。

至此,mysql双主模式的主从复制已经配置完毕了。

四、配置KeepAlived实现MySQL双主高可用在进行高可用配置之前,首先需要在DB1和DB2服务器上安装KeepAlived软件。

KeepAlived的安装和配置过程如下:[root@keepalived-master app]#tar zxvf keepalived-1.2.12.tar.gz[root@keepalived-master app]#cd keepalived-1.2.12[************************************.12]#./configure--sysconf=/etc \> --with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64[************************************.12]#make[************************************.12]#makeinstall[************************************.12]#ln-s/usr/local/sbin/keepalived/sbin/[************************************.12]#chkconfig--add keepalived[************************************.12]#chkconfig--level 35 keepalived on安装完成后,进入keepalived的配置过程。

相关主题