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.