关于mysqldump要点 mysqldumpRRsingle-transaction
程序员文章站
2022-07-13 09:15:54
...
1、mysqldump是逻辑备份(logic backup);
2、mysqldump适合数据库引擎是innodb的;
3、mysqldump关键选项
1> --opt=>默认是开启,该参数是以下参数组合的简要表示,即相当以下参数:
--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset.
2> --skip-opt=>可以通过此参数跳过如上1>的设置;
3> --quick=>适合用来dump数据量较大的表,建议用上;
4> --single-transaction=>该参数会在dump的session中将事务隔离级别设置为RR,即 REPEATABLE READ,建议用上;
注意:在加上该参数dump库表数据时,不能同时有connect在执行以下语句:
ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE
5> --ignore-table时需要逐一指定对应表名;
4、尽量在业务低峰期执行mysqldump,尽管使用了优化参数:--single-transaction --quick
5、导出数据过程中,可通过以下语句监控是否存在lock情况
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
5、一个合适的例子如下:
////////////////begin////////////////
mysqldump -u root -p'yourpassword' --single-transaction --quick -B yourdbname --ignore-table=yourdbname.report_info_20190802 --ignore-table=yourdbname.report_statistics_20200602 --ignore-table=yourdbname.report_statistics_20200603 --ignore-table=yourdbname.report_statistics_20200702 --ignore-table=yourdbname.dept_20200215 --ignore-table=yourdbname.org_20200215 --ignore-table=yourdbname.post_20200215 --ignore-table=yourdbname.score_detail_20200630 --ignore-table=yourdbname.score_push_20200630 --ignore-table=yourdbname.score_result_20200630 --ignore-table=yourdbname.score_statistics_2020063 --ignore-table=yourdbname.user_20200410_bin --ignore-table=yourdbname.user_post_20200410_bin --ignore-table=yourdbname.jobobjective_0401 --ignore-table=yourdbname.jobobjective_0401_01 --ignore-table=yourdbname.jobobjective_0525 --ignore-table=yourdbname.jobobjective_0622 --ignore-table=yourdbname.jobobjective_0721 > /opt/db/`date +%F`/yourdbname_prod`date +%F`.sql
///////////////end///////////
6、参考mysql官方说明,如下:
https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#mysqldump-performance-options
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
2、mysqldump适合数据库引擎是innodb的;
3、mysqldump关键选项
1> --opt=>默认是开启,该参数是以下参数组合的简要表示,即相当以下参数:
--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset.
2> --skip-opt=>可以通过此参数跳过如上1>的设置;
3> --quick=>适合用来dump数据量较大的表,建议用上;
4> --single-transaction=>该参数会在dump的session中将事务隔离级别设置为RR,即 REPEATABLE READ,建议用上;
注意:在加上该参数dump库表数据时,不能同时有connect在执行以下语句:
ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE
5> --ignore-table时需要逐一指定对应表名;
4、尽量在业务低峰期执行mysqldump,尽管使用了优化参数:--single-transaction --quick
5、导出数据过程中,可通过以下语句监控是否存在lock情况
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
5、一个合适的例子如下:
////////////////begin////////////////
mysqldump -u root -p'yourpassword' --single-transaction --quick -B yourdbname --ignore-table=yourdbname.report_info_20190802 --ignore-table=yourdbname.report_statistics_20200602 --ignore-table=yourdbname.report_statistics_20200603 --ignore-table=yourdbname.report_statistics_20200702 --ignore-table=yourdbname.dept_20200215 --ignore-table=yourdbname.org_20200215 --ignore-table=yourdbname.post_20200215 --ignore-table=yourdbname.score_detail_20200630 --ignore-table=yourdbname.score_push_20200630 --ignore-table=yourdbname.score_result_20200630 --ignore-table=yourdbname.score_statistics_2020063 --ignore-table=yourdbname.user_20200410_bin --ignore-table=yourdbname.user_post_20200410_bin --ignore-table=yourdbname.jobobjective_0401 --ignore-table=yourdbname.jobobjective_0401_01 --ignore-table=yourdbname.jobobjective_0525 --ignore-table=yourdbname.jobobjective_0622 --ignore-table=yourdbname.jobobjective_0721 > /opt/db/`date +%F`/yourdbname_prod`date +%F`.sql
///////////////end///////////
6、参考mysql官方说明,如下:
https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#mysqldump-performance-options
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力: