1.全量备份和增量备份

1.1全量备份

就是对现有的数据进行全部备份,之前做的备份均可舍弃,以最新的全备为基点。

a.全备所有数据库

Innodb引擎:

[root@leader mysql]#mysqldump -uroot -proot -F -A -B --events --single-transaction --master-data=1|gzip>/data/backup/mysql_backup_$(date +%F).sql.gz

Myisam引擎:

[root@leader mysql]#mysqldump -uroot -proot -F -A -B --events --lock-all-tables --master-data=1|gzip >/data/backup/mysql_backup_$(date +%F).sql.gz

参数说明:

-F参数:刷新binlog

-A参数:备份所有库

-B参数:备份数据的时候添加建库建表等语句

--events参数相当于-E:在输出中包含转储数据库的事件调度器事件

--master-data参数:如果参数值等于1,在备份文件中添加change master语句在主从同步change master的时候就不用制定binlog日志文件以及更新的位置,如果等于2则不会添加change master语句。

--single-transaction参数:用于Inode引擎的备份

--lock-all-tables参数:锁表,它针对于MyIsam引擎的备份。在这种情况下日志之刷新一次因为所有的表的都是锁着的(允许并发插入数据)。如果想让你的转储和日志刷新发生在同一时刻,应该将--lock-all-tables参数、--master-data参数和flush-logs(即-F参数)一起使用,对于Innode这样的事务表,单事务表市更好的选择,以为它根本不用锁表。

b.备份指定数据库

Innodb引擎:
[root@leader mysql]mysqldump -uroot -proot -F -B --events --single-transaction --master-data=1 test|gzip >/data/backup/mysql_backup_$(date +%F).sql.gz

Myisam引擎:
[root@leader mysql]mysqldump -uroot -proot -F -B --events --lock-all-tables --master-data=1 test|gzip >/data/backup/mysql_backup_$(date +%F).sql.gz

1.2 增量备份
增量备份的数据是从上次全量备份之后更新的数据,对mysql来说binlog日志文件存储着增量备份的数据。增量备份可以按天备份,第二天做全备了,理论上前一天的备份就没用了。一般我们主服务器的binlog日志文件保持七天(受my.cnf配置文件中expire_logs_days控制),备份服务器上增量备份一般保持180天。全量被份和增量备份分为两种情况,第一种情况就是按天备份一天做一次全量备份,每天零点之前做增量备份,零点之后做全量备份;第二种情况就是按天全备也可以按周全备,一周做一次全备每天做一次增量备份。

按天全备的优点:恢复时间短、维护成本低

缺点:占用空间多,占用系统资源多,经常锁表影响用户体验。

按周全备的优点:占用空间少,占用系统资源少用户体验好一些。

缺点:恢复麻烦维护正本高,时间长。

企业场景全备和增量的频率是怎么做的呢?

(1)中小公司,全量一般是每天一次,业务流量低谷执行全备,执行前需要锁表。

(2)单台数据库没有做主从同步,如何增量?用rsync(配合定时任务频率大点,或者inotify和主从复制)把所有binlog备份到远程服务器,尽量做主从复制。

rsync –avz /data/3306/mysql-bin.000* rsync_backup@192.168.1.116::backup –-password-file=/etc/rsync.password

(3)大公司周备,每周六00点一次全量,下周日-下周六00点前都是增量。

优点:节省备份时间,减小备份压力,缺点:增量的binlog文件副本太多,还原会很麻烦。

(4)一主多从,会有一个从库做备份,延迟同步。

Mysql的mysqldump备份什么时候派上用场?

(1)迁移或者升级数据库时。

(2)增加从库的时候,因为硬件或特殊异常情况,主库或从库宕机,主从可以切换,无需备份。把其中一个同步最快的切换为主库即可。

(3)人为的DDL、DML语句,主从库没办法了,所有库都会执行,此时需要备份。

(4)跨机房灾备,需备份拷贝走数据。

2.MySQL增量恢复必备条件
主库和从库开启binlog

[root@leader mysql]# egrep "\[mysqld]|log-bin" /etc/my.cnf
[mysqld]
log-bin = /var/log/mysql/mysql-bin.log
小结:增量恢复的条件:

存在一份全备数据和全备之后的某一时刻到出问题时刻的所有增量binlog文件备份。

3.全备即增量备份数据恢复思想

恢复思想就是先找到发生故障的原因,谁在什么时候做了什么操作,检查是不是这个操作导致数据库故障。之后尽量停止数据库对外访问,先备份0:00到十点更新的数据binlog日志文件,刷新binlog。第一步先恢复全备,第二步增量恢复0:00到10:00这个时间段的数据。

Mysql备份恢复方案解析的更多相关文章

  1. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  2. (4.5)mysql备份还原——深入解析二进制日志(1)binlog的3种工作模式与配置

    (4.5)mysql备份还原——深入解析二进制日志(binlog) 关键词:二进制日志,binlog日志 0.建议 (1)不建议随便去修改binlog格式(数据库级别) (2)binlog日志的清理 ...

  3. 中小型数据库 RMAN CATALOG 备份恢复方案(二)

    中小型数据库呈现的是数据库并发少,数据库容量小,版本功能受限以及N多单实例等特点.尽管如此,数据库的损失程度也会存在零丢失的情形.企业不愿意花太多的钱又要保证数据库的可靠稳定,可是苦煞了我这些搞DB的 ...

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

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

  5. MySQL 系列(四) 主从复制、读写分离、模拟宕机、备份恢复方案生产环境实战

    本章内容: 主从复制 简介原理 备份主库及恢复从库,配置从库生效 读写分离 如果主宕机了,怎么办? 双主的情况 MySQL 备份及恢复方案 备份单个及多个数据库 mysqldump 的常用参数 如何增 ...

  6. MySQL实时在线备份恢复方案

    开源Linux 长按二维码加关注~ 上一篇:2020年MySQL数据库面试题总结 快照和复制技术的结合可以保证我们得到一个实时的在线MySQL备份解决方案. 当主库发生误操作时,只需要恢复备库上的快照 ...

  7. 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 ...

  8. Elasticsearch系列---生产数据备份恢复方案

    前言 生产环境中运行的组件,只要有数据存储,定时备份.灾难恢复是必修课,mysql数据库的备份方案已经非常成熟,Elasticsearch也同样有成熟的数据备份.恢复方案,我们来了解一下. 概要 本篇 ...

  9. 中小型数据库 RMAN CATALOG 备份恢复方案(一)

    对于数据库的稳定性,高可用,跨平台以及海量数据库的处理,Oracle 数据库通常是大型数据库和大企业的首选.尽管如此,仍然不乏很多中小企业想要品尝一下Oracle腥味,因此在Oracle环境中也有不少 ...

随机推荐

  1. (三十)JSP标签之自定义标签

    创建一个类,引入外部jsp-api.jar包(在tomcat 下lib包里有),这个类继承SimpleTagSupport 重写doTag()方法. jspprojec包下的helloTag类: 1 ...

  2. (四)resultMap、sql片段与动态SQL

    一.resultMap 1.1 为什么要用resultMap resultType:指定输出结果的类型(pojo.简单类型.hashmap),将SQL查询结果映射为Java对象. 使用resultTy ...

  3. Spring IOC原理分析

    IOC IOC(Inversion of Control)控制反转:所谓的控制反转,就是把原先需要我们代码自己实现对象的创建和依赖,反转给容器来实现.那么必然Spring需要创建一个容器,同时需要创建 ...

  4. Sharing is only supported for boot loader classes because bootstrap classpath has been appended

    在idea里面运行项目,terminal里面报“Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boo ...

  5. Bind Mounts and File System Mount Order

         When you use the bind option of the mount command, you must be sure that the file systems are m ...

  6. k2系列-开发篇

    上一篇讲到K2安装的具体操作,本篇我们具体讲一下在VS环境下如何开发K2工作流. 常用工具控件说明: 节点关联线:流程各节点之间的关联线 客户端节点:流程的基本元素 服务器端节点:流程的完成标识节点 ...

  7. 微信小程序开发(十二)Promise将异步改为同步

    // utils/utils.js /** * requestPromise用于将wx.request改写成Promise方式 * @param:{string} myUrl 接口地址 * @retu ...

  8. 在linux中安装VM tools

    step 1:虚拟机选择安装 Vmware tools ,在DVD中将.tar.gz的文件包拖到桌面中: step 2:打开终端,切换到桌面,cd /home/whoami/桌面 cd /home/u ...

  9. python获取本机的IP

    转载:https://www.cnblogs.com/whu-2017/p/8986842.html 方法一: 通常使用socket.gethostbyname()方法即可获取本机IP地址,但有时候获 ...

  10. git ls-files 列出被修改或者被删除的文件

    git ls-files 列出被修改或者被删除的文件 git ls-files -m -d