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,千万不要忽视数据备份和恢复测试的重要性。要知道,有时,备份可能拯救我们的命!!!切记切记。

时间: 2024-08-08 22:24:21

mysql 数据库备份方案及策略的相关文章

xtrabackup进行MySQL数据库备份/还原

http://hongge.blog.51cto.com/ 使用xtrabackup进行MySQL数据库备份 前面介绍mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了. 这时就需要一种好用又高效的工具,xtrabackup就是其中一款,号称免费版的InnoDB HotBackup. Xtrabackup实现是物理备份,而且是物理热备 目前主流的有两个工

浅谈MySQL数据库备份的几种方法

mysql常见的备份方式有:mysqldump.mysqlhotcopy.BACKUP TABLE .SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件.MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用.Innodb 所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是拷贝数据文件.备份 binlog,或者用 

mysql数据库备份方法总结

今天有点时间,自己总结下mysql备份的几种方法以备查阅! 生产环境中数据无疑是一个公司的命脉,作为一个运维工程师无法保证企业数据的安全,那么是一个不合格的工程师.我们如何保证数据不丢失.或者丢失后快速恢复呢?下面介绍mysql数据库备份和恢复方法. MYSQL基础知识总结 1.为什么需要备份数据? 生成环境中我们的数据库可能会遭遇各种各样的不测导致数据丢失,大概有几种情况(硬件故障.软件故障.自然灾害.黑客攻击.误操作(占比最大))所以,为了在数据丢失后能恢复数据,我们就必须定期备份数据,备份

MySQL常见备份方案

MySQL常见备份方案有以下三种: mysqldump + binlog lvm + binlog xtrabackup 本例为方便演示,数据库里面数据为空.下面开始动手 mkdir /opt/backup #创建备份目录 mkdir -p /data/3309/{data,binlog} cd /usr/local/mysql/ scripts/mysql_install_db --user=mysql --datadir=/data/3309/data/ --basedir=/usr/loc

MySQL数据库备份和恢复

目录 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 备份注意要点 还原要点 备份类型: 备份时需要考虑的因素 备份什么 备份工具 冷备份 cp tar mysqldump备份工具 模拟数据库崩溃,最大限度还原数据 mysqldump的分库备份 mysqldump的MyISAM存储引擎相关的备份选项: mysqldump的InnoDB存储引擎相关的备份选项: 生产环境实战备份策略 将误删除了的某个表进行还原 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 灾难恢复:硬件故障.软件

mysql数据库备份小记录

mysql数据库备份是每个数据管理员最关心的事情了,它能在关键时候帮助我们.建议大家在备份数据库时,将表数据,表空间,触发器,函数,视图什么的分开备份,这样既可以节省备份时间,在恢复数据时比较方便. 采取的备份方式是,使用 shell 结合 crontab 来操作 ,在数据库 比较多的情况下 ,建议 每个脚本中 备份5到6个库 简单举个例子 mysql-adson 数据库服务器中,有3个数据库如下:adson_inter,adson_adm,adson_hi 采取的备份方式是 表数据库,表空间,

MySQL数据库备份:完全备份+增量备份

MySQL数据库备份:完全备份+增量备份 ************************************************************************************** 计划任务: crontab -e  -u root 00 6  * * 1  /shell/mysqlbak.sh &> /dev/null 00 23  * * 2-7  /shell/mysqladd.sh &> /dev/null **************

【转】10 个MySQL数据库备份教程推荐

10 个MySQL数据库备份教程推荐 MySQL是动态网站开发中最著名的开源数据库系统.如果你在网站中使用了MySQL,那么你应该定期备份你的数据以防止它丢失. 本文将介绍自动或手动备份MySQL数据库的10个教程,看看有没有最适合你的方法. 1.Backing Up Using MySQLDump(利用MySQLDump备份MySQL数据库) 可以使用MySQL自带的mysqldump工具来备份数据.在mysqldump中提供了许多的示例,包括如何将数据库备份到一个文件.另一个服务器,甚至gz

Ubuntu Server下MySql数据库备份脚本代码

明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar.gz的压缩文件格式(2012_04_11是指备份执行时当天的日期), 最后只保留最近7天的备份. 实现步骤: 1.创建保存备份文件的目录:/home/mysql_datacd /home #进入目录mkdir mysql_data #创建目录2.创建备份脚本文件:/home/mysql_data/m