必须收藏!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工具 

  1. $ 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、主数据库全量备 

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

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

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

4、 主库授权同步帐号 

  1. mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave_passport';mysql> FLUSH PRIVILEGES; 

5、查看主库备份到位置,从库从备份位置开始同步 

  1. $ cat /data/backup/2020-03-28_19-13-07/xtrabackup_binlog_infomysql-bin.000001    1053 

从数据库操作

1、从数据全量恢复 

  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、修改数据文件权限 

  1. $ chown -R mysql:mysql /var/lib/mysql 

3、 启动从数据库 

  1. $ systemctl restart mysqld 

4、查看主数据库第五步主库备份的位置,开始同步 

  1. mysql> CHANGE MASTER TO MASTER_HOST='172.21.0.9', \  
  2. MASTER_USER='slave', \  
  3. MASTER_PASSWORD='slave_passport', \  
  4. MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000001', \  
  5. MASTER_LOG_POS=1053

5、开启主从同步 

  1. mysql> start slave;mysql> show slave status\G;  
  2. # 下面二个Yes代表已经正常同步了Slave_IO_Running=YesSlave_SQL_Running=Yes 

总结

Mysql主从同步,双机热备、数据备份技术已经成为运维工程师不可缺少的技术之一了,无论在哪个公司总有在用Mysql的。

马哥Linux运维课程里面系统的讲解了Mysql相关技术,从Mysql安装、各种Mysql架构到备份还原,而且还有各种实例案例讲解! 

 

责任编辑:庞桂玉 来源: 民工哥技术之路
相关推荐

2019-08-16 09:41:56

UDP协议TCP

2021-09-30 07:59:06

zookeeper一致性算法CAP

2023-11-22 07:54:33

Xargs命令Linux

2021-05-07 07:52:51

Java并发编程

2022-03-29 08:23:56

项目数据SIEM

2024-08-27 11:00:56

单例池缓存bean

2017-03-30 22:41:55

虚拟化操作系统软件

2023-09-25 08:32:03

Redis数据结构

2023-11-07 07:46:02

GatewayKubernetes

2021-09-10 13:06:45

HDFS底层Hadoop

2023-10-04 00:32:01

数据结构Redis

2021-07-28 13:29:57

大数据PandasCSV

2019-10-09 10:06:48

容器监控软件

2018-09-26 11:02:46

微服务架构组件

2023-12-07 09:07:58

2022-08-18 20:45:30

HTTP协议数据

2021-04-11 08:30:40

VRAR虚拟现实技术

2021-10-21 06:52:17

ZooKeeper分布式配置

2021-11-10 07:47:48

Traefik边缘网关

2021-06-26 08:09:21

MySQL不停机不锁表
点赞
收藏

51CTO技术栈公众号