vlambda博客
学习文章列表

必须收藏!MySQL如何不停机维护主从同步?看这篇就够了


前言


随着2013年5月17日,阿里集团最后一台IBM小机在支付宝下线后,毫无疑问,MySQL 已经是当今互联网公司使用最多的数据库了,Mysql开源免费,而且可以很方便的横向扩展来支撑高并发的流量,中小企业使用Mysql一主多从,也可以很方便的实现程序的读写分离。


那么在企业里主数据库不停机的情况,如何做到不停机维护主从同步呢?今天我们就跟大家分享一下企业实际案例。


实战环境



  • Mysql-5.7
  • Xtrabackup-2.4

Xtrabackup 介绍



Percona XtraBackup是一款基于MySQL的服务器的开源热备份实用程序,在备份过程中不会锁定数据库。

它可以备份来自MySQL5.1,5.5,5.6和5.7服务器上的InnoDB,XtraDB和MyISAM表的数据,以及带有XtraDB的Percona服务器。


XtraBack XtraBackup 工具 up 工具

Xtrabackup 本身只能备份InnoDB和XtraDB,不能备份MyISAM。
innobackupex 封装了xtrabackup的perl脚本,覆盖了Xtrabackup的功能。它不但可以备份nnodb和xtradb两种引擎的表,还可以备份myisam引擎的表 (在备份myisam表时需要加一个读锁)


Xtrabackup特点

备份过程快速、可靠;
备份 过程不会打断正在执行的事务;
能够基于压缩等功能节约磁盘空间和流量;
自动实现备份检验;
还原速度快;

Xtrabackup备份实现原理


innobackupex开启xtrabackup_log监控线程,实时监测redolog文件的变化,将新备份过程中新写入到事务日志中的日志拷贝至innobackup_log中;

同时开启xtrabackup拷贝线程,开始拷贝innodb文件,拷贝数据数据结构,记录当前binlog及position完成备份。


全备恢复原理


将全备文件进行xtrabackup_log日志回放,并对提交的事务进行重做,同时rollback未提交的事务。并将全备文件复制到mysql 下的data目录下。

主数据库


1、安装xtrabackup工具

$ yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm$ yum update percona-release$ yum install percona-xtrabackup-24 -y

2、主数据库全量备

# 全量备份$ innobackupex --defaults-file=/etc/my.cnf --user=root --password=magedu /data/backup
# 保持事务一致性 apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件处于一致性状态,把已提交的事务合并到ibdata文件$ innobackupex --apply-log /data/backup/2020-03-28_19-13-07

3、 将主数据库备份文件压缩并拷贝到从数据库

$ tar czf backup.tar.gz 2020-03-28_19-13-07
$ scp -r /data/backup/backup.tar.gz 172.21.0.8:/data/backup/

4、 主库授权同步帐号

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave_passport';mysql> FLUSH PRIVILEGES;
5、查看主库备份到位置,从库从备份位置开始同步
$ cat /data/backup/2020-03-28_19-13-07/xtrabackup_binlog_infomysql-bin.000001    1053


从数据库操作
1、从数据全量恢复
$ cd /data/backup/ && tar xf backup.tar.gz$ innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /data/backup/2020-03-28_19-13-07

2、修改数据文件权限

$ chown -R mysql:mysql /var/lib/mysql
3、 启动从数据库
$ systemctl restart mysqld
4、查看主数据库第五步主库备份的位置,开始同步
mysql> CHANGE MASTER TO MASTER_HOST='172.21.0.9', \
MASTER_USER='slave', \
MASTER_PASSWORD='slave_passport', \
MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001', \
MASTER_LOG_POS=1053;
5、开启主从同步
mysql> start slave;mysql> show slave status\G;
# 下面二个Yes代表已经正常同步了Slave_IO_Running=YesSlave_SQL_Running=Yes


总结



Mysql主从同步,双机热备、数据备份技术已经成为运维工程师不可缺少的技术之一了,无论在哪个公司总有在用Mysql的。
马哥Linux运维课程里面系统的讲解了Mysql相关技术,从Mysql安装、各种Mysql架构到备份还原,而且还有各种实例案例讲解!
扫描二维码免费领取 资料

必须收藏!MySQL如何不停机维护主从同步?看这篇就够了


划重点,不能错过



为了帮你更好进入工作状态,也为了帮你跑赢同届竞争者,获得「大厂必备技能」和「真实项目经验」,马哥教育为你准备了一份开工大礼包:
「千人高薪培养计划」,寻找并帮助1000位IT技术爱好者,顺利去找10000+高薪工作!

目的是为了让真正的人才依然有被培养和锻炼的机会,不被特殊时期耽误,顺利打开求职发展之路。

必须收藏!MySQL如何不停机维护主从同步?看这篇就够了

必须收藏!MySQL如何不停机维护主从同步?看这篇就够了

01


怎样参与「线上直播班」?

01. 大专以上学历,面临就业、转行、升职加薪还有创业的IT技术爱好者
02. 有强烈意愿在毕业后拿到年薪12W+,并有志于Linux工程师
03. 承诺报名后坚持学习,能经得起企业师父的鞭策、承受得了真正企业开发环境中的工作压力
04. 认真填写报名信息,预约职业规划师进行测试并且通过。

只要满足以上4个条件,即可参与「千人高薪培养计划」。

「培养计划」现为马哥教育粉丝推出100个 免费试学名额 。你可以长按识别下方二维码填写信息完成资格审核,即可免费试学。

扫码填写信息
立即抢占试学名额
必须收藏!MySQL如何不停机维护主从同步?看这篇就够了

必须收藏!MySQL如何不停机维护主从同步?看这篇就够了

02


新模式「linux线上直播班」

2020马哥Linux云计算架构线上直播班,腾讯课堂直播授课模式,线上直播系统学习,在线享受一线互联网先进技术辅导,内容涵盖linux基础入门、系统进阶、企业实战、项目管理、就业培训。


线上直播班服务亮点:

1、职业规划师、企业教练、资深讲师,实战讲师,多对一
2、每日学习规划,重点跟进,全方位监督学习
3、阶段测试,评估学习成果
4、老学员定期经验分享
5、职业素养课程,提升综合素质,助你全面提升
6、就业服务:内推+合作企业+猎头对接
7、奖学金模式
8、模拟面试,综合训练评估,还原真实面试场景


1.即刻起至 2020 年 4 月 30 日 23:59 前,报名linux直播班可以获取3000元优惠券!
2.优惠码数量有限,仅限前 100名 报名学员。

必须收藏!MySQL如何不停机维护主从同步?看这篇就够了

3.关于本次活动的问题,可以扫码咨询豆豆小姐姐,她会及时给到回复哦~
           

虽然 2020 的发生了很多意料之外的事情,但只要我们足够强大,就能够抵抗外力的影响,在不确定的世界里,找到自己的安全感。
 
而在这个变强大的过程中,马哥教育将一直与大家同行!

希望这份开工礼包,能让你储备足够的技能,在疫情结束之后逆风翻盘!


 

点击阅读原文,获取Linux经典资料包