必须收藏!MySQL如何不停机维护主从同步?看这篇就够了
前言
随着2013年5月17日,阿里集团最后一台IBM小机在支付宝下线后,毫无疑问,MySQL 已经是当今互联网公司使用最多的数据库了,Mysql开源免费,而且可以很方便的横向扩展来支撑高并发的流量,中小企业使用Mysql一主多从,也可以很方便的实现程序的读写分离。
那么在企业里主数据库不停机的情况,如何做到不停机维护主从同步呢?今天我们就跟大家分享一下企业实际案例。
实战环境
-
Mysql-5.7 -
Xtrabackup-2.4
Xtrabackup 介绍
它可以备份来自MySQL5.1,5.5,5.6和5.7服务器上的InnoDB,XtraDB和MyISAM表的数据,以及带有XtraDB的Percona服务器。
XtraBack XtraBackup 工具 up 工具
Xtrabackup特点
Xtrabackup备份实现原理
innobackupex开启xtrabackup_log监控线程,实时监测redolog文件的变化,将新备份过程中新写入到事务日志中的日志拷贝至innobackup_log中;
同时开启xtrabackup拷贝线程,开始拷贝innodb文件,拷贝数据数据结构,记录当前binlog及position完成备份。
全备恢复原理
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;
$ cat /data/backup/2020-03-28_19-13-07/xtrabackup_binlog_infomysql-bin.000001 1053
$ 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
$ systemctl restart mysqld
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;
mysql> start slave;mysql> show slave status\G;
# 下面二个Yes代表已经正常同步了Slave_IO_Running=YesSlave_SQL_Running=Yes
总结
划重点,不能错过
01
02
2020马哥Linux云计算架构线上直播班,腾讯课堂直播授课模式,线上直播系统学习,在线享受一线互联网先进技术辅导,内容涵盖linux基础入门、系统进阶、企业实战、项目管理、就业培训。
点击阅读原文,获取Linux经典资料包