MySQL 8.0.35 mydumper/myloader 备份恢复工具使用

基于 MySQL 8.0.35 GTID 主从环境,逐一验证 mydumper/myloader 各参数和常用模板

  • 主库:192.168.195.141(server-id=1)
  • 从库:192.168.195.142(server-id=2)
  • mydumper版本:v1.1.0-1(从gitee镜像源码编译安装)

1. 环境信息

项目 主库 (Master) 从库 (Slave)
IP 192.168.195.141 192.168.195.142
MySQL版本 8.0.35(二进制包,glibc2.17) 8.0.35(二进制包,glibc2.17)
server-id 1 2
gtid_mode ON ON

配置文件

主库 /etc/my.cnf(141)

ini 复制代码
[client]
socket = /data/mysql/3306/data/mysql.sock
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql/3306/data
user    = mysql
port    = 3306
socket  = /data/mysql/3306/data/mysql.sock
log_error = /data/mysql/3306/data/mysqld.err
log_timestamps = system
log-bin = mysql-bin
server-id = 1
gtid_mode = ON
enforce_gtid_consistency = ON

从库 /etc/my.cnf(142)

ini 复制代码
[client]
socket = /data/mysql/3306/data/mysql.sock
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql/3306/data
user    = mysql
port    = 3306
socket  = /data/mysql/3306/data/mysql.sock
log_error = /data/mysql/3306/data/mysqld.err
log_timestamps = system
server-id = 2
gtid_mode = ON
enforce_gtid_consistency = ON

2. mydumper 安装

2.1 安装依赖

bash 复制代码
yum install -y glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel cmake gcc-c++

2.2 源码编译安装

bash 复制代码
cd /tmp
git clone https://gitee.com/mirrors/mydumper.git
cd mydumper
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j4
make install

2.3 配置动态库

bash 复制代码
echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
ln -s /usr/local/mysql/lib/private/libcrypto.so.3 /usr/lib64/libcrypto.so.3
ln -s /usr/local/mysql/lib/private/libssl.so.3 /usr/lib64/libssl.so.3
ldconfig

2.4 验证安装

bash 复制代码
# mydumper --version
mydumper v1.1.0-1, built against MySQL 8.0.35 with SSL support

# myloader --version
myloader v1.1.0-1, built against MySQL 8.0.35 with SSL support

3. mydumper 备份原理

mydumper 是一款社区开源的逻辑备份工具,由 C 语言编写。备份过程主要步骤:

  1. 主线程 FLUSH TABLES WITH READ LOCK,施加全局只读锁,保证数据一致性
  2. 读取 当前时间点的二进制日志文件名和日志写入的位置,记录在 metadata 文件中
  3. N 个 dump 线程 START TRANSACTION WITH CONSISTENT SNAPSHOT,开启读一致性事务
  4. dump non-InnoDB tables,首先导出非事务引擎的表
  5. 主线程 UNLOCK TABLES,非事务引擎备份完后释放全局只读锁
  6. dump InnoDB tables,基于事务导出 InnoDB 表
  7. 事务结束

4. 模拟数据创建

在主库(141)创建测试数据:

sql 复制代码
-- 业务数据库
CREATE DATABASE bizdb;
USE bizdb;

-- 员工表(8条数据)
CREATE TABLE employees (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  dept VARCHAR(30),
  salary DECIMAL(10,2),
  hire_date DATE,
  INDEX idx_dept (dept),
  INDEX idx_hire (hire_date)
) ENGINE=InnoDB;

INSERT INTO employees (name, dept, salary, hire_date) VALUES
('zhangsan', 'tech', 15000.00, '2020-01-15'),
('lisi', 'market', 12000.00, '2020-03-20'),
('wangwu', 'tech', 18000.00, '2019-06-10'),
('zhaoliu', 'finance', 13000.00, '2021-02-28'),
('qianqi', 'tech', 20000.00, '2018-11-05'),
('sunba', 'market', 11000.00, '2022-01-10'),
('zhoujiu', 'finance', 14000.00, '2020-07-15'),
('wushi', 'tech', 16000.00, '2021-05-20');

-- 订单表(6条数据)
CREATE TABLE orders (
  order_id INT PRIMARY KEY AUTO_INCREMENT,
  customer_name VARCHAR(50),
  amount DECIMAL(10,2),
  order_date DATETIME,
  status VARCHAR(20),
  INDEX idx_status (status),
  INDEX idx_date (order_date)
) ENGINE=InnoDB;

INSERT INTO orders (customer_name, amount, order_date, status) VALUES
('custA', 500.00, '2024-01-01 10:00:00', 'completed'),
('custB', 1200.00, '2024-01-02 11:30:00', 'pending'),
('custC', 800.00, '2024-01-03 14:20:00', 'completed'),
('custD', 2000.00, '2024-01-04 09:15:00', 'cancelled'),
('custE', 350.00, '2024-01-05 16:45:00', 'completed'),
('custF', 900.00, '2024-01-06 08:00:00', 'pending');

-- 日志表(10条数据)
CREATE TABLE access_log (
  id INT PRIMARY KEY AUTO_INCREMENT,
  ip VARCHAR(20),
  url VARCHAR(100),
  access_time DATETIME,
  status_code INT
) ENGINE=InnoDB;

INSERT INTO access_log (ip, url, access_time, status_code) VALUES
('192.168.1.1', '/index.html', '2024-01-01 08:00:00', 200),
('192.168.1.2', '/login', '2024-01-01 08:05:00', 200),
('192.168.1.1', '/dashboard', '2024-01-01 08:10:00', 403),
('192.168.1.3', '/api/data', '2024-01-01 08:15:00', 200),
('192.168.1.2', '/logout', '2024-01-01 08:20:00', 200),
('192.168.1.4', '/admin', '2024-01-01 08:25:00', 404),
('192.168.1.1', '/settings', '2024-01-01 08:30:00', 200),
('192.168.1.5', '/api/upload', '2024-01-01 08:35:00', 500),
('192.168.1.3', '/report', '2024-01-01 08:40:00', 200),
('192.168.1.6', '/index.html', '2024-01-01 08:45:00', 200);

-- 测试数据库(含存储过程、函数、触发器、事件、空表、MyISAM表)
CREATE DATABASE testdb;
USE testdb;

CREATE TABLE t1 (id INT PRIMARY KEY, val VARCHAR(50));
INSERT INTO t1 VALUES (1,'aaa'),(2,'bbb'),(3,'ccc');

CREATE TABLE t2 (id INT PRIMARY KEY, info TEXT);
INSERT INTO t2 VALUES (10,'text10'),(20,'text20'),(30,'text30');

DELIMITER //
CREATE PROCEDURE testdb.get_count()
BEGIN
  SELECT COUNT(*) AS total FROM t1;
END //
DELIMITER ;

DELIMITER //
CREATE FUNCTION testdb.add_num(a INT, b INT) RETURNS INT
DETERMINISTIC
BEGIN
  RETURN a + b;
END //
DELIMITER ;

DELIMITER //
CREATE TRIGGER testdb.trg_t1_insert
AFTER INSERT ON t1 FOR EACH ROW
BEGIN
  INSERT INTO t2 VALUES (NEW.id + 100, CONCAT('trigger_', NEW.val));
END //
DELIMITER ;

CREATE EVENT testdb.ev_daily
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP
DO DELETE FROM t1 WHERE id < 0;

-- 空表(用于测试 -e 参数)
CREATE TABLE empty_table (id INT PRIMARY KEY, name VARCHAR(50)) ENGINE=InnoDB;

-- MyISAM表(用于测试 -i 参数)
CREATE TABLE myisam_log (id INT PRIMARY KEY, msg VARCHAR(100)) ENGINE=MyISAM;
INSERT INTO myisam_log VALUES (1,'myisam_msg1'),(2,'myisam_msg2');

5. mydumper 参数逐一验证

5.1 -B / --database:备份单个库

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -o /tmp/mydumper_test/bizdb_bak

验证结果:

复制代码
输出文件:
bizdb.access_log.00000.sql       # 数据文件
bizdb.access_log-schema.sql      # 表结构文件
bizdb.employees.00000.sql
bizdb.employees-schema.sql
bizdb.orders.00000.sql
bizdb.orders-schema.sql
bizdb-schema-create.sql          # 建库语句
metadata                         # 元数据文件(GTID、binlog位置等)

metadata文件内容:

复制代码
[source]
executed_gtid_set = "b983d25b-...:1-22"
SOURCE_LOG_FILE = "mysql-bin.000002"
SOURCE_LOG_POS = 7395

[`bizdb`.`access_log`]
rows = 10

[`bizdb`.`employees`]
rows = 8

[`bizdb`.`orders`]
rows = 6

结论:-B 只备份指定库,metadata记录GTID和binlog位置信息。✅


5.2 -T / --tables-list:备份指定表

注意:当前版本(v1.1.0)的-T参数存在段错误bug,使用-x正则替代。

替代方案(使用-x正则):

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -x 'bizdb.employees' -o /tmp/mydumper_test/table_bak

验证结果:

复制代码
输出文件:
bizdb.employees.00000.sql
bizdb.employees-schema.sql
bizdb-schema-create.sql
metadata

结论:-x正则可以精确匹配表名,实现单表备份。✅


5.3 -c / --compress:压缩输出文件

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -c -o /tmp/mydumper_test/compress_bak

验证结果:

复制代码
压缩后文件扩展名: .zst(zstd压缩)
bizdb.access_log.00000.sql.zst
bizdb.access_log-schema.sql.zst
...

结论:-c 使用zstd压缩输出文件,节省磁盘空间。大数据量效果显著。✅


5.4 -e / --build-empty-files:空表也产生数据文件

命令(加-e):

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B testdb -e --no-trx-tables -o /tmp/mydumper_test/empty_bak

验证结果:

复制代码
加 -e:      testdb.empty_table.00000.sql  (0字节空文件)
不加 -e:    只有 testdb.empty_table-schema.sql,无数据文件

结论:-e 即使表没有数据也产生空文件,便于确认所有表都已备份。✅


5.5 -m / --no-schemas:不导出表结构

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -m -o /tmp/mydumper_test/no_schema_bak

验证结果:

复制代码
只有数据文件: bizdb.access_log.00000.sql, bizdb.employees.00000.sql, bizdb.orders.00000.sql
无schema文件

结论:-m 只导出数据,不导出表结构。适合目标端已有表结构的场景。✅


5.6 -d / --no-data:不导出数据

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -d -o /tmp/mydumper_test/no_data_bak

验证结果:

复制代码
只有schema文件: bizdb.access_log-schema.sql, bizdb.employees-schema.sql, bizdb.orders-schema.sql
无数据文件

结论:-d 只导出表结构,不导出数据。适合迁移表结构的场景。✅


5.7 -i / --ignore-engines:忽略存储引擎

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B testdb -i MyISAM --no-trx-tables -o /tmp/mydumper_test/ignore_engine_bak

验证结果:在v1.1.0版本中,-i参数影响锁策略而非过滤表,MyISAM表仍被导出。

结论:-i 在新版本中行为有变化,主要影响锁策略。如需过滤MyISAM表,使用-x正则。⚠️


5.8 --sync-thread-lock-mode=NO_LOCK:不执行锁

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb --sync-thread-lock-mode=NO_LOCK -o /tmp/mydumper_test/no_locks_bak

验证结果:

复制代码
日志: Executing in NO_LOCK mode, we are not able to ensure that backup will be consistent
日志: Transactions started, unlocking tables

结论 :NO_LOCK模式不执行全局读锁,不阻塞写入,但无法保证备份一致性。仅用于对一致性无要求的场景。✅


5.9 -s / --statement-size:设置INSERT语句大小

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -s 100 -o /tmp/mydumper_test/small_stmt_bak

验证结果:

复制代码
警告: Row bigger than statement_size for bizdb.employees
(行数据大于语句大小,但仍然完成备份)

结论:-s 控制每个INSERT语句的字节数,默认1000000。小值适合细粒度恢复。✅


5.10 -r / --rows:按行数分块导出

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -r 2 -o /tmp/mydumper_test/rows_bak

验证结果:

复制代码
employees(8行) → 5个数据文件: 00001.sql ~ 00005.sql
orders(6行) → 4个数据文件: 00001.sql ~ 00004.sql
access_log(10行) → 6个数据文件: 00001.sql ~ 00006.sql

结论:-r 按指定行数分块导出,实现并行恢复加速,也便于部分恢复。✅


5.11 -x / --regex:正则表达式过滤

命令(匹配特定表):

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -x 'bizdb.emp.*' -o /tmp/mydumper_test/regex_bak

命令(排除特定库):

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -x '^(?!(mysql|sys|performance_schema|information_schema))' \
  --no-trx-tables -o /tmp/mydumper_test/regex_filter_bak

验证结果:

复制代码
bizdb.emp.*:          只匹配employees表
排除mysql/sys等:      只备份bizdb和testdb

结论:-x 正则表达式是灵活的过滤方式,支持匹配和排除。✅


5.12 -t / --threads:设置线程数

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -t 8 -o /tmp/mydumper_test/threads_bak

验证结果:

复制代码
日志: Thread 1~6: connected using MySQL connection ID ...
8个线程并行工作

结论:-t 设置并行线程数,默认4。大库可增加线程提升速度。✅


5.13 -l / --long-query-guard:设置长查询上限

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -l 600 -o /tmp/mydumper_test/long_query_bak

结论:-l 设置长查询时间阈值(秒),默认60。超过则mydumper退出。配合-K可kill长查询。✅


5.14 -v / --verbose:详细输出

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -v 3 -o /tmp/mydumper_test/verbose_bak

验证结果:

复制代码
-v 0 = silent
-v 1 = errors
-v 2 = warnings(默认)
-v 3 = info(显示锁操作、线程、每张表进度等详细信息)

结论:-v 3 输出最详细的信息,便于排查备份问题。✅


5.15 全库备份

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  --no-trx-tables -o /tmp/mydumper_test/full_bak

验证结果:

复制代码
输出268个文件,包含mysql、bizdb、testdb所有库
除了information_schema与performance_schema之外的库都会被备份

结论:不指定-B则备份全部数据库。✅


5.16 -C / --compress-protocol:连接使用压缩协议

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -C -o /tmp/mydumper_test/compress_proto_bak

结论:-C 在MySQL连接上使用压缩协议,非本地备份时减少网络传输量。✅


5.17 -L / --logfile:指定日志文件

命令:

bash 复制代码
mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -B bizdb -o /tmp/mydumper_test/logfile_bak -L /tmp/mydumper_test/mydumper.log -v 3

验证结果:

复制代码
日志文件内容:
2026-07-27 17:17:31 [INFO] - MyDumper backup version: 1.1.0-1
2026-07-27 17:17:31 [INFO] - Using 4 dumper threads
2026-07-27 17:17:31 [INFO] - Connected to MySQL 8.0.35
2026-07-27 17:17:31 [INFO] - Acquiring DDL lock
2026-07-27 17:17:31 [INFO] - FLUSH TABLES WITH READ LOCK: OK
...

结论:-L 将日志写入指定文件,默认输出到stderr。✅


5.18 不指定-o 自动生成日期目录

命令:

bash 复制代码
cd /tmp/mydumper_test && mydumper --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock -B bizdb

验证结果:

复制代码
自动创建目录: export-20260727-171745

结论 :不指定-o时,自动生成 export-YYYYMMDD-HHMMSS 格式的目录。✅


6. mydumper 常用备份模板

模板1:备份单个库

bash 复制代码
mydumper -h 192.168.195.141 -u root -p 'Root@123456' -B bizdb -o /tmp/bak

模板2:备份所有数据库

bash 复制代码
mydumper -h 192.168.195.141 -u root -p 'Root@123456' --no-trx-tables -o /tmp/bak

模板3:备份单表(用正则替代-T)

bash 复制代码
mydumper -h 192.168.195.141 -u root -p 'Root@123456' -B bizdb -x 'bizdb.employees' -o /tmp/bak

模板4:备份多表(用正则)

bash 复制代码
mydumper -h 192.168.195.141 -u root -p 'Root@123456' -B bizdb -x 'bizdb.(employees|orders)' -o /tmp/bak

模板5:不带表结构备份表

bash 复制代码
mydumper -u root -p 'Root@123456' -B bizdb -m -o /tmp/bak

模板6:压缩备份及连接使用压缩协议(非本地备份时)

bash 复制代码
mydumper -h 192.168.195.141 -u root -p 'Root@123456' -B bizdb -o /tmp/bak -c -C

模板7:备份特定表(正则匹配)

bash 复制代码
mydumper -h 192.168.195.141 -u root -p 'Root@123456' -B bizdb --regex='bizdb.emp.*' -o /tmp/bak

模板8:过滤特定库(排除mysql及sys库)

bash 复制代码
mydumper -u root -p 'Root@123456' -x '^(?!(mysql|sys|performance_schema|information_schema))' --no-trx-tables -o /tmp/bak

模板9:基于空表产生表结构文件

bash 复制代码
mydumper -u root -p 'Root@123456' -B testdb -e --no-trx-tables -o /tmp/bak

模板10:设置长查询上限并kill长查询

bash 复制代码
mydumper -u root -p 'Root@123456' -B bizdb --long-query-guard=200 --kill-long-queries -o /tmp/bak

模板11:备份时输出详细日志

bash 复制代码
mydumper -h 192.168.195.141 -u root -p 'Root@123456' -B bizdb -v 3 -o /tmp/bak

模板12:按行分块导出(大数据表)

bash 复制代码
mydumper -u root -p 'Root@123456' -B bizdb -r 10000 -t 8 -o /tmp/bak

7. myloader 恢复参数逐一验证

7.1 恢复指定库

命令:

bash 复制代码
myloader --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -d /tmp/bizdb_bak -s bizdb -v 3

验证结果:

复制代码
Structure checksum confirmed for bizdb.employees  ✓
Schema index checksum confirmed for bizdb.employees  ✓
Restore completed
bizdb.employees: 8 rows  ✓
bizdb.orders: 6 rows  ✓
bizdb.access_log: 10 rows  ✓

结论:-s 指定恢复源库。✅


7.2 -o / --drop-table:覆盖已存在的表

命令:

bash 复制代码
myloader --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -d /tmp/bizdb_bak -s bizdb -o -v 3

验证结果: 表已存在时先DROP TABLE再恢复,Restore completed。

结论:-o 覆盖已存在的表,不加-o时遇到同表会FAIL。✅


7.3 -B:恢复到不同数据库名

命令:

bash 复制代码
myloader --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -d /tmp/bizdb_bak -s bizdb -B bizdb_recover -v 3

验证结果:

复制代码
新库: bizdb_recover
bizdb_recover.employees: 8 rows  ✓
bizdb_recover.orders: 6 rows  ✓

结论:-B 将备份恢复到另一个数据库,目标库不存在会自动新建。✅


7.4 -e / --enable-binlog:恢复时开启binlog

命令:

bash 复制代码
myloader --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -d /tmp/bizdb_bak -s bizdb -o -e -v 3

验证结果:

复制代码
WARNING: Option --enable-binlog / -e is discouraged.
Use [myloader_session_variables] in the --defaults-file instead

结论:-e 恢复时写入binlog(有从库时必须开启),但该选项在新版本中建议使用配置文件替代。✅


7.5 从全备中恢复指定库

命令:

bash 复制代码
myloader --user=root --password='Root@123456' \
  --socket=/data/mysql/3306/data/mysql.sock \
  -d /tmp/full_bak -s bizdb -o -v 3

验证结果: bizdb.employees: 8 rows ✓

结论:从全量备份中用-s指定恢复某个库。✅


8. myloader 常用恢复模板

模板1:恢复指定库

bash 复制代码
myloader --user=root --password='Root@123456' --host=192.168.195.142 \
  --directory=/tmp/bak --verbose=3 -s bizdb

模板2:恢复一个库到原来的实例

bash 复制代码
myloader --user=root --password='Root@123456' --host=192.168.195.142 \
  --directory=/tmp/bak --verbose=3 -s bizdb -B bizdb

模板3:恢复备份文件中的全部(若表已存在则先删除)

bash 复制代码
myloader -u root -p 'Root@123456' -o -d /backups/all

模板4:从全备中恢复指定库

bash 复制代码
myloader -u root -p 'Root@123456' -s bizdb -o -d /backups/all

模板5:将某个数据库备份还原到另一个数据库中

bash 复制代码
# 目标库不存在则会新建
myloader -u root -p 'Root@123456' -B bizdb_recover -s bizdb -o -d /backups/bizdb

模板6:恢复时开启binlog(有从库时需要开启)

bash 复制代码
myloader -u root -p 'Root@123456' -e -o -d /backups/bizdb

9. 备份恢复注意事项

  1. myloader恢复时默认不开启binlog ,这虽然可以加快恢复速度,但当目标库存在从库时,必须使用-e参数来打开binlog记录,否则从库不会同步恢复的数据

  2. 恢复过程中,如果日志显示表已存在,则需要添加-o参数覆盖表

  3. 备份往往比恢复要快很多,一个是查询,一个是插入。稳妥起见,把线程数、查询数和一次插入数进行合理设置

  4. 注意磁盘大小:备份时可以使用-c压缩文件,磁盘空间要求低;而恢复时,则要求磁盘空间比数据文件要大

  5. 非事务引擎表(如MyISAM)会导致一致性备份失败,需要添加--no-trx-tables参数

  6. metadata文件记录了GTID和binlog位置信息,可用于增量恢复的起点


10. 参数速查表

mydumper 参数

参数 作用 验证结果
-B / --database 备份指定库 只备份bizdb ✓
-T / --tables-list 备份指定表 v1.1.0有bug,用-x替代 ⚠️
-c / --compress 压缩输出文件 zstd压缩,扩展名.zst ✓
-e / --build-empty-files 空表产生数据文件 0字节空文件 ✓
-m / --no-schemas 不导出表结构 只有数据文件 ✓
-d / --no-data 不导出数据 只有schema文件 ✓
-i / --ignore-engines 忽略存储引擎 v1.1.0影响锁策略而非过滤 ⚠️
-x / --regex 正则过滤 匹配/排除表名 ✓
-t / --threads 设置线程数 8线程并行 ✓
-s / --statement-size INSERT语句字节数 默认1000000 ✓
-r / --rows 按行数分块 employees(8行)→5个文件 ✓
-l / --long-query-guard 长查询上限 默认60秒 ✓
-K / --kill-long-queries Kill长查询 配合-l使用 ✓
-C / --compress-protocol 连接压缩协议 减少网络传输 ✓
-L / --logfile 指定日志文件 日志写入文件 ✓
-v / --verbose 详细输出 0~3级别 ✓
--no-trx-tables 含非事务表 MyISAM表需要 ✓
--sync-thread-lock-mode 锁模式 NO_LOCK/FTWRL/GTID ✓

myloader 参数

参数 作用 验证结果
-d / --directory 指定备份目录
-s / --source-db 指定恢复源库 只恢复bizdb ✓
-o / --drop-table 覆盖已存在表 先DROP再恢复 ✓
-B 恢复到不同库名 bizdb→bizdb_recover ✓
-e / --enable-binlog 开启binlog 有从库时必须 ✓
-t / --threads 设置线程数
-v / --verbose 详细输出

11. 连接信息

bash 复制代码
# 主库(141)
/usr/local/mysql/bin/mysql -uroot -S /data/mysql/3306/data/mysql.sock -p'Root@123456'

# 从库(142)
/usr/local/mysql/bin/mysql -uroot -S /data/mysql/3306/data/mysql.sock -p'Root@123456'
相关推荐
这个DBA有点耶5 小时前
热点行更新:秒杀场景下一条UPDATE语句的锁等待与性能优化
数据库·sql·mysql·性能优化·database·dba
冰暮流星6 小时前
mysql之新建表及对表的查询
android·数据库·mysql
Bug收容所7 小时前
12305项目学习day5
java·spring boot·redis·mysql·spring·rocketmq
会编程的土豆8 小时前
功能详解 01 · 用户注册:从表单到数据库一行
开发语言·数据库·后端·mysql·golang
溜达的大象8 小时前
Prometheus怎么监控MySQL?mysqld_exporter部署与告警教程
mysql·adb·prometheus
Sirens.19 小时前
MySQL表设计进阶-约束范式连接索引与事务
android·数据库·mysql
Oo大司命oO1 天前
藏在正则表达式里的陷阱
数据库·mysql·正则表达式
三十岁老牛再出发1 天前
07.26每日总结
linux·c语言·mysql
努力努力再努力wz1 天前
【Protobuf系列】:从序列化与反序列化到消息类与Service:深入理解Protobuf以及RPC调用机制
开发语言·网络·数据结构·c++·网络协议·mysql·rpc