mysql 数据库备份方案及策略
由于mysql存在多种数据库备份方式,而且各有利弊,对于我们初学者来说,选择合适的备份方式确实有些困难。个人觉得,首先要基于公司的需求,考虑能够容忍丢失多少数据、花多少人力时间成本等,这是我们制定备份方案的依据,同时制定出来的方案要可执行,要执行,不能把方案当作纸上谈兵。下面我把我们实际的备份方案整理出来供大家参考交流。
作为数据安全的一个重要内容——数据备份的重要性却往往被人们所忽视。只要发生数据传输、数据存储和数据交换,就有可能产生数据故障。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,有时造成的损失是无法弥补与估量的。结合我们公司线上业务的实际情况,来说说我们的备份方案,当前主要采取全备+binlog备份方式。其中全备分为逻辑备份+物理备份,同时主从复制也作为一种备份的方式存在,从而最大程度降低数据故障带来的风险。
一 数据备份部分
1 逻辑备份
- 应用场景
逻辑备份,我们主要用在当数据量较小时,数据库出现数据故障,对于恢复时间要求不高;搭建主从环境,搭建测试环境及备用库等方面。
- 备份时间及地点
每日凌晨3:10在从库上备份,备份文件存放在从库上的/data/backup/fullbackup,当然如果有充足的机器,更安全的方式是备份到远程服务器。
- 备份方式
采用mysqldump进行全库备份,通过定时任务,定时执行shell备份脚本。这里就不提供了。
2 物理备份
- 应用场景
主要应对要求恢复时间较高;数据量比较大;
- 备份时间及地点
每周一凌晨3:10在主库上备份。备份文件存放远程服务器目录下
- 备份方式
采用percona的社区工具innobackupex,该工具可以在线热备,不影响线上的业务。
以上两种方式的备份只能恢复某段时间的数据,对于按照时间点的恢复是无能为力的,那怎么办呢?binlog日志,是的,我们采取的是实时同步binlog日志到远程服务器上,这样理论上是可以恢复到任意时间点的。
3 binlog备份
- 应用场景
对于一些由于错误操作等造成数据丢失错误的,需要按照时间点进行还原的情况下。
- 备份时间及地点
备份服务器实时将主库上binlog同步到远程服务器上。
- 备份方式
mysqlbinlog工具进行日志拉取,shell脚本如下:
mysqlbinlog --read-from-remote-server --host=1.1.1.1 --port=3306 --user="backup" --password="backup" --raw --stop-never mysql-bin.000840 --result-file=/data/backup/binlog/
经过以上三种结合的备份方式,基本上可以满足在数据异常丢失情况下,恢复到正常状态。
4 主从复制
- 应用场景
主要应用于读写分离,故障转移的情况下
- 备份时间及地点
几乎可以认为是同步进行数据的复制
- 备份方式
采用mysql提供的复制技术
对于主从复制,如果用于备库的话,最好是让sql_thread执行慢一段时间,可以是1天。这个结合实际情况,自己选择。
二 数据恢复与测试部分
备份文件有了之后还需要对其定期的进行恢复测试,不然可能是白忙一场。因为很多情况下,有些备份文件可能已经损坏。当我们遇到数据丢失故障时,在紧急关头,竟然发现备份的文件无法恢复或者数据一致性和完整性没有达到要求,如果我们定期的对备份文件进行恢复测试,这种悲剧可能就不会发生。
1 恢复时间及地点
每周进行一次恢复测试,主要在测试机上进行
2 恢复方式
模拟某个时间点主机数据全部丢失,要求恢复到丢失时间点的所有数据,先进行全备恢复,然后根据binlog恢复到最近时间点。
作为一名DBA,千万不要忽视数据备份和恢复测试的重要性。要知道,有时,备份可能拯救我们的命!!!切记切记。
mysql 数据库备份方案及策略的更多相关文章
- 原创|高逼格企业级MySQL数据库备份方案,原来是这样....
很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...
- 高逼格企业级MySQL数据库备份方案,原来是这样....
很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...
- mysql:数据库备份方案
1. 数据库备份方案 1)没备份,跑路~ 2)全量备份+增量备份 如果不小心“删库”,可以这么恢复: a. 将最近一次全量备份的全库找到,拷贝回来(文件一般比较大),解压,应用: b. ...
- MySQL数据库备份还原(基于binlog的增量备份)
MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份 增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...
- MySQL常见备份方案
MySQL常见备份方案有以下三种: mysqldump + binlog lvm + binlog xtrabackup 本例为方便演示,数据库里面数据为空.下面开始动手 mkdir /opt/bac ...
- MySQL数据库备份还原
本文以CentOS 7 yum安装的MariaDB-server5.5为例,说明MySQL的几种 备份还原方式 将服务器A(192.168.1.100)上的数据库备份,还原到B(192.168.1.2 ...
- MySQL数据库备份的4种方式
MySQL备份的4种方式 总结: 备份方法 备份速度 恢复速度 便捷性 功能 一般用于 cp 快 快 一般.灵活性低 很弱 少量数据备份 mysqldump 慢 慢 一般.可无视存储引擎的差异 一般 ...
- Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...
- TODO:MongoDB MySQL数据库备份
TODO:MongoDB MySQL数据库备份 1. MongoDB使用命令备份 mongodump进行整个数据库备份,主要用到的命令参数: -d 要备份的数据库 -o 输出的路径 ./mongodu ...
随机推荐
- zabbix监控端口
使用zabbix自带key监控进程与端口 每个公司都有自己的程序,自己的进程名与端口监听,对于nagios来说,这些都经常需要自己去写插件,但是zabbix不需要,它自己就有监控进程与端口的key. ...
- 两个页面相同js方法兼容
1. a.js页面 //Js获取Url参数 function request(paras) { var url = location.href; var paraString = url.substr ...
- Ubuntu下安装配置JDK,Tomcat,MySql
jdk安装配置 下载jdk-6u45-linux-x64.bin 切换到root用户su root 切换目录,新建文件夹,复制文件cd /usr mkdir javacd javacp 路径 ...
- JFinal中json的使用
之前Java开发一直使用的是经典的ssh,去年接触了jfinal,觉得jfinal的魅力非常之大,让我无法自拔,现在还深深地陷在其中. 简单的介绍一下jfinal,jfinal短小精悍,让java有了 ...
- 网络启动并安装Debian
网络启动(PXEBoot)并安装Debian的官方文档在这里,不过官方文档有点冗长,我这里假设已经有一台安装好Debian,需要网络安装另一台(这台可以是虚拟机,通过ISO文件等等方式安装的).PXE ...
- 在Ubuntu下利用Eclipse调试FFmpeg
[编辑]第一步:准备编译环境 .tar.bz2 -2245/ ./configure -linux-i586.tar.gz 解压后得到jre1.7.0_17目录 最后通过java -version检查 ...
- linux VI模式下批量修改文件内容
1. :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky 2. ...
- 002android初级篇之ViewPager及PagerSlidingTabStrip listview的使用
002android初级篇之ViewPager及PagerSlidingTabStrip listview的使用 ViewPager ViewPager类直接继承了ViewGroup类,所有它是一个容 ...
- 关于使用eclipse开发最小运行组件包
有的时候向用eclipse组件,但是其中好多东西是相互关联的,如果在eclipse上做二次开发固然可以,但是有的时候想要的只不过是一个可以运行的架包而已,所以不必要那么多东西. 下面是我使用eclip ...
- onCreate中获得控件的大小
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setC ...