码迷,mamicode.com
首页 > 数据库 > 详细

mysqldump的简单用法及其原理

时间:2017-09-13 12:03:07      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:指定   bsp   sel   snapshot   har   nap   action   create   mysql   

mysqldump
生产备份:
  搭建主从: mysqldump -A -B -R --master-data=2 >backup.sql

  备份单库(包含建库语句): mysqldump -B 数据库名 --single-transaction >db.sql

  备份单库:(不包含建库语句):mysqldump db_name --single-transaction >db_date.sql

  备份表的数据及结构:mysqldump -u username -ppassword database --tables table_name1 table_name2 table_name3 >create_date.sql

  备份指定表的结构:mysqldump -u username -ppassword -d database --tables table_name1 table_name2 table_name3 >create_table.sql

  备份指定表的数据:mysqldump -u username -ppassword -t database --tables table_name1 table_name2 table_name3 >table_data.sql

  数据库中,某些表除外,其余表都需导出
    mysqldump -h IP -u username -ppassword --default-character-set=utf8
    --database database_name --ignore-table=database_name.table_name1
    --ignore-table=database_name.table_name2 --ignore-table=database_name.table_name3 >ignore_table.sql
恢复:
  对应好服务器、数据库
  source backup.sql;

mysqldump的原理:(可以在dump时自行打开general log,观察日志的输出)  

  1. mysqldump的本质是通过select * from tab来获取表的数据的。

  2. START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */必须放到FLUSH TABLES WITH READ LOCK和UNLOCK TABLES之间,放到之前会造成START   TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */和FLUSH TABLES WITH READ LOCK之间执行的DML语句丢失,放到之后,会造成从库重复插入数据。

  3. mysqldump只适合放到业务低峰期做,如果备份的过程中数据操作很频繁,会造成Undo表空间越来越大,undo表空间默认是放到共享表空间中的,而ibdata的特性是一旦增大,就不会收缩。

  4. mysqldump的效率还是比较低下,START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */只能等到所有表备份完后才结束,其实效率比较高的做法是备份完一张表就提交一次,这样可尽快释放Undo表空间快照占用的空间。但这样做,就无法实现对所有表的一致性备份。

mysqldump的简单用法及其原理

标签:指定   bsp   sel   snapshot   har   nap   action   create   mysql   

原文地址:http://www.cnblogs.com/DBA-3306/p/7513925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!