一份好的备份方案无非包括以下几点:

  • 为什么需要备份?
  • 备份的方式有哪些?
  • 某几种备份方式的区别在哪?
  • 备份实战操作概述
  • 恢复实战操作概述
  • 其它备注信息

那么,此文将从以上几个角度,结合一些实际的实战经验,分步阐述一个完整的备份方案到底是怎么样构成的。需要学习更多Mysql数据库相关的知识,可以在公众号:民工哥技术之路的后台回复「MySQL」即可获取一份最全的MySQL数据库学习指南。

为什么需要数据库备份?

很多人,一看这标题,肯定张口就会答,这不是废话么。不备份故障了怎么办?跑路吗?数据被沙雕开发(不许喷)误删了怎么办?背锅吗?
当然,大家都知道备份的重要性与必要性。
1、保证数据安全与完整
企业的数据安全应该来说是企业的命脉,一旦丢失或造成损坏,轻则损失客户与金钱,重则倒闭(已经有前例在)。
备份的目的:为了保证数据在被人为失误、操作不当、蓄意等情况下删除或损坏后,能及时、有效的进行恢复并不会很大程度上影响到业务运行。
2、为业务提供不间断服务
实际生产环境对数据库的要求,首先就是具备7×24×365不间断服务的能力,这也是一定要备份数据库的其中原因之一。

数据库的备份方式

常用的备份方式包括以下:

  • 逻辑备份
  • 物理备份

1、逻辑备份
逻辑备份其实就是利用MySQL数据库自带的mysqldump命令,或者使用第三方的工具,然后把数据库里的数据以SQL语句的方式导出成文件的形式。在需要恢复数据时,通过使用相关的命令(如:source )将备份文件里的SQL语句提取出来重新在数据库中执行一遍,从而达到恢复数据的目的。
实例如下:

mysqldump -A -B --single-transaction >/server/backup/mysql_$(date +%F).sql

一般备份时都会进行压缩处理,以节省磁盘空间,如下

mysqldump -A -B --single-transaction |gzip>/server/backup/mysql_$(date +%F).sql.gz

恢复操作

cd /server/backup/
gzip -o mysql_$(date +%F).sql.gzmysql -uroot -pMyadmin -h mysqldb.mingongge.com> source /server/backup/mysql_$(date +%F).sql

逻辑备份的优点与使用场景
优点:简单,易操作,自带工具方便、可靠。
使用场景:数据库数据量不大的情况可以使用,数据量比较大(超过20G左右)时备份速度比较慢,一定程度上还会影响数据库本身的性能。

2、物理备份
物理备份就是利用命令(如cp、tar、scp等)直接将数据库的存储数据文件复制一份或多份,分别存放在其它目录,以达到备份的效果。
这种备份方式,由于在备份时数据库还会存在数据写入的情况,一定程度上会造成数据丢失的可能性。在进行数据恢复时,需要注意新安装的数据的目录路径、版本、配置等与原数据要保持高度一致,否则同样也会有问题。
所以,这种物理备份方式,常常需要在停机状态下进行,一般对实际生产中的数据库不太可取。因此,此方式比较适用于数据库物理迁移,这种场景下这种方式比较高效率。

物理备份的优点及使用场景
优点:速度快,效率高。
场景:可用于停机维护及数据库物理迁移场景中。
实际生产环境中,具体使用哪种方式,就需要看需求与应用场景所定。

全量与增量备份概述
在介绍完备份方式之后,再来介绍一下,增量与全量备份这两个概念。
什么是全量备份?
全量备份:就是将数据库中的所有数据,或者是某一个特定的库里的所有数据,一次全部备份下来。

备份数据库中所有数据

mysqldump -A -B --single-transaction |gzip>/server/backup/All_data_$(date +%F).sql.gz

备份某个库的数据

mysqldump -A -B --single-transaction testDB1|gzip>/server/backup/testDB1_$(date +%F).sql.gz

什么是增量备份?
增量备份:指的是上一次全量备份之后到下一次全量备份这前这段时间内数据库所更新或者是增加的数据,将其备份下来。

注:全量备份是一个文件,而增量备份则是MySQL的binlog日志文件。所以常说的增量备份就是备份binlog日志文件。

两者的区别在哪?

全量备份:需要的备份时间长一点,恢复时间会短一点,因为文件数少,维护方便。但是,全量备份的文件大,占用一定的磁盘空间,全理备份时会一定程序上影响数据库的性能(这也就是为什么在0:00点备份的原因),也因文件大的原因,不便于服务器本地保存过多文件,重要业务的全量备份文件可能需要手工下载或迁移到服务器之外的存储空间中。
增量备份:备份简单,恢复时复杂一点,因为文件数量多,需将所有binlog文件解析成SQL语句,如下:

mysqlbinlog testDB1-bin.000001 testDB1-bin.000002 >./bin.sql

然后,再通过恢复的方式进行恢复

mysql -uroot -pMyadmin -h mysqldb.mingongge.com> source /server/backup/bin.sql

或者如下操作

cd /server/backupmysql testDB1 <./bin.sql

备份与恢复实践操作

对于Mysql数据库的备份,一般采取脚本+定时任务进行日常备份。

常用执行策略是:

  • 每天0:00执行一次全量备份
  • 按业务需求执行增量备份
    分享一个我在一个创业公司初期的一个备份方案实例
    阿里云数据库服务器备份方案
    方案一:
    目前数据库是主从同步,从库开启binlog日志功能进行异地备份,就目前数据量而言,只需要在从库的基础上进行定时全量与增量备份数据库即可。
1、创建备份目录mkdir /server/backup2、备份数据库到指定目录mysqldump --single-transaction -F -B phoenix_coupon_production|gzip >/server/backup/phoenix_$(date +%F).sql.gzmysqldump --single-transaction -F -B ywotx|gzip >/server/backup/ywotx_$(date+%F).sql.gzfind /server/backup/ -type f –name “*.sql.gz”-mtime +7 |xargs rm-f将脚本写入定时任务,分时段进行打包备份 3、定时备份二进制文件通过参数刷新binlog产生新的文件,通过脚本判断文件新旧,然后备份旧的日志文件
mysqladmin -uroot -pywotx!123 flush-logs #刷新日志,产生新的日志文件

最终将备份文件同步或定时手工下载到异地备份服务器异地存储备份文件,实现数据库备份文件双备份存储,防止服务器硬件故障。

方案二
后期数据量增大之后,数据库需要进行读写分离,实现主写,从读,主从同步的架构,备份还是按照原来的备份方案进行,可采用分库分表进行数据备份,防止数据量大导致的恢复时间的问题,提升恢复效率。

1、创建备份目录Mkdir /server/backup2、备份数据到指定目录( 分库分表)
#/bin/sh
#create by mingongge at 2017-06-01
BACKUPDIR=/server/backup
DATE=`date +%F`
USER=root
PASSWD=”123456”
CMD=”mysql –u$USER –p$PASSWD”
DUMPCMD=”mysqldump –u$USER –p$PASSWD --single-transaction -F”for dbname in `${CMD} –e “show databases”|sed ‘1d’`
do
mkdir –p${BACKUPDIR}/${dbname}
for tablename in`${CMD} –D ${dbname} –e “show tables”|sed ‘1d’`
do
${DUMPCMD} --tables${dbname} ${tablename} |gzip > ${BACKUPDIR}/${dbname}/${tablename}_$(DATE).sql.gz
done
donefind /server/backup/${dbname} -type f –name “*.sql.gz”-mtime +7|xargs rm -f3、定时备份二进制文件(增量)
备份方法同方案一

备份频率:

  • 每天0:00进行一次数据库全备
  • 每天03:00 9:00 15:00 21:00 增量备份一次
    数据库的备份,每天一次全备,在全备时会更新binlog日志,重新生成新的日志文件,因此在下一次增量备份时再刷新binlog,再次产生新的日志文件,实现从全备之后对数据库的操作的增量备份,一旦发现数据问题,立即刷新binlog重新成新的日志文件,将原来的日志文件手工备份一份,然后找出产生数据问题的点,从而利用日志文件进行恢复全备到产生数据问题点之间的数据,然后恢复从问题点到发现问题时间段之间的数据.

新增一台备份服务器,配置如下:
实例配置:2核/4G/40G + 200G高效云盘 经典网络 1M 295元/月
方案总结:
对于数据库服务器本地的备份文件基本上只保留一周时间内的数据,备份服务器按需求(一般保留至少30天的数据),保留30天的数据包括数据库全备文件与增量备份文件,后期可按实际生产需求进行修改,保留时间长短只会增加相应的服务器磁盘空间,增加一定的成本,其它无需改动,操作较为灵活、方便。

备份方案下载链接如下:
链接: https://pan.baidu.com/s/1kqfl3cKLv1JjfKx61U-_Og 提取码: tsep

参考链接 :
企业级MySQL数据库备份方案 : https://mp.weixin.qq.com/s/fQnHZEC-eqSCPhJI5vDoaA

企业级MySQL数据库备份方案:增量备份、全量备份、逻辑备份相关推荐

  1. MySQL备份(一)全量

    概要 引言 全量备份 恢复全量备份 定时备份 引言 在产品上线之后,我们的数据是相当重要的,容不得半点闪失,应该做好万全的准备,搞不好哪一天被黑客入侵或者恶意删除,那就 gg 了.所以要对我们的线上数 ...

  2. canal —— 阿里巴巴mysql数据库binlog的增量订阅消费组件

    阿里巴巴mysql数据库binlog的增量订阅&消费组件canal ,转载自  https://github.com/alibaba/canal 最新更新 canal QQ讨论群已经建立,群号 ...

  3. centos7 mysql8 主从_CentOS7开启MySQL8主从备份、每日定时全量备份(推荐)

    备注1:解决连接MySQL数据库很慢的问题 vim /etc/my.cnf 添加内容:skip-name-resolve,重启数据库. 备注2:(密码带!或其他特殊符合,前面加\,例如123!321- ...

  4. solr java 全量,Solr实时创建增量或全量索引

    1,为了支持增量建索引,我们需要把上述文中的mysql-data-config.xml内容改为 query="SELECT id, title, content FROM article&q ...

  5. 4. 同步方式(增量和全量)

    4. 同步方式(增量和全量) 4.1 数据同步一般分为两种方式:全量和增量. 全量 全量,这个很好理解.就是每天定时(避开业务高峰期)或者周期性全量把数据从一个地方拷贝到另外一个地方: 全量的话,可以 ...

  6. kylin cube 增量和全量

    2019独角兽企业重金招聘Python工程师标准>>> 全量构建与增量构建 全量构建 对数据模型中没有指定分割时间列信息的Cube,Kylin会采用全量构建,即每次从Hive中读取全 ...

  7. mysql异机还原_MySQL innobackupex全量备份恢复

    转自 http://blog.itpub.net/27099995/viewspace-1295099/ 先简单介绍一下这个工具:innobackupex innobackupex比xtarbacku ...

  8. oracle增量和全量的区别,ORACLE全备份和0级增量备份的区别

    比较官方的说法 Full A backup of a datafile that includes every allocated block in the file being backed up. ...

  9. linux按日期备份mysql,在Linux、Windows上如何按日期逻辑备份数据库

    在逻辑备份数据库时,用户可能会希望在dmp文件中加入日期变量,以区分不同日期的备份文件,并且可以防止意外的覆盖.参考了eagle 在逻辑备份数据库时,用户可能会希望在dmp文件中加入日期变量,以区分不 ...

最新文章

  1. css清楚浮动的class
  2. java linux 时区_java同步/设置Linux系统时间
  3. ISA2006 之 域环境下部署
  4. 深度操作系统 15 Beta——每一处都在“靓”变
  5. 中国移动互联网趋势报告:教育、金融类App留存率更高
  6. unzip 分包_建筑总包企业计量分包成本时,未取得相应分包发票,增值税如何处理?...
  7. 关于tolua的使用
  8. linux 任务计划 cron
  9. paip.互联网产品要成功的要素
  10. 浙江利捷分析报告(0608)
  11. Matlab故障树的最小割集的求解
  12. 批量生成独一无二的NFT猫猫图,这项目王多鱼会投吗?
  13. 神经网络仿真逻辑回归,神经网络仿真实验matlab
  14. 鸿蒙抖音社区下单,抖音鸿蒙封神录(礼包领取)-抖音鸿蒙封神录官网版下载v1.0.5 - 比克尔下载...
  15. SpringCloud学习笔记(十) Bus 消息总线
  16. Microsoft 365 - 如何查看OneDrive使用空间和剩余空间?
  17. 手游推广平台——怎么推广手游?
  18. 人民币读法的java程序_java人民币读法转换
  19. 学习笔记(01):OmniPlan项目管理就该这样学-使用关联线连接任务
  20. 592.分数加减运算 纯纯的数学题,Python 7行代码+详细思路分享!

热门文章

  1. ubuntu下的jdk进行升级_Ubuntu下JDK升级1.7
  2. phpstudy快速搭建网站_小白快速上手搭建属于自己的网站
  3. 天然气压缩因子计算软件_测量天然气用什么流量计?
  4. python的哲学内容_python 哲学或者说文化
  5. linux定时删除文件指令,Linux实践——定时删除目录下面的文件
  6. 为MyEclipse 9/10中的html/JSP编辑器添加代码自动提示
  7. mvc php 分页,MVC+jQuery.Ajax异步实现增删改查和分页_jquery
  8. python文件内容写入的方法有哪些、对应的方法和含义_Python的文件读写及目录操作...
  9. Django框架第一篇基础
  10. JVM调优总结 系列文章