首页 > 代码库 > MySQL 备份恢复
MySQL 备份恢复
1:备份常用工具:
mysqldump, xtrabackup
mysqldump: 原生数据导出工具,以sql的形式导出保存
xtrabackup: percona团队提供的备份工具,基于文件系统的备份
2:备份全库:
mysqldump -h10.6.29.1 -uroot -p --all-databases > 20140925_all_db_10.6.29.1.sql
mysqldump是直接屏幕输出,所以重定向后即可得到对应的备份文件。存在问题:1:会锁全库,影响业务2:有可能缺失常规表以外的内容,如存储过程3:未记录binlog同步点,不能用于主从同步以及利用binlog增量恢复4:对于数据集较大的表,可能会吃掉server端大量内存
mysqldump -h10.6.29.1 -uroot -p --all-databases --master-data=http://www.mamicode.com/2 --routines --events --quick --single-transaction > 10.6.29.129.sql>
--master-data=http://www.mamicode.com/2 表示需要记录导出数据当时主库的binlog位置>
3:备份部分库
mysqldump -h10.6.29.129 -uroot -p --master-data=http://www.mamicode.com/2 --routines –events --quick --single-transaction --databases db1 db2 db3 > 20140925_all_db_10.6.29.1.sql>(先写明指定的database,然后紧跟需要备份的表名)
4:数据恢复
Mysql -h10.6.29.129 -uroot -p < 20140925_all_db_10.6.29.129.sql(简单易行,但要确保导入的库表,不会同时有业务在写入)
5:mysqlbinlog对日志进行解析
mysqlbinlog mysql.000002 > binlog_new.000002
mysqlbinlog mysql.000002 --start-position=549212174 --stop-datetime=‘2014-9-10 10:00‘ > binlog_new.000002.sql
--start-position 表示从binlog的那个位置开始解析,而这个起始点可以通过备份时的master-data参数得到--stop-datetime 表示只解析到哪个时间点的语句为止,可用于回档到某个指定时间点--start-datetime 从那个时间点开始,但通常还是尽量使用start-position,更为准确--verbose, -v 使用方式:-vv, -vvv,常用于ROW模式的详细输出
mysqlbinlog mysql.000005 > 5.sqlmysqlbinlog mysql.000005 -vv > 5-vv.sql
6:恢复单个表
1:拥有对应单表备份文件,直接导入2:使用mysqlbinlog解析binlog文件,再从得到的完整文件中获取对应表的语句,redo应用到数据库
如何过滤仅得到想要的语句?由于binlog里得到的语句数量通常相当庞大,可以借助最简单的grep的方式。grep -B3 -w tbl1 binlog.xxx.sql | egrep -v ‘^--$‘ > tbl1.sql
MySQL 备份恢复
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。