Fork me on GitHub

mysqldump 和mysqlbinlog

一、mysqldump 

  1.备份test库

#mysqldump -uroot -p'123'  test >test.sql  

 

 2.备份 -B参数

#mysqldump -uroot -p'123' -B test >test_B.sql   --B有create数据库,和use
#mysqldump -uroot -p'123' -B test test1 >test_B.sql   --B有create数据库,和use,且同时备份test,test1两个库

 

 

 3.备份 --compact 去除那些多余的字符

#mysqldump -uroot -p'123' -B --compact test >test_B_C.sql   ---compact 去除那些多余的字符

  4.mysql恢复

#mysql -uroot -p'123' <test_B.sql                          --假如备份的时候没有加-B,恢复的时候要先创建数据库,并use数据库

  5.mysqldump的压缩  gzip

#mysqldump -uroot -p'123' -B test|gzip>test_B_bak.sql.gz

  6.mysqldump的压缩恢复  gunzip

gunzip <test_B_bak.sql.gz|mysql -uroot -p'123'

  7.mysqldump只备份表结构 -d

#mysqldump -uroot -p'123' -d test >test_d.sql

  8.mysqldump只备份表数据(不带结构) -t

#mysqldump -uroot -p'123'  -t test >test_t.sql

   9.备份时刷新binlog -F

#mysqldump -uroot -p'123'  -F test >test_F.sql

   10.备份时记录二进制日志位置--master-data=1

#mysqldump -uroot -p'123' --master-data=1 test>tset_md.sql

 

总结:几种备份方式,备份文件的大小

 

 11.mysqldump只备份test库中的orders表

#mysqldump -uroot -p'123'  test orders>test_orders.sql

  12.mysql导入备份的test库中的orders表

#mysql -uroot -p'123' test<test_orders.sql
或登录mysql
mysql>use test;
mysql>source /root/test_orders.sql

 ---------------------------------------------------------mysqldump中的锁表问题------------------------------------------------------------------

  下面内容讨论的是InnDB引擎中的情况。

--mysqldump

mysqldump -uroot -p  -B CRM --tables WorkOrder>CRM_WorkOrder_T.sql    --导出数据库DB1中的WorkOrder表

  mysqldump 默认会给数据表加上读锁,在这个语句中,只会锁住数据库CRM中的WorkOrder表,其他库表不受影响。

 

 

--master-data加锁

mysqldump -uroot -p  --master-data=2 -B DB1 --tables WorkOrder>CRM_WorkOrder_T.sql    --导出数据库DB1中的WorkOrder表

  --master-data=2 和--master-data=1 都会自动加一个读锁(全局),这个锁表不是只将WorkOrder锁住,而且是所有的数据库锁住。不进数据库DB1不能进行写操作,其他数据库也不能进行写操作,读还是可以滴。

   对比mysqldump和--master-data中的锁状态,mysqldump加的是table level lock(表级锁),它只会影响备份的表。而--master-data加的锁是 global read lock(全局读锁),它就会影响整个mysql的所有数据库。

 

--single-transaction 

mysqldump -uroot -p  --master-data=2 --single-transaction -B CRM --tables WorkOrder>CRM_WorkOrder_T.sql

 

  如果说想着备份时,不锁表,可以用到参数--single-transaction,加上之后进行备份,所有mysql的库表就不会被锁了。

posted @ 2017-11-23 17:38  神雕爱大侠  阅读(593)  评论(0编辑  收藏  举报