基于 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 语言编写。备份过程主要步骤:
- 主线程
FLUSH TABLES WITH READ LOCK,施加全局只读锁,保证数据一致性 - 读取 当前时间点的二进制日志文件名和日志写入的位置,记录在
metadata文件中 - N 个 dump 线程
START TRANSACTION WITH CONSISTENT SNAPSHOT,开启读一致性事务 - dump non-InnoDB tables,首先导出非事务引擎的表
- 主线程
UNLOCK TABLES,非事务引擎备份完后释放全局只读锁 - dump InnoDB tables,基于事务导出 InnoDB 表
- 事务结束
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. 备份恢复注意事项
-
myloader恢复时默认不开启binlog ,这虽然可以加快恢复速度,但当目标库存在从库时,必须使用-e参数来打开binlog记录,否则从库不会同步恢复的数据
-
恢复过程中,如果日志显示表已存在,则需要添加-o参数覆盖表
-
备份往往比恢复要快很多,一个是查询,一个是插入。稳妥起见,把线程数、查询数和一次插入数进行合理设置
-
注意磁盘大小:备份时可以使用-c压缩文件,磁盘空间要求低;而恢复时,则要求磁盘空间比数据文件要大
-
非事务引擎表(如MyISAM)会导致一致性备份失败,需要添加--no-trx-tables参数
-
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'