由于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 数据库备份方案及策略的更多相关文章

  1. 原创|高逼格企业级MySQL数据库备份方案,原来是这样....

    很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...

  2. 高逼格企业级MySQL数据库备份方案,原来是这样....

    很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...

  3. mysql:数据库备份方案

    1. 数据库备份方案     1)没备份,跑路~     2)全量备份+增量备份 如果不小心“删库”,可以这么恢复: a. 将最近一次全量备份的全库找到,拷贝回来(文件一般比较大),解压,应用: b. ...

  4. MySQL数据库备份还原(基于binlog的增量备份)

    MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份      增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...

  5. MySQL常见备份方案

    MySQL常见备份方案有以下三种: mysqldump + binlog lvm + binlog xtrabackup 本例为方便演示,数据库里面数据为空.下面开始动手 mkdir /opt/bac ...

  6. MySQL数据库备份还原

    本文以CentOS 7 yum安装的MariaDB-server5.5为例,说明MySQL的几种 备份还原方式 将服务器A(192.168.1.100)上的数据库备份,还原到B(192.168.1.2 ...

  7. MySQL数据库备份的4种方式

    MySQL备份的4种方式 总结: 备份方法 备份速度 恢复速度 便捷性 功能 一般用于 cp 快 快 一般.灵活性低 很弱 少量数据备份 mysqldump 慢 慢 一般.可无视存储引擎的差异 一般 ...

  8. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  9. TODO:MongoDB MySQL数据库备份

    TODO:MongoDB MySQL数据库备份 1. MongoDB使用命令备份 mongodump进行整个数据库备份,主要用到的命令参数: -d 要备份的数据库 -o 输出的路径 ./mongodu ...

随机推荐

  1. Servlet的API(二)

    web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象和代表响应的response对象.request和response对象既然代表请求和响应,那我们获取 ...

  2. 利用nginx搭建tomcat集群

    1.tomcat集群 利用nginx对请求进行分流,将请求平均的分给不同的tomcat去处理,减少单个tomcat的负载量,提高tomcat的响应速度. 2.创建多个tomcat服务器(同一个服务器上 ...

  3. IMSDroid问题集

    1.IMSDroid切换摄像头后的接收方横屏显示.事实上非常多种情况下都会突然发现就横屏了.解决的方法就是切换摄像头时同一时候切换横竖屏显示 2.IMSDroid掉音问题:IMSDroid通话几分钟后 ...

  4. 在Ubuntu 16.04下安装 virtualbox 5.2

        sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian xenial contrib" ...

  5. iOS collectionView添加类似tableView的tableHeaderView

    我们都知道UITableview有一个tableHeaderFooterView,这样我们在布局页面的时候,如果顶部有轮播图,可以直接把轮播图设置为tableView的HeaderFooterView ...

  6. ubuntu安装源

    1.编辑sources.list文件 sudo vi /etc/apt/sources.list 添加以下安装源 #台湾源 deb http://tw.archive.ubuntu.com/ubunt ...

  7. EasyUI分页(前台分页和后台分页)

    整理一下以前的总结: 分页包括前台分页和后台分页两种,针对数据量比较小的,比如说单位,角色等,可以使用前台分页,而针对日志文件这些,需要后台分页. 先说说前台分页吧: function pagerFi ...

  8. XtraBackup备份mysql5.1.73

    一.基础介绍 mysql5.1在源码中配备了两个版本的innodb存储引擎源码:innobase和innodb_plugin,编译安装的时候可以通过参数--with-plugins=innobase, ...

  9. 【iOS开发-80】Quartz2D绘图简介:直线/圆形/椭圆/方形以及上下文栈管理CGContextSaveGState/CGContextRestoreGState

    本文转载至 http://blog.csdn.net/weisubao/article/details/41282457 - (void)drawRect:(CGRect)rect { //获得当前上 ...

  10. python 基础 9.7 创建表

    一. 创建表 #/usr/bin/python #-*- coding:utf-8 -*- #@Time   :2017/11/22 18:05 #@Auther :liuzhenchuan #@Fi ...