Mysql备份恢复方案解析
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备份恢复方案解析的更多相关文章
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- (4.5)mysql备份还原——深入解析二进制日志(1)binlog的3种工作模式与配置
(4.5)mysql备份还原——深入解析二进制日志(binlog) 关键词:二进制日志,binlog日志 0.建议 (1)不建议随便去修改binlog格式(数据库级别) (2)binlog日志的清理 ...
- 中小型数据库 RMAN CATALOG 备份恢复方案(二)
中小型数据库呈现的是数据库并发少,数据库容量小,版本功能受限以及N多单实例等特点.尽管如此,数据库的损失程度也会存在零丢失的情形.企业不愿意花太多的钱又要保证数据库的可靠稳定,可是苦煞了我这些搞DB的 ...
- MySQL 备份恢复(导入导出)单个 innodb表
MySQL 备份恢复单个innodb表呢,对于这种恢复我们我们很多朋友都不怎么了解了,下面一起来看一篇关于MySQL 备份恢复单个innodb表的教程 在实际环境中,时不时需要备份恢复单个或多个表(注 ...
- MySQL 系列(四) 主从复制、读写分离、模拟宕机、备份恢复方案生产环境实战
本章内容: 主从复制 简介原理 备份主库及恢复从库,配置从库生效 读写分离 如果主宕机了,怎么办? 双主的情况 MySQL 备份及恢复方案 备份单个及多个数据库 mysqldump 的常用参数 如何增 ...
- MySQL实时在线备份恢复方案
开源Linux 长按二维码加关注~ 上一篇:2020年MySQL数据库面试题总结 快照和复制技术的结合可以保证我们得到一个实时的在线MySQL备份解决方案. 当主库发生误操作时,只需要恢复备库上的快照 ...
- 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 ...
- Elasticsearch系列---生产数据备份恢复方案
前言 生产环境中运行的组件,只要有数据存储,定时备份.灾难恢复是必修课,mysql数据库的备份方案已经非常成熟,Elasticsearch也同样有成熟的数据备份.恢复方案,我们来了解一下. 概要 本篇 ...
- 中小型数据库 RMAN CATALOG 备份恢复方案(一)
对于数据库的稳定性,高可用,跨平台以及海量数据库的处理,Oracle 数据库通常是大型数据库和大企业的首选.尽管如此,仍然不乏很多中小企业想要品尝一下Oracle腥味,因此在Oracle环境中也有不少 ...
随机推荐
- HTTP协议探究(六):H2帧详解和HTTP优化
一 复习与目标 1 复习 HTTP1.1存在的问题 HTTP2.0要兼容HTTP1.1 HTTP2.0的重要概念 分帧层 二进制:流 消息 帧 流的状态.优先级和并发 流量控制 服务器推送 首部压缩 ...
- C++虚函数【Java有虚函数吗?】
1,简单介绍 定义在基类中的函数,子类必须对其进行覆写![必须对其进行覆写?!]——Java中的接口.Abstract方法中的抽象类也有这样的要求. C++中定义: virtual void deal ...
- 使用layer.open 父页面获取子页面输入文本框中的值
$(function () { $("#confirmpassword").click(function () { var pwd = $("#txtPwd") ...
- [APB VNext 笔记] UI
一直想给我做的服务写UI.但苦于现在ABPVNext框架对SPA支持不好.只好先放弃VUE.先弄个UI在说.ABPVNext中的框架都是用Helper封装好的Label.不知道怎么使用,于是翻源代码. ...
- python学习之掷骰子游戏
""" 通过学习的python知识,写一个简单的python小游戏 游戏名字:掷骰子比大小 游戏规则: 1.玩家可以选择玩掷几个骰子游戏(默认3个) 2.玩家可以设置双方 ...
- curl: (7) couldn't connect to host 解决方法
使用curl命令访问网站时报错: [root@bqh-119 ~]# curl -I www.test.com curl: (7) couldn't connect to host [root@bqh ...
- php使用播放插件播放m3u8,mp4,flv格式的视频
一.这里我主要是播放m3u8的视频,有两款比较好的插件,swise和ckpalyer,我介绍的是ckplayer,这是在pc端播放的,并且是需要flash支持的,不过现在的最新浏览器都是默认安装的 二 ...
- 阿里Java架构师打包 FatJar 方法小结
在函数计算(Aliyun FC)中发布一个 Java 函数,往往需要将函数打包成一个 all-in-one 的 zip 包或者 jar 包.Java 中这种打包 all-in-one 的技术常称之为 ...
- 【SQL server】SQL server基础(二)
一.一些重要的SQL命令 SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 INSERT INTO - 向数据库中插入新数据 CREAT ...
- 实现LAMP架构
LAMP介绍 LAM(M)P: L: linux A: apache (httpd) M: mysql, mariadb M:memcached P: php, perl, python WEB资源类 ...