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

5.1 MySQL Replication介绍

MySQL Replication支持多种类型的复制方式,常见的有基于语句的复制、基于行的复制和混合类型的复制。下面进行分别介绍。
(1) 基于语句的复制
MySQL默认采用基于语句的复制,效率很高。基本方式是:在Master服务器上执行的SQL语句,在Slave服务器上再次执行同样的语句。而一旦发现没法精确复制时,会自动选择基于行的复制。
(2) 基于行的复制
基本方式为:把Master服务器上改变的内容复制过去,而不是把SQL语句在从服务器上执行一遍, 从mysql5.0开始支持基于行的复制。
(3) 混合类型的复制
其实就是上面两种类型的组合,默认采用基于语句的复制,如果发现基于语句的复制无法精确的完成,就会采用基于行的复制。

  • 复制原理
    从一个master到多个slave的异步过程,主要是三个线程来实现,其中一个io线程在master端,另外两个sql线程和io线程在slave端
    slave从master获取binary log,并在自身将二进制文件解析为sql语句完全顺序执行sql语句所记录的各种操作。
  • MySQL Replication常用架构
架构描述
一主一从一个Master服务器和一个Slave服务器
一主多从一个Master服务器和两个或两个以上Slave服务器。经常用在写操作不频繁、查询量比较大的业务环境中。
主主互备即两个MySQL Server互相将对方作为自己的Master,自己又同时作为对方的Slave来进行复制。主要用于对MySQL写操作要求比较高的环境中,避免了MySQL单点故障
双主多从实就是双主互备,然后再加上多个Slave服务器。主要用于对MySQL写操作要求比较高,同时查询量比较大的环境中。

同一时刻只能有一个Master服务器进行写操作。
 一个Master服务器可以有多个Slave服务器。
 无论是Master服务器还是Slave服务器,都要确保各自的Server ID唯一,不然双主互备就会出问题。
 一个Slave服务器可以将其从Master服务器获得的更新信息传递给其他的Slave服务器。依此类推

假设db1为192.168.88.11 db2为192.168.88.12
1、修改MySQL配置文件

在默认情况下MySQL的配置文件是/etc/my.cnf,首先修改DB1主机的配置文件,在/etc/my.cnf文件中的“[mysqld]”段添加如下内容:
server-id = 1
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%

然后修改DB2主机的配置文件,在/etc/my.cnf文件中的“[mysqld]”段添加如下内容:

server-id = 2
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%

2、手动同步数据库
首先在DB1上备份mysql数据,执行如下SQL语句:

mysql>FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

在不退出终端的情况下,再开启一个终端直接打包压缩数据文件或使用mysqldump工具来导出数据。这里通过打包mysql文件来完成数据的备份,操作过程如下:

[root@DB1 ~]# cd /var/lib/
[root@DB1 lib]# tar zcvf mysql.tar.gz mysql
[root@DB1 lib]# scp mysql.tar.gz  DB2:/var/lib/

将数据传输到DB2后,依次重启DB1和DB2上面的mysql。
3、创建复制用户并授权
首先在DB1的mysql库中创建复制用户

grant replication slave  on *.* to 'repl_user'@'192.168.88.%' identified by 'repl_passwd';
show master status;

然后在DB2的mysql库中将DB1设为自己的主服务器:

change master to master_host='192.168.88.11',master_user='repl_user',master_password='repl_passwd',master_log_file='mysql-bin.000001',master_log_pos=120;

接着在DB2的mysql库中创建复制用户:

grant replication slave  on *.* to 'repl_user'@'192.168.88.%' identified by 'repl_passwd';
show master status;

然后在DB1的mysql库中将DB2设为自己的主服务器:

change master to master_host='192.168.88.12',master_user='repl_user',master_password='repl_passwd',master_log_file='mysql-bin.000001',master_log_pos=120;

配置keepalived实现mysql的双主高可用

[root@keepalived-master app]# yum install -y gcc gcc-c++ wget popt-devel openssl openssl-devel
[root@keepalived-master app]#yum install -y libnl libnl-devel libnl3 libnl3-devel
[root@keepalived-master app]#yum install -y libnfnetlink-devel
[root@keepalived-master app]#tar zxvf keepalived-1.4.3.tar.gz
[root@keepalived-master app]# cd keepalived-1.4.3
[root@keepalived-master keepalived-1.4.3]#./configure   --sysconf=/etc
[root@keepalived-master keepalived-1.4.3]# make
[root@keepalived-master keepalived-1.4.3]# make install
[root@keepalived-master keepalived-1.4.3]# systemctl enable keepalived

1、停止DB1服务器的日志接收功能
2、在远程客户端测试
注意:执行check_slave.pl脚本时,可能出现如下错误:
Can’t locate DBI.pm in @INC
此时只需安装下面perl软件包即可:
[root@DB1 tmp]#yum -y install perl-DBD-MySQL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,Keepalived可以用于MySQL集群高可用MySQL集群通常由多个MySQL服务器组成,为了实现高可用性,需要在这些服务器之间进行状态同步和自动故障转移。Keepalived可以通过VRRP协议实现多个服务器之间的状态同步和切换,当主MySQL服务器宕机时,备用服务器可以快速接管其IP地址,从而保证服务的可用性。 具体实现方法如下: 1. 首先,需要在每个MySQL服务器上安装Keepalived软件,并配置Keepalived的配置文件。在配置文件中,需要指定虚拟IP地址和VRRP协议的相关参数,如下所示: ``` vrrp_instance VI_1 { interface eth0 state MASTER virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS auth_pass mypassword } virtual_ipaddress { 192.168.0.100/24 } } ``` 其中,interface指定Keepalived使用的网络接口,state指定当前服务器的状态(MASTER或BACKUP),priority指定服务器的优先级,advert_int指定VRRP协议的广告间隔时间,authentication指定认证方式,virtual_ipaddress指定虚拟IP地址。 2. 然后,需要将MySQL服务器配置为使用虚拟IP地址。可以在MySQL的配置文件中指定绑定的IP地址,如下所示: ``` bind-address=192.168.0.100 ``` 如果MySQL服务器使用了多个网络接口,还需要指定监听的网络接口,例如: ``` bind-address=192.168.0.100 bind-address=10.0.0.100 ``` 3. 最后,需要启动Keepalived服务,并确保所有MySQL服务器都正常运行。当主MySQL服务器宕机时,备用服务器会自动接管其IP地址,并继续提供MySQL服务。 需要注意的是,Keepalived只能实现对IP地址的故障转移,而无法实现对MySQL数据的自动切换。因此,在使用Keepalived实现MySQL高可用性时,还需要使用其他工具(如Pacemaker、Corosync等)来实现对MySQL数据的切换和同步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值