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=2 --routines --events --quick --single-transaction > 10.6.29.129.sql
--master-data=2 表示需要记录导出数据当时主库的binlog位置
--routines 表示导出存储过程(可视实际库表决定是否使用)
--events 表示导出事件(可根据实际库表决定是否使用)
--quick 表示让服务端不将结果集一次发送,而是分批发送,可减轻压力
另外,加上--master-data后默认是锁库的,可确保数据一致性,即导出数据和binlog位置的一致。
--single-transaction 取消锁库并利用Innodb事务特性确保数据一致,但对MyISAM引擎不能确保一致性(即备份期间的写入,仍有可能被导出到备份文件中)

  

3:备份部分库

mysqldump -h10.6.29.129 -uroot -p --master-data=2 --routines –events --quick --single-transaction --databases db1 db2 db3 > 20140925_all_db_10.6.29.1.sql
(将需要导出的库名,依次填写在databases参数后) 备份指定database的部分表—— mysqldump -h10.6.29.129 -uroot –p --master-data=2 --routines –events --quick --single-transaction mydb table1 table2 >20140925_all_db_10.6.29.129.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.sql

mysqlbinlog 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 备份恢复的更多相关文章

  1. MySQL 备份恢复(导入导出)单个 innodb表

    MySQL 备份恢复单个innodb表呢,对于这种恢复我们我们很多朋友都不怎么了解了,下面一起来看一篇关于MySQL 备份恢复单个innodb表的教程 在实际环境中,时不时需要备份恢复单个或多个表(注 ...

  2. MySQL备份恢复-mysqldump原理

    +++++++++++++++++++++++++++++++++++++++++++标题:mysqldump对MySQL数据库备份恢复原理时间:2019年2月23日内容:mysqldump工具重点: ...

  3. [svc]mysql备份恢复及常用命令

    如何实现mysql读写分离 1.通过程序实现读写分类(性能 效率最佳) php和java都可以通过设置多个连接文件轻松实现对db的读写分离,即当select时,就去连读库的连接文件,当update,i ...

  4. mysql备份恢复详解

    前言 为什么需要备份数据? 数据的备份类型 MySQL备份数据的方式 备份需要考虑的问题 设计合适的备份策略 实战演练 使用cp进行备份 使用mysqldump+复制BINARY LOG备份 使用lv ...

  5. (转)解锁MySQL备份恢复的4种正确姿势

    本文根据DBAplus社群第104期线上分享整理而成. 原文:http://dbaplus.cn/news-11-1267-1.html 讲师介绍   冯帅 点融网高级DBA 获有Oracle OCM ...

  6. MySQL备份恢复全实战

    一. 简介 1. 增量备份 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味着,第一次增量 备份的对象是进行全备后所产生的增加和修改的文件; ...

  7. Mysql备份恢复方案解析

    1.全量备份和增量备份 1.1全量备份 就是对现有的数据进行全部备份,之前做的备份均可舍弃,以最新的全备为基点. a.全备所有数据库 Innodb引擎: [root@leader mysql]#mys ...

  8. mysql导出csv/sql/newTable/txt的方法,mysql的导入txt/sql方法...mysql备份恢复mysqlhotcopy、二进制日志binlog、直接备份文件、备份策略、灾难恢复.....................................................

    mysql备份表结构和数据 方法一. Create table new_table_nam备份到新表:MYSQL不支持: Select * Into new_table_name from old_t ...

  9. mysql备份恢复

    备份命令: mysqldump -u root -p --opt 数据库名 > /data/数据库文件名.sql 恢复命令: mysql -u root -p 数据库名</data/恢复的 ...

  10. Linux下mysql备份 恢复

    转载自http://blog.chinaunix.net/uid-20577907-id-161611.html 比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldum ...

随机推荐

  1. ylb:子查询(嵌套子查询)和子查询(相关子查询)

    ylbtech-SQL Server:SQL Server-子查询(嵌套子查询)和子查询(相关子查询) SQL Server 子查询(嵌套子查询)和子查询(相关子查询). 1,ylb:1,子查询(嵌套 ...

  2. Linux常用文件管理命令

    Command Description cat filename 查看文件内容. cd dirname 改变所在目录. cp file1 file2 复制文件或目录. file filename 查看 ...

  3. javascript的变态位运算

    javascript的变态位运算 var a = "10" | 0; alert(a); alert (typeof a);结果为10,number. 这就是说这条语句可以将字符串 ...

  4. Cocos2d-android (04) 执行多个动作

    先后.同时执行多个动作及动作序列执行结束后的事件 import org.cocos2d.actions.instant.CCCallFunc; import org.cocos2d.actions.i ...

  5. python程序中自启动appium服务

    普通启动Appium服务方法:      打开cmd,运行命令: #>appium -a 127.0.0.1 -p 4723 当程序输出如上图信息的时候,表示appium启动成功,此时便可以运行 ...

  6. @Html.Raw()

    asp.net mvc中把html字符串以html效果输出来, @string变更输出的是HTML代码, 如果想以HTML标签效果输出来可以用函数@Html.Raw(str) 输出来的就是网效果了, ...

  7. 更改VS的运行主窗体

    Program.cs中Application.EnableVisualStyles();              Application.SetCompatibleTextRenderingDefa ...

  8. Mysql报错:1172 - Result consisted of more than one row

    执行mysql函数时报错:1172 - Result consisted of more than one row 函数语句中select into语句中WHERE account = userNam ...

  9. LeetCode(7) - Reverse Integer

    题目的要求就是要反转一个Integer,例如输入123,则输出321,这一题比较tricky的地方就是它有可能越界,就是说1234567899,反过来是9987654321是一个越界的Integer, ...

  10. 转载-SQL中的where条件,在数据库中提取与应用浅析

    1        问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语 ...