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

mysqldump备份和还原应注意的点和过程

时间:2015-07-22 16:36:30      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:数据库服务   数据库文件   二进制   mysqldump   

  mysqldump是MySQL自带的逻辑备份工具,可以进行温备也可以进行热备,两者都是在数据库服务不停止的情况下进行的备份

对于myisam只能进行温备

  • myisam不支持事务,加锁也比较快,没有热备机制

对于InnoDB最好使用热备份

  • InnoDB支持事务,在生产环境中,使用热备加锁可能要很久,事务要从缓存中同步到日志文件,日志文件最后还要同步到数据库文件当中,即使锁上了也要等写完

  • 写锁优先级可能大于读锁

  • 而且如果启动了一个很大的事务的话,可能很久都锁不上

  • 若真的要使用热备,要等很久的时间加锁,可以SHOW ENGINE INNODB STATUS查看InnoDB写入状态,写入完成了才可dump

可以对InnoDB做热备的原因

  • 使用--single-transaction参数,可以开启一个直到备份结束的大事务,事务隔离级别默认为REPEATABLE-READ,所以大事务在整个读取过程当中数据是一致的,可以做到备份的过程中数据一直处于备份开始时的状态


过程:

一般使用mysqldump进行完全备份,之后再通过二进制日志的方式进行后续增量备份

对于myisam引擎

1:锁表

  • 备份的时候,可能有用户正往当中写数据,需加读锁 # FLUSH TABLES WITH READ LOCK; 

2:记录二进制日志位置

  • 当前二进制日志是哪一个以及事件所处的位置是哪里,这样做即时点恢复的时候就知道从哪个事件之后需要导入进行恢复,一般先做日志滚动 # FLUSH LOGS;  SHOW MASTER STATUS;

3:开始备份

4:备份完解锁 # UNLOCK TABLES;

5:增量备份

  • 直接复制二进制文件即可

其实可以在使用mysqldump命令时直接使用参数,不用进行上述1,2,4步骤

  • --lock-all-tables:锁定所有表

  • --master-data=2:以CHANGE MASTER TO的方式记录位置,默认被注释

  • --flush-logs:刷新日志

  • --all-databases:备份所有库

  • --databases db_name1,db_name2:备份多个库

  • 以上也是常用参数

对于InnoDB存储引擎

使用--single-transaction参数实现热备,无需使用-lock-all-tables加锁


例子:温备份+完全备份+增量备份(周期视情况而定)

备份:

1:完全备份

  • mysqldump -uroot -hlocalhost -p --all-databases --lock-all-tables --flush-logs --master-data=2 > /backup/all`date +%F`.sql

2:若备份周期为一天,增量备份

  • 先滚动日志 # FLUSH LOGS;

  • 直接在数据目录下cp -a当天的二进制日志

  • 或者最好使用mysqlbinlog命令重定向 # mysqlbinlog mysql-bin.000015 > /backup/increment`date +%F`.sql

3:根据周期进行备份

还原:

1:最严重的情况是数据库完全奔溃,这种情况需要数据库进行初始化

  • scripts/mysql_install_db --user=mysql --datadir/mysql/data/ #利用初始化脚本

2:导入之前的完全备份

  • mysql -uroot -hlocalhost -p < all2015-03-22.sql

3:导入增量备份

  • mysql -uroot -hlocalhost -p ...

4:当天的数据利用二进制日志即时点还原(一般二进制日志文件应存放在不同的存储中,保证安全性)

  • mysqlbinlog mysql-bin.000016 | mysql -uroot -hlocalhost -p


本文出自 “Call me Boxin” 博客,请务必保留此出处http://boxinknown.blog.51cto.com/10435935/1677038

mysqldump备份和还原应注意的点和过程

标签:数据库服务   数据库文件   二进制   mysqldump   

原文地址:http://boxinknown.blog.51cto.com/10435935/1677038

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