MySQL 8.0 Clone 备份恢复演练

文若2年前技术文章1021

前言

上一篇文章中,我们介绍了使用 Clone 插件进行备份,相关的恢复流程将在本篇文章介绍。

MySQL 8.0 Clone Plugin 详解

恢复增量数据的方法,使用的是伪装为 relay log 通过多线程复制加速恢复的方式,之前有写过一个案例。

MySQL 通过 MTS 多线程恢复增量日志备份

1. 恢复目标

从 OSS 中下载全量备份及 Binlog 备份,测试 Clone 备份的全量备份恢复与增量恢复,将数据恢复到一个新实例。

2. 环境说明

主机MySQL 版本用途
172.16.104.568.0.32Clone 源库
172.16.104.578.0.32Clone 恢复的目标库

3. 克隆数据

在 Clone 之前我们先查看一下演示表中有多少行数据:

root@mysql 17:08:  [op_service_db]>select count(*) from task_queue;
+----------+
| count(*) |
+----------+
|    36280 |
+----------+

执行 Clone 操作:

CLONE LOCAL DATA DIRECTORY = '/data/clone_bak/20231106';

结束后,向测试表中写入 10w 行数据:

mysql_random_data_load -h172.16.104.56 -u'my' -p'112233' --max-threads=10 op_service_db task_queue 100000

将 Clone 文件 scp 到 57 的目标实例:

scp -r ./20231106/ root@172.16.104.57:/data

还有期间的 Binlog 文件也 scp 到目标实例:

scp /data/mysql_80/logs/mysql-bin.000001 root@172.16.104.57:/data

演示只有一个 Binlog 如果有多个 Binlog 操作也比较简单,注册步骤添加多个文件即可。

4. 恢复全量数据

使用 clone 出来的数据替换 57 节点的数据目录,操作前需要停掉 MySQL。

# 删除源目录
rm -rf /data/mysql_80/data
# 替换
mv ./20231106 /data/mysql_80/data
# 修改属组
chown -R mysql:mysql /data/mysql_80/

然后启动 MySQL 数据库。

5. 注册增量日志

这块主要是把需要跑的增量 Binlog 文件名,修改为 relay log 的格式。

# 将 binlog 文件,按照 relay log 格式写入到 index 文件中
cat mysql-relay.index

/data/mysql_80/logs/mysql-relay.000001

6. 应用增量日志

创建复制通道:

change master to 
   master_host='localhost',
   master_port=3306,
   MASTER_AUTO_POSITION=0,
   RELAY_LOG_FILE='mysql-relay.000001',
   RELAY_LOG_POS=4;

查看 GTID 点位信息:

root@mysql 17:39:  [(none)]>show master status\G
*************************** 1. row ***************************
            File: mysql-bin.000001
        Position: 14808235
    Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: eccc6b43-b0fc-11ed-8e74-fa0e3cc40b00:1-38
eccc6b43-b0fc-11ed-8e74-fa0e3cc40b00:38

设置 SQL 线程,应用 eccc6b43-b0fc-11ed-8e74-fa0e3cc40b00:38 之后的 Event 操作。

start slave until SQL_AFTER_GTIDS ='eccc6b43-b0fc-11ed-8e74-fa0e3cc40b00:38';

启动 SQL 线程:

start slave sql_thread;

可以通过 show slave status\G 查看进度:

Executed_Gtid_Set: 1b03028c-76f7-11ee-ac46-faa7cd9c6a00:1-4,
eccc6b43-b0fc-11ed-8e74-fa0e3cc40b00:1-138

至此,Clone 结束后写入的增量数据已经通过 Binlog 恢复到新实例:

root@mysql 17:43:  [op_service_db]>select count(*) from task_queue;
+----------+
| count(*) |
+----------+
|   136280 |
+----------+



相关文章

MySQL 创建索引报错

创建索引报错添加索引发现报错,具体报错如下:create unique index sm_sample_clothing_skc_SkcUniqueKey_uindex on sm_sample_cl...

hive元数据迁移

hive元数据迁移

一、在新集群中创建hive数据库,作为新集群中的元数据库。注意点:创建hive数据库时注意用户和用户的权限及使用的编码格式一致。查看旧集群中角色权限和编码格式,在新的hive元数据库中设置相同的角色权...

MySQL性能优化(四)隐式类型转换

我们知道, where条件中,对一个索引字段进行运算会导致无法使用该字段的索引。有些情况下,即使没有显式地对索引字段进行运算,但是数据库会进行隐式类型转换,这也会导致无法使用索引。会发生隐式类型转换的...

 MySQL优化器特性(九)行数评估

MySQL优化器特性(九)行数评估

查询的行数在成本计算中起了很重要的作用:1、row_evaluate_cost和行数直接相关2、需要访问多少索引页面,和行数直接相关。根据页面大小和平均索引条目长度计算每个索引页面的记录数,根据记录数...

oracle安装gi执行root.sh报错:PRCR-1079 : Failed to start resource ora.cvu

1、具体报错如下:安装gi执行root.sh报错:PRCC-1014 : LISTENER_SCAN1 was already runningPRCR-1004 : Resource ora.LIST...

pg_probackup

一、pg_probackup概述pg_probackup 是一款免费的postgres数据库集群备份工具,与其他备份工具相比,它主要有如下一些优势:提供增量备份,增量备份一定程度上可以节省磁盘空间的使...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。