searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

mysqldump逻辑备份

2023-10-30 01:54:53
12
0

1、参数调整

登录10.201.0.X   MySQL root账号:XXXXXX

mysql -h10.201.0.X -P 6033 -uroot -p

mysql> show global variables like 'max_execution_time';

+--------------------+-------+

| Variable_name      | Value |

+--------------------+-------+

| max_execution_time | 30000 |

+--------------------+-------+

1 row in set (0.00 sec)

mysql> show global variables like 'max_allowed_packet';

+--------------------+----------+

| Variable_name      | Value    |

+--------------------+----------+

| max_allowed_packet | 67108864 |

+--------------------+----------+

1 row in set (0.00 sec)

mysql> set global max_execution_time=0;

mysql> set global max_allowed_packet=1073741824;   #避免备份报错

 

2、备份mysql(如果数据量大,可以加到shell脚本里后台执行)

mysqldump  -h 10.201.0.X -uroot -p  -P6033  --single-transaction  --set-gtid-purged=OFF  --master-data=2  -q  --all-databases    >   /data/backup/mysqlX_6033/mysqlX_6033_all.sql

 

3、备份用户信息

cd /root/percona-toolkit-3.3.1/

bin/pt-show-grants --host=10.201.0.X --port=3308 --user=root --password=XXXXXX > /root/grants3308_20220602.sql

 

4、恢复参数

mysql> set global max_execution_time=30000;

mysql> set global max_allowed_packet=67108864;

 

---------------------------------------------

保证导出的一致性状态--single-transaction

该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎(它不显示加锁通过判断版本来对比数据),仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项

--quick, -q

不缓冲查询,直接导出到标准输出。默认为打开状态

--set-gtid-purged   #Add 'SET @@GLOBAL.GTID_PURGED' to the output

  • mysqldump 中 sql_log_bin 默认是关闭的。 SET @@SESSION.SQL_LOG_BIN= 0; 所以这里用途非常重要
  • 如果dump文件,你要在master上执行,那么必须这样备份: mysqldump xx --set-gtid-purged=OFF , 这样dump文件不会有SET @@SESSION.SQL_LOG_BIN= 0存在
  • 如果dump文件,你要在slave上执行,想重新搭建一套slave环境。那么必须这样备份: mysqldump xx --set-gtid-purged=ON -A, --all-databases Dump all the databases.
0条评论
0 / 1000
1****n
19文章数
0粉丝数
1****n
19 文章 | 0 粉丝
原创

mysqldump逻辑备份

2023-10-30 01:54:53
12
0

1、参数调整

登录10.201.0.X   MySQL root账号:XXXXXX

mysql -h10.201.0.X -P 6033 -uroot -p

mysql> show global variables like 'max_execution_time';

+--------------------+-------+

| Variable_name      | Value |

+--------------------+-------+

| max_execution_time | 30000 |

+--------------------+-------+

1 row in set (0.00 sec)

mysql> show global variables like 'max_allowed_packet';

+--------------------+----------+

| Variable_name      | Value    |

+--------------------+----------+

| max_allowed_packet | 67108864 |

+--------------------+----------+

1 row in set (0.00 sec)

mysql> set global max_execution_time=0;

mysql> set global max_allowed_packet=1073741824;   #避免备份报错

 

2、备份mysql(如果数据量大,可以加到shell脚本里后台执行)

mysqldump  -h 10.201.0.X -uroot -p  -P6033  --single-transaction  --set-gtid-purged=OFF  --master-data=2  -q  --all-databases    >   /data/backup/mysqlX_6033/mysqlX_6033_all.sql

 

3、备份用户信息

cd /root/percona-toolkit-3.3.1/

bin/pt-show-grants --host=10.201.0.X --port=3308 --user=root --password=XXXXXX > /root/grants3308_20220602.sql

 

4、恢复参数

mysql> set global max_execution_time=30000;

mysql> set global max_allowed_packet=67108864;

 

---------------------------------------------

保证导出的一致性状态--single-transaction

该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎(它不显示加锁通过判断版本来对比数据),仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项

--quick, -q

不缓冲查询,直接导出到标准输出。默认为打开状态

--set-gtid-purged   #Add 'SET @@GLOBAL.GTID_PURGED' to the output

  • mysqldump 中 sql_log_bin 默认是关闭的。 SET @@SESSION.SQL_LOG_BIN= 0; 所以这里用途非常重要
  • 如果dump文件,你要在master上执行,那么必须这样备份: mysqldump xx --set-gtid-purged=OFF , 这样dump文件不会有SET @@SESSION.SQL_LOG_BIN= 0存在
  • 如果dump文件,你要在slave上执行,想重新搭建一套slave环境。那么必须这样备份: mysqldump xx --set-gtid-purged=ON -A, --all-databases Dump all the databases.
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0