MySQL主从复制之异步复制


MySQL主从复制之异步复制

原文: https://www.cnblogs.com/hmwh/p/9198705.html


MYSQL主从复制方式有默认的复制方式异步复制,5.5版本之后半同步复制,5.6版本之后新增GTID复制,包括5.7版本的多源复制。

MYSQL版本:5.7.20

操作系统版本:linux 6.7 64bit

 

1、异步复制

 

MYSQL 默认的复制方式,就是主库写入binlog日志后即可成功返回客户端,无须等待binlog日志传递给从库的过程。但这样一旦主库发生宕机,就有可能出现数据丢失的情况。

 

1.1搭建异步主从

1、 server-id 不一样

2、 开启binlog,建议开启log_slave_updates,让从库也写binlog,方便后期扩展架构

3、 binlog格式为row。

 

主库操作:

创建主从复制账号

create user 'rep'@'192.16.20.%' identified by 'mysql';

 

grant replication slave on *.* to 'rep'@'192.16.20.%';

 

 

初始化:

mysqldump -S /tmp/mysql3307.sock --single-transaction -uroot -pmysql --master-data=2 -A > salve.sql (我全库导入的有问题,只用的test库)

 

注意:必须加参数 –master-data=2,让备份出来的文件中记录备份这一刻binlog文件与position号,为搭建主从环境做准备。查看备份文件中记录的当前binlog文件和position号。

 

scp salve.sql 172.16.20.21:/binlogbak

 

 

mysql -S /tmp/mysql3307.sock -uroot -pmysql < slave_test.sql

 

 

在数据库命令行执行配置主从命令。

 

change master to

    master_host='172.16.20.32',

    master_user='rep',

    master_password='mysql',

    master_port=3307,

    master_log_file='mysql-binlog.000010',

    MASTER_LOG_POS=797;

 

start slave;

stop slave;

reset slave all; 清空从库的所有配置信息。

 

start slave;

 

当前从库I/O和SQL thread都是呈现Yes状态,代表从库上面操作已经完成了。

 

 

Master_Log_File= Relay_Master_Log_File;

Read_Master_Log_Pos= Exec_Master_Log_Pos

证明目前没有主从延迟状态。

 

Slave_IO_Running:从库上I/O thread 负责请求和接收主库传递来的binlog信息。

Slave_SQL_Running:从库上SQL thread负责应用relay中的binlog的信息。

 

1.2主从复制故障处理

1 、主从故障之主键冲突,错误代码为1062

 

原因:由于误操作,从从库上执行写操作,导致再在主库上执行相同的操作,由于主键冲突,主从复制状态会报错。所以生产环境建议在从库上开启read only,避免在从库执行写操作。

 

在主库上建表t1;

现在从库插入数据,后面再在主库上插入相同的语句。

主库:

 

 

从库:

 

 

主库执行相同语句:

 

 

从库报错如下:

 

 

报错代码:

Last_Errno: 1062

处理办法:

 

利用percona-toolkit 工具:

mount /dev/sr0 /mnt

yum -y install perl-DBD-MySQL

./pt-slave-restart -S /tmp/mysql3307.sock -uroot -pmysql

 

 

在查看主从状态,已经恢复正常:

 

 

2 、主从故障之主库更新数据,从库找不到而报错,错误代码为10032

上一个错误是主从都有相同的数据,我们可以直接通过percona-toolkit工具跳过错误。但如果从库上少数据,就不能跳过错误了,需要找到缺少的数据,在从库上从新执行一遍。

故障原因:由于误操作,在从库上执行delete 删除操作,导致主从数据不一致。这时再在主库执行同条数据的更新操作,由于从库没有该数据,SQL无法再从库上实现。

 

模拟故障:

先在从库服务器的test库下的t表中,执行delete删除语句操作。

 

再在主库上执行:相同数据的update更新操作。

 

 

从库报错如下:

 

 

报错代码1032。

解决办法:

 

根据报错信息所知道Binlog文件和position(7153)号,在主库上,通过mysqlbinlog 命令,找到在主库上执行的那条SQL语句导致的主从报错。

 

/usr/local/mysql5.7/bin/mysqlbinlog --no-defaults -v -v --base64-output=decode-rows /mydata/mysql/mysql3307/logs/mysql-binlog.000010 |grep -A 10 7153

 

 

 

insert into t2 values(1,'bbb');

生产上如果丢失数以万计条的数据,建议重新搭建主从确保数据一致性。

 

 

从库跳过错误:

./pt-slave-restart -S /tmp/mysql3307.sock -uroot -pmysql

 

 

重新同步成功:

show slave status\G;

 

 

1.3主从故障之主从server-id一致

由于粗心,安装的时候用模板并没有修改servier-id。(修改从库server-id成不同的值)

 

1.4主从故障之跨库操作,丢失数据

原因:在主库中设置binlog-do-db参数,使用的binlog记录格式为statement模式,导致在主库上执行跨库操作时,从库没有复制成功,丢失数据。

 

故障操作描述:

在主库的参数文件中添加binlog-do-db=test,代表只复制zs这个库,并且主库binlog_format 设置为statement。




About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub、博客园、优快云和个人微 信公众号( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文优快云地址: https://blog.youkuaiyun.com/lihuarongaini

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 (满) 、618766405

● 微 信群:可加我微 信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友 646634621 ,注明添加缘由

● 于 2019-07-01 06:00 ~ 2019-07-31 24:00 在西安完成

● 最新修改时间:2019-07-01 06:00 ~ 2019-07-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店 https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书 http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班 http://blog.itpub.net/26736162/viewspace-2148098/

小麦苗腾讯课堂主页 https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客户端 扫描下面的二维码来关注小麦苗的微 信公众号( xiaomaimiaolhr )及QQ群(DBA宝典)、添加小麦苗微 信, 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

 

 



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2651414/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26736162/viewspace-2651414/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值