MySQL的主从复制与半同步复制

一.mysql复制解决的问题

数据分布
负载平衡
备份
高可用性和容错行

二.复制是如何工作的

可以简化为三个步骤(如下图):
Master 将改变记录到二进制日志中。
Slave 将 Master 的二进制日志拷贝到它的中继日志( Relay_log )
Slave 重做中继日志中的事件,将改变反映它自己的数据

三.数据库主从复制的配置

1、基础环境配置
数据库版本: mysql 5.6.34
操作系统: CentOS 6.5 x86_64
IP地址:10.1.23.99 ( Master ) 10.1.23.98 ( Slave ) 10.1.23.97 ( Slave )

2、创建用于复制的账号
在 Master 的数据库中建立一个复制账户,每个 Slave 使用该账户连接 Master 进行复制,需要 replication slave 和 replication client 权限

mysql>grant replication slave,replication clinet on *.* to 'replication'@'192.168.124.10(slave IP)' identified by '123456';
mysql>grant replication slave,replication clinet on *.* to 'sc'@'%' identified by '123456';
mysql>flush privileges

说明,创建了一个sc的用户,用于所有网段同步master的数据
3、拷贝数据

如果是新安装的 MySQL 主从服务器,这一步不需要。如果 Master 之前有数据,需要把 Master 的数据导出并还原到 Slave 上,要保证 Master 和 Slave 服务器中的数据是一样的。建议导出 Master 库的时候进行锁表,导完后再解锁。

mysql>flush tables with read lock;
mysqldump -uroot -p1234 dy_qqopen > dy_qqopen.sql
mysql>unlock tables;

4、master服务器配置
开启二进制日志;默认修改/etc/my.cnf
log-bin=mysql-bin 改成log-bin=/var/log/mysql/master-bin
设置server-id的数值;(不能和slave数据库一样)
5、创建二进制日志目录并授权,重启MySQL
mkdir -p /var/log/mysql/
chown mysql.mysql -R /var/log/mysql
service mysqld restart

6、查看 Master数据库状态
show master status;
记录file值与Postition
+----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| localhost-bin.000002 | 120 | | | |
+----------------------+----------+--------------+------------------+-------------------+

7、在从库开启主从复制(两台从库均此操作)
change master to master_host='10.1.23.99',master_user='sc',master_password='123456',master_log_file='localhost-bin.000002',master_log_pos=120;

start slave;
开启复制
show slave status\G;
检查主从复制状态
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
则为成功
8、配置半同步复制(主库)

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; \\安装插件
SET GLOBAL rpl_semi_sync_master_enabled = 1; \\启动模块
SET GLOBAL rpl_semi_sync_master_timeout = 1000;
SHOW STATUS LIKE 'Rpl_semi_sync_master_yes_tx'; \\设置超时时间

9、配置半同步复制(从库)

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; \\安装插件
SET GLOBAL rpl_semi_sync_slave_enabled = 1; \\启动模块
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD; \\重启进程使其模块生效:
SHOW STATUS LIKE 'Rpl_semi_sync_slave_yes_tx'; \\查看开启状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值