MySQL实现双主多从架构lunique.docx

上传人:b****2 文档编号:2435075 上传时间:2022-10-29 格式:DOCX 页数:14 大小:142.11KB
下载 相关 举报
MySQL实现双主多从架构lunique.docx_第1页
第1页 / 共14页
MySQL实现双主多从架构lunique.docx_第2页
第2页 / 共14页
MySQL实现双主多从架构lunique.docx_第3页
第3页 / 共14页
MySQL实现双主多从架构lunique.docx_第4页
第4页 / 共14页
MySQL实现双主多从架构lunique.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

MySQL实现双主多从架构lunique.docx

《MySQL实现双主多从架构lunique.docx》由会员分享,可在线阅读,更多相关《MySQL实现双主多从架构lunique.docx(14页珍藏版)》请在冰豆网上搜索。

MySQL实现双主多从架构lunique.docx

MySQL实现双主多从架构lunique

MySQL实现双主多从架构

1.实现目标

目标清单:

1)Master(192.168.31.230)为正常运行环境下的主库,为两个Slave(192.168.31.231和192.168.31.232)提供“主-从”复制功能;

2) Master_Backup(192.168.31.233)是Master的备份库,只要Master是正常的,它不对外提供服务。

它与Master之间属于"主-主"复制关系,即自己既是主机,又是对方的从机;

3)同理,192.168.31.234和192.168.31.235为Slave_Backup,分别为192.168.31.231和192.168.31.232的备份库,只要Slave是正常的,对应的备份机不对外提供服务;

4)Slave在此架构中的目的是为了实现读写分离,对应用程序来说,Master只负责写,两个Slave只负责读。

Slave的数据来源于Master的复制操作;

5)如果Master由于某种原因(例如:

宕机和断电等)导致不能正常运行,则此时需要让Master_Backup自动切换为新主机,而Slave和Slave_Backup也能自动切换数据源到Master_Backup;

6)同理,如果Slave由于某种原因(例如:

宕机和断电等)导致不能正常运行,则此时需要让对应的Slave_Backup自动切换为新从机;

7)无论是Master还是切换后的Master_Backup,它们向客户端提供的连接地址应保持一致,如上图提供的VIP+Port,即192.168.31.201:

3306,Slave和Slave_Backup也应如此,对外提供的连接地址始终是192.168.31.202:

3306和192.168.31.203:

3306。

2.实现过程

  MySQL安装步骤不在此讲述。

1.

2.

2.1.实现Master-Master结构

2.1.1.修改Master和Master_Backup配置文件,vi/etc/f

主要在[mysqld]内添加如下配置项:

Sql配置代码:

# log文件名,必填  

log-bin = mysql-bin  

# 服务器Id,必须唯一  

server-id = 230  

# 不参与同步的数据库名,有多个则添加多个配置项  

binlog-ignore-db = mysql  

# Master-Master结构必须的  

log-slave-updates  

slave-skip-errors = all  

sync_binlog = 1  

read_only = 0  

2.1.2.为复制请求方提供链接账号和密码

由于是Master-Master结构,因此需在双方终端中执行如下SQL命令:

Sql代码:

GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by 'slave123';  

可在mysql实例的user表中查询到记录,重点关注Repl_slave_priv字段的值是否为Y,此账号(用户名:

slave,密码:

slave123)主要用于定位复制点

2.1.3.在从机上指定Master数据源

  1)在Master上执行

Sql代码:

SHOW MASTER STATUS;   

得到的结果如下:

   重点关注File和Position两个字段值

   2)在Master_Backup也执行上述步骤,由于是初始状态,得到的结果和上图一样;

   3)在Master上执行如下SQL命令,填入Master_Backup的host、链接账号和密码、File和Position值

Sql代码:

mysql>STOPSLAVE;  

mysql>CHANGE MASTER TO MASTER_HOST='192.168.31.233',MASTER_USER='slave',MASTER_PASSWORD='slave123',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107;  

mysql>STARTSLAVE;  

   4)在Master_Backup上执行如下SQL命令,填入Master的host、链接账号和密码、File和Position值

Sql代码:

mysql>STOPSLAVE;  

mysql>CHANGE MASTER TO MASTER_HOST='192.168.31.230',MASTER_USER='slave',MASTER_PASSWORD='slave123',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107;  

mysql>STARTSLAVE;  

  5)重启Master和Master_Backup

2.1.4.测试

   1)当Master和Master_Backup都正常运行时,在任意一端更新数据后都会同步到另一段;

   2)当Master处于不可运行时,在Master_Backup更新数据后重启Master,这时在Master上可得到最新的数据;

   3)当Master_Backup处于不可运行时,在Maste更新数据后重启Master_Backup,这时在Master_Backup上可得到最新的数据。

2.2.实现Master-Slave结构

2.2.1.实施过程

将2.1.1和2.1.3的过程在所有Slave上操作一遍即可,需要注意配置文件中server-id一定要唯一,还有在执行CHANGEMASTERTO命令时,MASTER_HOST为192.168.31.230

Sql代码:

mysql>STOPSLAVE;  

mysql>CHANGE MASTER TO MASTER_HOST='192.168.31.230',MASTER_USER='slave',MASTER_PASSWORD='slave123',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107;  

mysql>STARTSLAVE;  

2.2.2. 测试

1)当Master和Master_Backup都正常运行时,在任意一端更新数据后都会同步到两个Slave上;

2)当Master处于正常运行时,在此端更新数据后都会同步到两个Slave上,而无论Master_Backup是否正常;

3)当Master处于不可运行时,Master_Backup通过Monitor(Keepalived)成为接管者,在Master_Backup更新数据后都会同步到所有Slave上,并且重启Master后,最新数据也会同步到此端。

   可事与愿违,在第3)种场景下,Master_Backup不会将数据同步给Slave,即使后来在Slave上将MASTER_HOST指定为Keepalived提供的VIP(192.168.31.201)也无济于事:

Sql代码:

mysql>STOPSLAVE;  

mysql>CHANGE MASTER TO MASTER_HOST='192.168.31.201',MASTER_USER='slave',MASTER_PASSWORD='slave123',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107;  

mysql>STARTSLAVE;  

在Slave上执行SHOWSLAVESTATUS;

得出如下结果:

究其原因,如上图所示,Master_Server_Id为230,仍然指向的是已经处于不可运行的Master,而预期结果是希望它能自动的更新定位到Master_Backup(233)上,达到自动切换的目的。

    没办法,只有自己执行CHANGEMASTERTO...手动定位了。

我草...,一不注意就会定位错误,造成数据丢失的问题,而且也不满足快速响应容灾切换的目的。

3.最终方案

最终方案将选择mysql-mmm结合半同步机制来实现容灾自动切换。

3.

3.1.在master(230和233)上安装semisyncmaster并设置

Sql代码:

mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';  

mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';  

mysql>SET GLOBAL rpl_semi_sync_master_enabled = 1;  

mysql>SET GLOBAL rpl_semi_sync_slave_enabled = 1;  

 vi/ect/f后加入如下配置:

配置代码:

rpl_semi_sync_master_enabled = 1  

rpl_semi_sync_slave_enabled = 1  

3.2.在slave(231、232、234和235)上安装slave插件并设置

Sql代码:

mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';  

mysql>SET GLOBAL rpl_semi_sync_slave_enabled = 1;  

 vi/ect/f后加入如下配置:

配置代码:

rpl_semi_sync_slave_enabled = 1  

3.3.所有mysql实例停止slave并开启slave,使半同步机制生效

Sql代码:

mysql>stop slave;  

mysql>start slave;  

3.4.查看semisync状态

Sql代码:

mysql>show status like '%emi%';  

重点关注:

1)Rpl_semi_sync_master_clients:

与当前master建立半同步连接的客户端数;

2)Rpl_semi_sync_master_status:

作为半同步master端的就绪状态(ON:

就绪,OFF:

未就绪)

3)Rpl_semi_sync_slave_status:

作为半同步slave端的就绪状态(ON:

就绪,OFF:

未就绪)

3.5.安装mysql-mmm

1.

2.

3.

3.1.

3.2.

3.3.

3.4.

3.5.

3.5.1.新增一台专门用于监控mysql的服务器(mysql_monitor),IP为192.168.31.250

3.5.2.在mysql_monitor、master、master_backup、slave和slave_backup上安装epel网络源

Linux命令行代码:

yum install   

3.5.3.在mysql_monitor上安装mysql-mmm-monitor

Linux命令行代码:

yum -y install mysql-mmm-monitor  

3.5.4.在master、master_backup、sl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1