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

文若2年前技术文章445


一、前言

当发生 DDL 误删数据时,只能通过 备份 + 增量日志 来恢复,备份恢复到新实例后,将增量日志备份进行应用,此时只能单线程效率不高,我们可以使用 MySQL 5.7 推出的 MTS 多线程复制机制,进行多线程日志回放。

二、操作案例

1. 全量备份恢复

使用备份恢复一个新的实例:

[root@db2 backup]# ls
backup_20211118  mysql-bin.000001  mysql-bin.000002  mysql-bin.index

-- xtrabackup --prepare --apply-log-only --target-dir=./
-- cp -r backup_20211118 /data/mysql_80/data

2. 将需要恢复的日志 COPY 到新目录

cp mysql-bin.* /data/mysql_80/log_relay/

修改文件名和 index 中的内容:

/data/mysql_80/log_relay/mysql-relay.000001
/data/mysql_80/log_relay/mysql-relay.000002

授权:

chown -R mysql:mysql /data/mysql_80/

3.  修改参数文件启动 MySQL

relay_log = /data/mysql_80/log_relay/mysql-relay
relay_log_index = /data/mysql_80/log_relay/mysql-relay.index
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=16
relay_log_recovery=off
skip_slave_start

修改 server_id 如果不修改 MySQL 回放会认为是自己生成的,会直接跳过。也可以使用 --replicate-same-server-id 启动数据库。

4. 创建复制通道

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

启动复制,如果想在某个事物上面停下,可以使用 slave until 语法。

start slave sql_thread;
start slave until SQL_BEFORE_GTIDS ='00024731-1111-1111-1111-111111111111:22';

5. 监控回放情况

show slave status\G

Retrieved_Gtid_Set: dcd7886c-4844-11ec-8c2f-faec3ea1f200:1-2900
Executed_Gtid_Set: dcd7886c-4844-11ec-8c2f-faec3ea1f200:1-201


相关文章

Doris 介绍及使用场景

Doris 介绍及使用场景

Doris 介绍                    Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据...

Hbase映射为Hive外表

Hbase映射为Hive外表

Hbase对应Hive外表(背景:在做数据ETL中,可能原始数据在列式存储Hbase中,这个时候,如果我们想清洗数据,可以考虑把Hbase表映射为Hive的外表,然后使用Hive的HQL来清除处理数据...

MongoDB的索引(一)

一、TTL索引1、语法db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )2、TTL索引...

大数据组件--Impala概述

Apache Impala是一个适用于实时交互的sql软件,是基于hive的大数据分析查询引擎,hive和impala有不同的侧重面,通常是两个互相配合工作,可以先用hive进行一个数据的预处理清洗转...

Redis Sentinel与Cluster安装部署(三)

4.3redis-cluster-resharding重新分配槽1、查看当前集群节点状态信息 # redis-cli --cluster check 172.32.1.59:7000 -a dt20...

Kubernetes源码解读(一)--WorkQueue源码分析

Kubernetes源码解读(一)--WorkQueue源码分析

 WorkQueue被称为工作队列,kubernets的WorkQueue队列与普通FIFO队列相比多了以下特性:有序:按照添加顺序处理元素(item)去重:相同元素在同一时间不会被重复处理,例如:一...

发表评论    

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