电子商务网站系统规划 案例分析,网站程序是什么?,北京注册公司地址有什么要求,大连seo排名文章目录 一、MySQL备份恢复流程二、并行恢复binlog原理三、操作步骤四、总结 一、MySQL备份恢复流程 MySQL数据恢复通常分为两个步骤#xff1a; 恢复全备数据#xff0c;MySQL有多种备份工具#xff0c;分为物理备份和逻辑备份#xff1b;具体可以参看下面这篇文章 MySQL… 文章目录 一、MySQL备份恢复流程二、并行恢复binlog原理三、操作步骤四、总结 一、MySQL备份恢复流程 MySQL数据恢复通常分为两个步骤 恢复全备数据MySQL有多种备份工具分为物理备份和逻辑备份具体可以参看下面这篇文章 MySQL备份—xtrabackupmysqldumpmydumper 恢复增量数据通过binlog将数据追到指定位点改操作利用的是MySQL自身binlog日志进行回溯指定区间的数据但是该方式有个缺点就是单线程导致对于大量增量数据需要恢复的场景会变的很慢。
二、并行恢复binlog原理 当我们正常主从复制的时候可以使用MTS复制具体可以参考这篇文章
MySQL从5.6到8.0复制的演进 因为relaylog和binlog本质实际上是一样的所以我们可以通过将binlog伪装成relaylog来让MySQL认为我们的binlog是主库传过来的那么就可以默认利用自身的MTS复制来实现并行恢复binlog的需求。
三、操作步骤
创建测试库
rootmysql 15:18: [(none)] create database sbtest;
Query OK, 1 row affected (0.00 sec)全备
innobackupex --defainnobackupex --defaults-file/etc/my.cnf --usersysbench --passwordsysbench --host127.0.0.1 --port3306 /data/innobackup --parallel2 /data/log制造测试数据删库
sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host10.0.4.13 --mysql-port3306 --mysql-usersysbench --mysql-passwordsysbench --mysql-dbsbtest --tables2 --table-size1000000 --auto_incoff --report-interval2 --threads2 prepare
Database changed
rootmysql 15:26: [sbtest] select count(*) from sbtest1;
----------
| count(*) |
----------
| 1000000 |
----------
1 row in set (0.16 sec)rootmysql 15:26: [sbtest] select count(*) from sbtest2;
----------
| count(*) |
----------
| 1000000 |
----------
1 row in set (0.16 sec)rootmysql 15:26: [sbtest] drop database sbtest;
Query OK, 2 rows affected (0.19 sec)恢复全备 innobackupex --defaults-file/etc/my.cnf --usersysbench --passwordsysbench --host127.0.0.1 --port3306 --apply-log /data/innobackup/2023-07-30_15-19-18/innobackupex --defaults-file/etc/my.cnf --usersysbench --passwordsysbench --host127.0.0.1 --port3306 --copy-back /data/innobackup/2023-07-30_15-19-18/chown -R mysql.mysql /data/mysql/传统方式binlog增量日志导入恢复
[rootVM-4-13-centos ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.42-log MySQL Community Server (GPL)Copyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type help; or \h for help. Type \c to clear the current input statement.rootmysql 18:47: [(none)] use sbtest;
Database changed
rootmysql 18:48: [sbtest] show tables;
Empty set (0.00 sec)cat xtrabackup_binlog_info
binlog.000001 319 6acb3106-2de5-11ee-8031-525400fd3257:1time mysqlbinlog --time mysqlbinlog --no-defaults binlog.000001 --start-position319 --stop-position381831946 | mysqlreal 0m47.843s
user 0m6.123s
sys 0m1.694sMTS并行恢复binlog以实现恢复测试数据且过滤删库操作
#将relay log info的repository改到file中并生成这个文件
SET GLOBAL relay_log_info_repositoryFILE;
CHANGE MASTER TO master_host1,master_password1,master_user1,master_log_file1,master_log_pos4;
#关闭实例将需要增量的binlog文件伪装成relaylog
rm -f /data/mysql/binlog/relaylog.000001
cp binlog.000001 /data/mysql/binlog/relaylog.000001
chown mysql:mysql -R /data/mysql/binlog
#修改relay.info文件和relay-log.index文件
将relay-log.info的第二三行改成需要执行的第一个binlog现在是relaylog的文件名和position
将需要执行的relaylog写入relaylog.index
#启动实例开启SQL_Thread
start slave sql_thread UNTIL RELAY_LOG_FILE relaylog.000001, RELAY_LOG_POS 381831946;#追binlog速度快数倍四、总结 通过SQL_Thread的方式可以使用主从本身并行复制的能力在binlog越多且并行度越好的场景上表现越好。 优点 可以断点恢复人为控制进度比如stop slave或者遇到错误时可以断点恢复可以利用多线程复制来加快增量速度时恢复更快 缺点 要关闭mysqld手动执行过程较mysqlbinlog方式更为复杂