mysql mydump还原_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值