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. HDU 5137 How Many Maos Does the Guanxi Worth

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 512000/5120 ...

  2. 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)(整理)

    BSD开源协议(original  BSD license.FreeBSD  license.Original  BSD license) BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可 ...

  3. [WebService]之Schema

    schema入门 1:schema出现的目的是通过一个更加合理的方式来编写xml文件的限制(以XML语法的方式) 2:schema可以使用命名空间来支持多个名称相同的元素 3:schema可以很好的的 ...

  4. hadoop2.2伪分布安装加2.2源码编译

    配置linux基本环境: --> java.ip.hostname.hosts.iptables.chkconfig.ssh环境配置 hadoop2.2安装在linux64位机器上,需要对源码进 ...

  5. Hadoop系列(二)hadoop2.2.0伪分布式安装

    一.环境配置 安装虚拟机vmware,并在该虚拟机机中安装CentOS 6.4: 修改hostname(修改配置文件/etc/sysconfig/network中的HOSTNAME=hadoop),修 ...

  6. *nix高手站点

    http://linux.die.net/man/7/ip http://www.neuma.com/  cm+企业开发生命周期管理 http://book.2cto.com/201307/27394 ...

  7. 查看MySql中每个IP的连接数

    要统计数据库的连接数,我们通常情况下是统计总数,没有细分到每个IP上.现在要监控每个IP的连接数,实现方式如下: ) as ip , count(*) from information_schema. ...

  8. E3-1230和E3-1230 V2有多神?

    最近追E3-1230,枪E3-1230的人那叫一个多啊,都被捧成神了,我也来说说对E3-1230的看法.同档次的装机方案,我更倾向i5 2320/2500K/3570K. 首 先比较两个U的规格吧.E ...

  9. [iOS微博项目 - 2.5] - 封装授权和用户信息读写业务

    github: https://github.com/hellovoidworld/HVWWeibo   A.封装授权业务 1.把app的授权信息移动到HVWWeibo-Prefix.pch中作为公共 ...

  10. [转]Android在初始化时弹出popwindow的方法 .

    转自:http://blog.csdn.net/sxsboat/article/details/7340759 留个人备用0.0 Android中在onCreate()时弹出popwindow,很多人 ...