MySQL的备份策略

  • 备份的类型
    • 1、根据服务器的状态分:
    • 2、从对象来分:
    • 3、从数据收集来分:
  • 逻辑备份和物理备份的优缺点
    • 逻辑备份的优点:
    • 逻辑备份的缺点:
  • 备份内容
  • 备份工具
    • MySQL自带的备份工具
    • 文件系统备份工具
    • 其它工具
  • 备份策略
    • 策略一:直接拷贝数据库文件
      • 示例:
    • 策略二:mysqldump备份数据库
    • 策略三:mydumper备份数据库
    • 策略四:lvm快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份。
    • 策略五:xtrabackup 备份数据库
    • 策略六:在windows客户端下使用图形化工具进行备份

备份的类型

1、根据服务器的状态分:

热备份:数据库的读、写操作都不受备份的影响。
温备份:只能执行读的操作,不能执行写。
冷备份:也叫做离线备份,读写都不能执行。

2、从对象来分:

物理备份:复制数据文件;例如:用rpm包安装的/var/lib/mysql,存放的就是数据文件。
逻辑备份:将数据导出至文本文件中。

3、从数据收集来分:

完全备份:备份全部数据;
增量备份:仅备份上次发生改变的数据;
优点:备份时间短;
缺点:还原时间长;
差异备份:仅备份上次完全备份后产生的数据;
优点:还原时间长;
缺点:备份时间长;
工作中常用组合备用方式,例如:

周六:完全备份
周1-周2:增量备份
周三:差异备份
周4-周6:增量备份
备份时间:02:00(避开高峰期)

逻辑备份和物理备份的优缺点

逻辑备份的优点:

在备份速度上两种备份要取决于不同的存储引擎
物理备份的还原速度非常快。但是物理备份的最小粒度只能做到表 。
逻辑备份保存的结构通常都是纯ASCII的,所以我们可以使用文本处理工具来处理 。
逻辑备份有非常强的兼容性,而物理备份则对版本要求非常高 (尽可能:操作系统版本号相同、MySQL版本号相同)。
逻辑备份也对保持数据的安全性有保证 。

逻辑备份的缺点:

逻辑备份要对RDBMS产生额外的压力,而裸备份无压力 。
逻辑备份的结果可能要比源文件更大。所以很多人都对备份的内容进行压缩 。
逻辑备份可能会丢失浮点数的精度信息。

备份内容

数据文件
日志文件(比如事务日志,二进制日志)
存储过程,存储函数,触发器
配置文件(十分重要,各个配置文件都要备份)
用于实现数据库备份的脚本,数据库自身清理的Crontab等

备份工具

MySQL自带的备份工具

mysqldump 逻辑备份工具,支持所有引擎,MyISAM引擎是温备,InnoDB引擎是热备,备份速度中速, 还原速度非常非常慢,但是在实现还原的时候,具有很大的操作余地。具有很好的弹性。 mysqlhotcopy 物理备份工具,但只支持MyISAM引擎,基本上属于冷备的范畴,物理备份,速度比较快。

文件系统备份工具

cp 冷备份,支持所有引擎,复制命令,只能实现冷备,物理备份。使用归档工具,cp命令,对其进行备 份的,备份速度快,还原速度几乎最快,但是灵活度很低,可以跨系统,但是跨平台能力很差。
lvm 几乎是热备份,支持所有引擎,基于快照(LVM,ZFS)的物理备份,速度非常快,几乎是热备。只影 响数据几秒钟而已。但是创建快照的过程本身就影响到了数据库在线的使用,所以备份速度比较快,恢复速度 比较快,没有什么弹性空间,而且LVM的限制:不能对多个逻辑卷同一时间进行备份,所以数据文件和事务日 志等各种文件必须放在同一个LVM上。而ZFS则非常好的可以在多逻辑卷之间备份。

其它工具

ibbackup 商业工具 MyISAM是温备份,InnoDB是热备份 ,备份和还原速度都很快,这个软件它的每 服务器授权版本是5000美元。
xtrabackup 开源工具 MyISAM是温备份,InnoDB是热备份 ,是ibbackup商业工具的替代工具。
mysqlbackup ORACLE公司也提供了针对企业的备份软件MySQL Enterprise Backup简称: mysqlbackup。

备份策略

策略一:直接拷贝数据库文件

当你使用直接备份方法时,必须保证表不在被使用。如果服务器在你正在拷贝一个表时改变它,拷贝就失 去意义。保证你的拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。
当你完成了备份时,需要重启服务器(如果关闭了它)或释放加在表上的锁定(如果你让服务器运行)。要 用直接拷贝文件把一个数据库从一台机器拷贝到另一台机器上,只是将文件拷贝到另一台服务器主机的适当数 据目录下即可。
要确保文件是MyIASM格式或两台机器有相同的硬件结构,否则你的数据库在另一台主机上有奇怪的内容。 (文件系统备份工具 cp)(适合小型数据库,是最可靠的)
1、停止MySQL服务器。
2、直接复制整个数据库目录。注意:使用这种方法最好还原到相同版本服务器中,不同版本可能不兼容。
3、目标服务器上还原。
4、目标服务器数据库目录授权,重启服务器测试。

示例:

基础素材准备:

先关闭数据库服务:

执行以下操作:

node1:
[root@node1 mysql]# pwd
/var/lib/mysql
[root@node1 mysql]# tar czf db.tar.gz *
tar: mysql.sock: socket ignored
[root@node1 mysql]# scp db.tar.gz 192.168.21.133:/beifen
root@192.168.21.133's password:
db.tar.gz                                                                            100% 1339KB  41.0MB/s   00:00
------------------------------------------------------------
node2:
先关闭数据库,再清除/var/lib/mysql/下的内容
[root@host2 beifen]# tar xf db.tar.gz /var/lib/mysql/
将/beifen/db.tar.gz解压到/var/lib/mysql
最后就可以看见两台机器上的MySQL数据库显示的都有db

策略二:mysqldump备份数据库

(完全备份+增加备份,速度相对较慢,适合中小型数据库)
mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级 时相对比较合适,这也是最常用的备份方法。 备份策略可以这么定:第一次完全备份,每天一次增量备份,每周再做一次完全备份,如此一直重复。而对于 重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线 上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机(replication),在 slave 机器上做备份。

策略三:mydumper备份数据库

Mydumper介绍 Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。开发人员主要来自 MySQL,Facebook,SkySQL公司。目前已经在一些线上使用了Mydumper。
Mydumper主要特性:
•轻量级C语言写的
•执行速度比mysqldump快10倍
• 事务性和非事务性表一致的快照(适用于0.2.2以上版本)
• 快速的文件压缩
• 支持导出binlog
• 多线程恢复(适用于0.2.1以上版本)
• 以守护进程的工作方式,定时快照和连续二进制日志(适用于0.5.0以上版本)
• 开源 (GNU GPLv3)
Mydumper安装

 # yum -y install glib2-devel mysql-devel zlib-devel pcre-devel # tar xvf mydumper-0.5.1.tar.gz # cd mydumper-0.5.1/ # cmake . # make# make install

mydumper输出文件
metadata:元数据 记录备份开始和结束时间,以及binlog日志文件位置。
table data:每个表一个文件 。
table schemas:表结构文件 。
binary logs: 启用–binlogs选项后,二进制文件存放在binlog_snapshot目录下。
daemon mode:在这个模式下,有五个目录0,1,binlogs,binlog_snapshot,last_dump。 备份目录是0和1,间隔备份,如果mydumper因某种原因失败而仍然有一个好的快照, 当快照完成后,last_dump指向该备份。

策略四:lvm快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份。

速度快适 合比较烦忙的数据库
前提:
数据文件要在逻辑卷上;
此逻辑卷所在卷组必须有足够空间使用快照卷;
数据文件和事务日志要在同一个逻辑卷上;
MySQL数据lv和将要创建的快照要在同一vg,vg要有足够的空间存储
优点:
几乎是热备(创建快照前把表上锁,创建完毕后立即释放)
支持所有的存储引擎
备份速度快
无需使用昂贵的商业软件(操作系统级别的)
缺点:
可能需要部门协调(使用操作系统级别的命令,DBA一般没有权限)
无法预计服务停止时间
数据如果分布在多个卷上比较麻烦
操作流程
1)锁表 flush table with read lock
2)查看position号并记录,便于后期恢复 show master status
3)创建snapshot快照 create snapshop
4)解表 unlock tables
5)挂载snapshot
6)拷贝snapshot数据,进行备份。备份整个数据库之前,要关闭mysql服务(保护ibdata1文件)
7)卸载
8)移除快照

策略五:xtrabackup 备份数据库

实现完全热备份与增量热备份(MyISAM是温备份,InnoDB是热备份)
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工 具InnoDB Hotbackup的一个很好的替代品。 Xtrabackup有两个主要的工具:xtrabackup、innobackupex xtrabackup 只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表。 innobackupex 是参考了InnoDB Hotbackup的innoback脚本修改而来的。innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的同时备份InnoDB和MyISAM引擎的表,但在处理myisam时 需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢复后作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
优点:
支持完全备份和增量备份
备份过程快速、可靠;
备份过程不会打断正在执行的事务;
能够基于压缩等功能节约磁盘空间和流量;
自动实现备份检验;
还原速度快;

策略六:在windows客户端下使用图形化工具进行备份

操作简便:
Navicat for MySQL 是一套专为 MySQL 设计的高性能数据库管理及开发工具。它可以用于任何版本3.21 或以上的 MySQL 数据库服务器,并支持大部份 MySQL 最新版本的功能,包括触发器、存储过程、函数、事件、视图、管理用户等。
使用 SQLyog或Navicat for MySQL等工具进行备份。

MySQL的备份策略相关推荐

  1. mysql 定期备份策略,MySQL--3--mysqldump备份策略

    参考地址:http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/database-administration.html#backup-strat ...

  2. mysql数据库备份策略及应用场景

    由于mysql存在多种数据库备份方式,而且各有利弊,对于我们初学者来说,选择合适的备份方式确实有些困难.个人觉得,首先要基于公司的需求,考虑能够容忍丢失多少数据.花多少人力时间成本等,这是我们制定备份 ...

  3. Mysql不能备份序列_无法mysqldump

    使用mysqldump工具备份还原Mysql数据库实例及参数详细说明 MySQL命令行功能非常强大,甚至可以进行数据库的备份,下面为您介绍的MySQL命令行就用于备份数据库,希望对您有所帮助. 注意, ...

  4. mysql数据库恢复策略_MySQL 备份和恢复策略(一)

    在数据库表丢失或损坏的情况下,备份你的数据库是很重要的.如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态.本文主要对MyISAM表做备份恢复. 备份策略一:直接拷贝数据 ...

  5. 删库不跑路-详解MySQL备份策略

    原文链接:https://segmentfault.com/a/1190000019955399 手抖.写错条件.写错表名.错连生产库造成的误删库表和数据总有听说,那么删库之后除了跑路,还能做什么呢, ...

  6. MYSQL数据库备份方法及策略

    MYSQL数据库备份方法及策略 前言 Xtrabackup实战 Percona-xtrabackup 备份实战 ( 1 ) 官网下载Percona-Xtrabackup ( 2 )Percona-xt ...

  7. MySQL数据库备份恢复(备份恢复)【备份策略三:mydumper备份数据库】

    备份策略三:mydumper备份数据库 Mydumper介绍 Mydumper主要特性 语法样式 常用参数(mydumper)[备份] 常用参数(myloader)[恢复] 使用示范(备份) 使用示范 ...

  8. mysql数据库备份总结_mysql中mysqlhotcopy备份数据库总结

    mysqlhotcopy是mysql数据库中一个备份工具,相对于mysqldump是一个快速文件意义上的COPY,mysqlhotcopy是一个数据库端的SQL语句集合. mysqlhotcopy用法 ...

  9. mysql clomn_mysql 备份脚本

    mx_kol mx_kol_django 备份这俩库 mkdir -p /disk3/backup/incremental mkdir -p /disk3/backup/gzip mkdir -p / ...

最新文章

  1. python四十七:在子类中调用父类方法
  2. java中date类型如何赋值_一文读懂java中的Reference和引用类型
  3. HashMap以及ConcurrentHashMap(volatile)
  4. 【网络知识点】防火墙主备冗余技术
  5. ubuntu18.10 cosmic更换阿里云的源
  6. rust核电分解机在哪里_腐蚀RUST个工厂地点位置介绍 腐蚀如何找到相应的工厂
  7. 2021抖音电商宠物经济洞察报告
  8. c#单纯发送post请求一个URL得到返回值
  9. 类模板 templateclass T
  10. select 实现类似多线程_linux进程通信--socket套接字(四)--多路IO转实现一个server对应多个client...
  11. 跨栏表格位置跑到了下一页_LaTeX双栏模板插入通栏公式(跨栏插图)
  12. Xpath轴与步长应用:取某节点下所有子孙节点里的文本内容
  13. activex 控件 过期,解决“无法注册Flash Player 的ActiveX控件”的问题
  14. C++ DNF脚本源码模板开源
  15. 单片机测量脉宽c语言程序,51单片机hc-sr04超声波测距(脉宽测量)DEMO程序
  16. 阳光温暖了心情的博客
  17. 分析Faster RCNN中的RPN
  18. 【原创】关于Golang和Rust对比及语言的选择思考
  19. 完美解决matlab“错误使用 mex未找到支持的编译器或 SDK。”的问题
  20. In download.file(sprintf(“https://ftp.ncbi.nlm.nih.gov/geo/series/%s/%s/matrix/%s“, : InternetOpen

热门文章

  1. 博弈论之取石子游戏的学习
  2. “微信跳一跳”辅助脚本的一种简单实现
  3. 前端入门学习笔记六十七
  4. C#学习笔记:控件的Dock属性使用,工具栏遮挡解决。
  5. QT:简单的小游戏开发日记
  6. 用计算机写作400字,玩电脑作文400字
  7. centos cp命令实例
  8. 惠普HP Deskjet F4288 多功能一体机驱动
  9. vue-router 两种模式的区别
  10. C4D模型复制到新工程后错位,模型复制到工程位置不对?