1.yum安装
安装依赖工具和软件:
yum install -y cmake gcc gcc-c++ git make
yum install -y glib2-devel mysql-devel openssl-devel pcre-devel zlib-devel
yum install -y mysql-devel
yum install -y Percona-Server-devel-57
yum install -y mariadb-devel
yum install https://github.com/maxbube/mydumper/releases/download/v0.10.5/mydumper-0.10.5-1.el7.x86_64.rpm
2.使用方法
mydumper常用参数:
-B, --database #备份数据库
-T, --tables-list #备份的表
-o, --outputdir #备份保存的目录
-r, --rows #多少行输出一个文件
-c, --compress #使用压缩
-G, --triggers #备份触发器
-E, --events #备份事件
-R, --routines #备份routines
--use-savepoints #使用savepoints备份,以释放mdl锁
--trx-consistency-only #开启一个事务进行备份
-h, --host
-u, --user
-p, --password
-P, --port
-S, --socket
-t, --threads #备份并行线程,默认4
myloader常用参数:
-d, --directory #从哪里恢复数据
-B, --database #恢复到哪个数据库
-h, --host
-u, --user
-p, --password
-P, --port
-S, --socket
-t, --threads #并行线程数,默认4
3.备份流程
打开general_log,输出log到table
mysql> set global log_output='table';
mysql> set global general_log=1;
执行备份:
mydumper --trx-consistency-only --use-savepoints -c -B sbtest -o backup_sbtest -t 4 --rows 100000 -S /tmp/mysql.sock57
关闭general_log:
mysql> set global general_log=0;
查看general_log输出:
mysql> select thread_id,left(argument,64) from general_log;
+-----------+------------------------------------------------------------------+
| thread_id | left(argument,64) |
+-----------+------------------------------------------------------------------+
| 13 | root@localhost on sbtest using Socket |
| 13 | SET SESSION wait_timeout = 2147483 |
| 13 | SET SESSION net_write_timeout = 2147483 |
| 13 | SHOW PROCESSLIST |
| 13 | SELECT @@version_comment, @@version |
| 13 | FLUSH TABLES WITH READ LOCK |
| 13 | START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */ |
| 13 | /*!40101 SET NAMES binary*/ |
| 13 | SHOW MASTER STATUS |
| 13 | SHOW SLAVE STATUS |
| 14 | root@localhost on using Socket |
| 14 | SET SESSION wait_timeout = 2147483 |
| 14 | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ |
| 14 | START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */ |
| 14 | /*!40103 SET TIME_ZONE='+00:00' */ |
| 14 | /*!40101 SET NAMES binary*/ |
| 15 | root@localhost on using Socket |
| 15 | SET SESSION wait_timeout = 2147483 |
| 15 | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ |
| 15 | START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */ |
| 15 | /*!40103 SET TIME_ZONE='+00:00' */ |
| 15 | /*!40101 SET NAMES binary*/ |
| 16 | root@localhost on using Socket |
| 16 | SET SESSION wait_timeout = 2147483 |
| 16 | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ |
| 16 | START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */ |
| 16 | /*!40103 SET TIME_ZONE='+00:00' */ |
| 16 | /*!40101 SET NAMES binary*/ |
| 17 | root@localhost on using Socket |
| 17 | SET SESSION wait_timeout = 2147483 |
| 17 | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ |
| 17 | START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */ |
| 17 | /*!40103 SET TIME_ZONE='+00:00' */ |
| 17 | /*!40101 SET NAMES binary*/ |
| 13 | UNLOCK TABLES /* trx-only */ |
| 15 | sbtest |
| 14 | SHOW CREATE DATABASE IF NOT EXISTS `sbtest` |
| 15 | SHOW TABLE STATUS |
| 13 | SHOW INDEX FROM `sbtest`.`sbtest1` |
| 13 | SELECT /*!40001 SQL_NO_CACHE */ MIN(`id`),MAX(`id`) FROM `sbtest |
| 13 | EXPLAIN SELECT `id` FROM `sbtest`.`sbtest1` |
| 14 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 16 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 13 | SHOW INDEX FROM `sbtest`.`sbtest2` |
| 17 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 13 | SELECT /*!40001 SQL_NO_CACHE */ MIN(`id`),MAX(`id`) FROM `sbtest |
| 15 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 13 | EXPLAIN SELECT `id` FROM `sbtest`.`sbtest2` |
| 13 | SHOW INDEX FROM `sbtest`.`sbtest3` |
| 13 | SELECT /*!40001 SQL_NO_CACHE */ MIN(`id`),MAX(`id`) FROM `sbtest |
| 14 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest1` WHERE |
| 16 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest1` WHERE |
| 17 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest1` WHERE |
| 15 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest1` WHERE |
| 13 | EXPLAIN SELECT `id` FROM `sbtest`.`sbtest3` |
| 13 | SHOW INDEX FROM `sbtest`.`sbtest4` |
| 13 | SELECT /*!40001 SQL_NO_CACHE */ MIN(`id`),MAX(`id`) FROM `sbtest |
| 13 | EXPLAIN SELECT `id` FROM `sbtest`.`sbtest4` |
| 13 | |
| 16 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 16 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest1` WHERE |
| 14 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 14 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest1` WHERE |
| 15 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 15 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest1` WHERE |
| 17 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 17 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest1` WHERE |
| 16 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 16 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest1` WHERE |
| 14 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 14 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest2` WHERE |
| 15 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 15 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest2` WHERE |
| 17 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 17 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest2` WHERE |
| 14 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 14 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest2` WHERE |
| 16 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 16 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest2` WHERE |
| 15 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 15 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest2` WHERE |
| 17 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 17 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest2` WHERE |
| 14 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 14 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest2` WHERE |
| 16 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 16 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest2` WHERE |
| 15 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 15 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest3` WHERE |
| 17 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 17 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest3` WHERE |
| 14 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 14 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest3` WHERE |
| 16 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 16 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest3` WHERE |
| 15 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 15 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest3` WHERE |
| 17 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 17 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest3` WHERE |
| 14 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 14 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest3` WHERE |
| 16 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 16 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest3` WHERE |
| 17 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 17 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest3` WHERE |
| 15 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 15 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest4` WHERE |
| 14 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 14 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest4` WHERE |
| 16 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 16 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest4` WHERE |
| 15 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 15 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest4` WHERE |
| 17 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 17 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest4` WHERE |
| 14 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 14 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest4` WHERE |
| 16 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 16 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest4` WHERE |
| 15 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 15 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest4` WHERE |
| 17 | select COLUMN_NAME from information_schema.COLUMNS where TABLE_S |
| 17 | SELECT /*!40001 SQL_NO_CACHE */ * FROM `sbtest`.`sbtest4` WHERE |
| 16 | SHOW CREATE TABLE `sbtest`.`sbtest1` |
| 16 | SHOW CREATE TABLE `sbtest`.`sbtest2` |
| 16 | SHOW CREATE TABLE `sbtest`.`sbtest3` |
| 16 | SHOW CREATE TABLE `sbtest`.`sbtest4` |
| 16 | |
| 14 | |
| 15 | |
| 17 | |
| 11 | set global general_log=0 |
+-----------+------------------------------------------------------------------+
4.恢复
查看备份文件,每张表10000行生成一个压缩文件。表结构文件和数据文件分开存储。
shell>ll backup_sbtest/
total 375688
-rw-r--r-- 1 root root 272 Jun 10 17:23 metadata
-rw-r--r-- 1 root root 10676267 Jun 10 17:23 sbtest.sbtest1.00000.sql.gz
-rw-r--r-- 1 root root 10684748 Jun 10 17:23 sbtest.sbtest1.00001.sql.gz
-rw-r--r-- 1 root root 10683895 Jun 10 17:23 sbtest.sbtest1.00002.sql.gz
-rw-r--r-- 1 root root 10684709 Jun 10 17:23 sbtest.sbtest1.00003.sql.gz
-rw-r--r-- 1 root root 10684778 Jun 10 17:23 sbtest.sbtest1.00004.sql.gz
-rw-r--r-- 1 root root 10685078 Jun 10 17:23 sbtest.sbtest1.00005.sql.gz
-rw-r--r-- 1 root root 10683451 Jun 10 17:23 sbtest.sbtest1.00006.sql.gz
-rw-r--r-- 1 root root 10684622 Jun 10 17:23 sbtest.sbtest1.00007.sql.gz
-rw-r--r-- 1 root root 10684016 Jun 10 17:23 sbtest.sbtest1.00008.sql.gz
-rw-r--r-- 1 root root 261 Jun 10 17:23 sbtest.sbtest1-schema.sql.gz
-rw-r--r-- 1 root root 10676463 Jun 10 17:23 sbtest.sbtest2.00000.sql.gz
-rw-r--r-- 1 root root 10685153 Jun 10 17:23 sbtest.sbtest2.00001.sql.gz
-rw-r--r-- 1 root root 10684257 Jun 10 17:23 sbtest.sbtest2.00002.sql.gz
-rw-r--r-- 1 root root 10684568 Jun 10 17:23 sbtest.sbtest2.00003.sql.gz
-rw-r--r-- 1 root root 10684937 Jun 10 17:23 sbtest.sbtest2.00004.sql.gz
-rw-r--r-- 1 root root 10684110 Jun 10 17:23 sbtest.sbtest2.00005.sql.gz
-rw-r--r-- 1 root root 10685353 Jun 10 17:23 sbtest.sbtest2.00006.sql.gz
-rw-r--r-- 1 root root 10685418 Jun 10 17:23 sbtest.sbtest2.00007.sql.gz
-rw-r--r-- 1 root root 10684071 Jun 10 17:23 sbtest.sbtest2.00008.sql.gz
-rw-r--r-- 1 root root 261 Jun 10 17:23 sbtest.sbtest2-schema.sql.gz
-rw-r--r-- 1 root root 10676522 Jun 10 17:23 sbtest.sbtest3.00000.sql.gz
-rw-r--r-- 1 root root 10683953 Jun 10 17:23 sbtest.sbtest3.00001.sql.gz
-rw-r--r-- 1 root root 10684802 Jun 10 17:23 sbtest.sbtest3.00002.sql.gz
-rw-r--r-- 1 root root 10684851 Jun 10 17:23 sbtest.sbtest3.00003.sql.gz
-rw-r--r-- 1 root root 10684288 Jun 10 17:23 sbtest.sbtest3.00004.sql.gz
-rw-r--r-- 1 root root 10684398 Jun 10 17:23 sbtest.sbtest3.00005.sql.gz
-rw-r--r-- 1 root root 10684992 Jun 10 17:23 sbtest.sbtest3.00006.sql.gz
-rw-r--r-- 1 root root 10684743 Jun 10 17:23 sbtest.sbtest3.00007.sql.gz
-rw-r--r-- 1 root root 10683578 Jun 10 17:23 sbtest.sbtest3.00008.sql.gz
-rw-r--r-- 1 root root 261 Jun 10 17:23 sbtest.sbtest3-schema.sql.gz
-rw-r--r-- 1 root root 10676289 Jun 10 17:23 sbtest.sbtest4.00000.sql.gz
-rw-r--r-- 1 root root 10684658 Jun 10 17:23 sbtest.sbtest4.00001.sql.gz
-rw-r--r-- 1 root root 10685005 Jun 10 17:23 sbtest.sbtest4.00002.sql.gz
-rw-r--r-- 1 root root 10684927 Jun 10 17:23 sbtest.sbtest4.00003.sql.gz
-rw-r--r-- 1 root root 10685821 Jun 10 17:23 sbtest.sbtest4.00004.sql.gz
-rw-r--r-- 1 root root 10685278 Jun 10 17:23 sbtest.sbtest4.00005.sql.gz
-rw-r--r-- 1 root root 10684259 Jun 10 17:23 sbtest.sbtest4.00006.sql.gz
-rw-r--r-- 1 root root 10685283 Jun 10 17:23 sbtest.sbtest4.00007.sql.gz
-rw-r--r-- 1 root root 10683806 Jun 10 17:23 sbtest.sbtest4.00008.sql.gz
-rw-r--r-- 1 root root 261 Jun 10 17:23 sbtest.sbtest4-schema.sql.gz
-rw-r--r-- 1 root root 109 Jun 10 17:23 sbtest-schema-create.sql.gz
shell>cat metadata
Started dump at: 2021-06-10 17:23:10
SHOW MASTER STATUS:
Log: mysql-bin.000001
Pos: 472
GTID:03d52d94-c6a7-11eb-9322-000c29b99c14:1-1534082,
71557f9f-c9c3-11eb-9a33-000c29b99c14:1-2,
c58301f7-f8ad-11ea-b9f5-000c29bcd489:1-3259357
Finished dump at: 2021-06-10 17:23:25
数据恢复
myloader -d backup_test/ -B test1 -S /tmp/mysql.sock57
注:可以将某张表的备份文件全部放在指定目录下,从而只恢复某一张指定的表。