Mysql主从构建---基于innobackupex备份
mysql构建主从往往基于mysqldump进行备份主库再Copy到从库进行备份恢复之后启动主从,但是对于数据量大的场景就完全不适用,因为基于逻辑sql,所以导入时间久,速度很慢。
因此针对比较大的数据库建议使用innobackupex进行主库的备份,然后复制到从库构建主从
以下为我实际生产使用为案例:
数据库版本:5.6
数据库架构:双主同步(问题处理期间其中一主处于只读状态,无实际数据的写入)仅同步qcdb库
数据量:其中一个主库粗略统计56GB
IP:已经存在的主库:10.1.6.118 ,以下称为主库A
需要数据导入的主库:10.2.22.72,以下称为主库B
一、数据库搭建步骤略
二、在主库A、B安装innobackupex备份的客户端
1.安装依赖包
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
2.安装
3.下载xbk源
wget /news/upload/ueditor/image/202209/5d4kpvps1uu 4.下载xbk软件
yum -y install percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
在步骤4可能遇到缺少libev依赖的报错:
解决:
安装:libev-4.15-1.el6.rf.x86_64.rpm
rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
三、主库A物理备份
innobackupex --defaults-file=/opt/mysql/my.cnf --user=root --password='xxx' --stream=tar --databases="qcdb" /data/backup_rf/|gzip|ssh root@10.2.22.72 \ "cat - > /data/backup_rf/mysql_backup_222_2021-10-05.tar.gz"
--defaults-file:指定配置文件
--user=root:指定用户
--password='xxx' 指定密码
--stream=tar 压缩方式
--databases="qcdb" 指定备份的数据库
ssh root@10.2.22.72 远程备份到其他数据
/data/backup_rf/mysql_backup_222_2021-10-05.tar.gz 备份包名字
/data/backup_rf该路径需要提前存在
四、主库B恢复
1.解压备份
tar -zxvf /data/backup_rf/mysql_backup_222_2021-10-05.tar.gz -C /data/qcdb
2.准备阶段 recover
innobackupex --apply-log /data/qcdb
3.关闭数据库
/etc/init.d/mysqld stop
4.删除指定的目录
rm -fr /data/mysql/qcdb
5.copy阶段,部分备份和恢复,不能直接用--copy-back ,只能用手工复制相应的数据库+ibdata数据字典
cp -r /data/qcdb/qcdb /data/mysql
6.删除原来的ibdata1文件,将备份的ibdata1文件复制过去,否则,无法查询恢复的表
\cp /data/qcdb/ibdata1 /data/mysql
7.改权限
chown -R mysql. /data/mysql
8.启动数据库
/etc/init.d/mysqld start
此时没有异常数据库应该已经启动,接下来就是构建主从
五、构建主主架构
主A和主B建立主主同步的用户:
grant replication slave on *.* to repl@'10.%.%.%' identified by '123456';
主A、B:
1.登录数据库
mysql -uroot -p
2.purged gtid
purge的信息来自于xtrabackup_binlog_info
set global gtid_purged='cd3d7096-f5fd-11eb-b00f-005056a6458a:1-297281287'
3.构建主从
restart slave;
resetart master;
CHANGE MASTER TO
MASTER_HOST='10.1.6.118',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000022',
MASTER_LOG_POS= 280161773,
MASTER_CONNECT_RETRY=10;
注意:
其中MASTER_LOG_FILE和MASTER_LOG_POS来源于innobackupex备份log,
xtrabackup_binlog_info,该log记录了备份开始时主库A的binlog起点
4.启动主从
start slaves;
5,查看主从状态
show slave status\G
6.主库B构建主从
change master to master_host='10.2.22.72',master_user='repl',master_password='123456' ,MASTER_AUTO_POSITION=1;
start slave;
以上为基于物理备份构建主从的全过程。
版权声明
本文仅代表作者观点,不代表博信信息网立场。