iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据备份与恢复(二) -
  • 953
分享到

MySQL数据备份与恢复(二) -

MySQL数据备份与恢复(二)- 2018-12-27 05:12:51 953人浏览 无得
摘要

 上一篇介绍了逻辑备份工具Mysqldump,本文将通过应用更为普遍的物理备份工具xtrabackup来演示数据备份及恢复的第二篇内容。 1.  xtrabackup 工具的安装  1.1  安装依赖包 yum install

MySQL数据备份与恢复(二) -

 上一篇介绍了逻辑备份工具Mysqldump,本文将通过应用更为普遍的物理备份工具xtrabackup来演示数据备份及恢复的第二篇内容。

1.  xtrabackup 工具的安装

 1.1  安装依赖包


yum install -y rsync perl l perl-Digest-MD5 perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-mysql

1.2  下载及安装

去percona官网下载对应版本的安装包 https://www.percona.com/downloads  , 因为每个版本对应的数据库版本不同,因此需要根据数据库的版本选择对应的xtrabackup的安装包.

 

 

当前测试使用的数据库为Mysql5.7  因此下载2.4版本Https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/

另外,2.4.10及以后版本中,对libGCrypt进行了区分,因此也需要查询自己服务器的libgcrypt版本,然后选择对应的安装包

查看libgcrypt方法:

[root@testdb ~]# yum list installed|grep libgcrypt
libgcrypt.x86_64                     1.5.3-14.el7                      @anaconda

然后下载对应包


wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.18/binary/tarball/percona-xtrabackup-2.4.18-linux-x86_64.libgcrypt153.tar.gz

wget https://www.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.18/binary/redhat/7/x86_64/Percona-XtraBackup-2.4.18-r29b4ca5-el7-x86_64-bundle.tar

二进制包解压后即可使用,rpm包下载解压后 rpm  -ivh 安装即可。操作均很简单,此处略过

xtrabackup通常使用 innobackupex命令, 可以使用 innobackupex  --help 命令查看参数及说明。

其中常用参数及说明如下:

--defaults-file                 待备份mysql实例的配置文件
--user=USER                     备份用户,默认为当前系统用户,建议使用备份专用账号
--passWord=PASSWD               备份用户密码
--port=PORT                     数据库端口,默认3306
--host=HOST                     需备份数据库的IP
--apply-log                     前滚、回滚日志,恢复前用
--database                      指定需要备份的数据库,多个数据库之间以空格分开
--copy-back                     将备份数据复制到目标路径
--incremental                   增量备份,后面接的参数值为指定的增量备份的路径
--incremental-basedir=DIRECTORY 增量备份时使用指向上一次的增量备份所在的目录
--incremental-dir=DIRECTORY     增量备份还原的时候用来合并增量备份到全量,用来指定全备路径
--redo-only                     对增量备份进行合并
--rsync                         加快本地文件传输,适用于non-InnoDB数据库引擎。不与--stream共用
--no-timestamp                  生成的备份文件不以时间戳为目录

1.3 创建备份账号

备份的账号建议单独创建,并授予相关权限

mysql> CREATE USER "backup"@"localhost" IDENTIFIED BY "Backup@123.com";
mysql> GRANT SUPER,RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO "backup"@"localhost"; 
mysql> FLUSH PRIVILEGES;

 

2.  全量备份

 2.1   本地全量备份,不压缩

后续会以此为基础进行增量备份


mkdir  all_backup



/root/xtrabackup/bin/innobackupex  --defaults-file=/app/data/mysql3306/etc/my.cnf     --Socket=/app/data/mysql3306/tmp/mysql.sock  --port=3306 --user=backup --password="Backup@123.com" --no-timestamp    all_backup

 

 备份的结果存放在指定的目录 all_backup里,内容如下:

 

 2.2  本地tar方式压缩备份

有时为了考虑磁盘空间问题,会在备份的时候直接压缩用以节约磁盘空间或解决磁盘空间不足以存放全量非压缩文件的问题。


/root/xtrabackup/bin/innobackupex  --defaults-file=/app/data/mysql3306/etc/my.cnf     --socket=/tmp/mysql.sock  --port=3306 --user=backup --password="Backup@123.com" --stream=tar /tmp |gzip >all_backup.tar.gz

中间过程省略

备份后的结果是一个压缩文件,经过对比,压缩后数据约为非压缩情况下的20%,压缩比还是比较高的。

不过,压缩备份的方式速度相对较慢,且消耗CPU,该影响因素需要大家考虑到,视情况选择是否压缩。

注意: 如果有单表过大 而/tmp路径空间不足的情况备份过程中可能会报错,因此可以指定其他空间较大的目录

 2.3  本地xbstream方式压缩备份

gzip的压缩方式备份可能会有bug(案例可以自行寻找),出现如下错误:

xtrabackup: error: The transaction log file is corrupted.
xtrabackup: error: The log was not applied to the intended LSN!

 因此可以采用xbstream方式进行备份,备份命令如下:

/root/xtrabackup/bin/innobackupex  --defaults-file=/app/data/mysql3306/etc/my.cnf     --socket=/tmp/mysql.sock  --port=3306 --user=backup --password="Backup@123.com"  /app/backup  --tmpdir=/app/backup --stream=xbstream|gzip  - > all_backup.xbstream.gz

 

xbstream压缩备份的过程和tar一致,就不再解释了。

2.4  远程备份到其他机器

远程备份与本地备份的相比 需要额外的配置远程主机的免密登录权限

 


ssh-keygen
ssh-copy-id -i user@"target_ip"

之后就可以将类似于本地备份的模式 将备份结果发送到远程机器

/root/xtrabackup/bin/innobackupex  --defaults-file=/app/data/mysql3306/etc/my.cnf     --socket=/tmp/mysql.sock  --port=3306 --user=backup --password="Backup@123.com" --stream=tar /tmp --no-timestamp | ssh user@"target_ip" "cat - > /app/backup/remote_backup.tar"

备份过程中可以在目标机器看到对应的备份文件,完成后如下

  注:

  • 远程备份的目录需要有写入权限
  • 另外,和备份备份一样,如果存在大表或超大事务运行时不建议使用/tmp目录

3.  增量备份

3.1  第一次增量备份

可以先根据2.1的本地全备的基础上进行增量备份,首次增量备份脚本如下:

/root/xtrabackup/bin/innobackupex  --defaults-file=/app/data/mysql3306/etc/my.cnf     --socket=/tmp/mysql.sock  --port=3306 --user=backup --password="Backup@123.com" --incremental /app/backup/  --incremental-basedir=/app/backup/all_backup

此时,备份的结果放在/app/backup目录下,由于没指定no-timestamp参数,备份的结果存在在已三期时间命名的目录下:

 

 备份的过程和全量备份很相似,但是备份结果是不一样的

  结果如下

  注: 增量备份仅能应用于InnoDB或XtraDB表等事务表,对于MyISAM表而言,执行增量备份时依旧进行全量备份

 3.2  第二次增量备份

第二次增量备份是在第一次增量备份的基础上进行,因此incremental-basedir参数内容指定为上一次增量备份的目录即可

/root/xtrabackup/bin/innobackupex  --defaults-file=/app/data/mysql3306/etc/my.cnf     --socket=/tmp/mysql.sock  --port=3306 --user=backup --password="Backup@123.com" --incremental /app/backup/  --incremental-basedir=/app/backup/2020-03-25_14-47-37

完成后生成一个新的目录

 

4.  恢复

4.1  基于全量备份的恢复

4.1.1 回放日志

备份后的文件不能直接用作恢复,还需要先使用apply-log 做前滚和回滚

 /root/xtrabackup/bin/innobackupex  --defaults-file=./backup-my.cnf  --apply-log  /app/backup/all_backup

注: 回放日志的时候 defaults-file 选择备份目录里的即可

4.2.2  恢复至目标实例

本次恢复至一个新实例中(如果恢复至现有的实例需要先关闭目标实例,删除数据目录及相关日志存储的目录。不建议直接恢复至现有实例 ,除非实际需要)


 mkdir -p /app/data/mysql3307/{data,logs,tmp,etc}


cp /app/data/mysql3306/etc/my.cnf  /app/data/mysql3307/etc/

sed -i "s#3306#3307#g"  my.cnf


touch   /app/data/mysql3307/logs/mysqld.log

然后拷贝至新实例中

/root/xtrabackup/bin/innobackupex  --defaults-file=/app/data/mysql3307/etc/my.cnf --copy-back  /app/backup/all_backup

修改目标实例相关目录的权限

chown -R mysql:mysql /app/data/mysql3307

启动新实例即可

/usr/local/mysql5.7/bin/mysqld_safe  --defaults-file=/app/data/mysql3307/etc/my.cnf  &

恢复完毕

4.2  基于增量备份的恢复

如果是基于第一次增量备份的恢复,操作如下


/root/xtrabackup/bin/innobackupex  --apply-log --redo-only /app/backup/all_backup

 /root/xtrabackup/bin/innobackupex  --apply-log --redo-only /app/backup/all_backup --incremental-dir=/app/backup/2020-03-25_14-47-37

如果基于多次增量备份的恢复,则在全量备份及第一次增量备份的基础上继续合并后续的备份即可

 
/root/xtrabackup/bin/innobackupex  --apply-log --redo-only /app/backup/all_backup --incremental-dir=/app/backup/2020-03-25_15-06-28

之后的操作和全量备份的恢复一样即可。

 

5. 小结

基于xtrabackup2.4版本备份MySQL5.7数据库的主要方法及过程常用情况均已演示,结尾处再总结一下xtrabackup的主要优点:

  • 物理备份,备份速度快
  • 热备份、无需停机
  • 恢复速度快
  • 自动会对备份文件进行验证

本文只介绍了常用操作,还是有很多情况未做介绍,比如rds上的数据备份及还原等,请各位小伙伴自行探索,也可以与我讨论。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据备份与恢复(二) -

本文链接: https://www.lsjlt.com/news/5149.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库的备份与恢复
    一、数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为操作错误运算错误磁盘故障灾难(如火灾、地震)和盗窃 二、数据库备份...
    99+
    2023-10-27
    数据库
  • mysql怎么备份与恢复数据
    本篇内容介绍了“mysql怎么备份与恢复数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、直接物理文件...
    99+
    2024-04-02
  • MySQL数据库如何备份与恢复
    这篇“MySQL数据库如何备份与恢复”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQ...
    99+
    2024-04-02
  • MySQL系列之十二 备份与恢复
    目录系列教程一、备份策略赘述1、备份的类型2、备份需要考虑的因素3、备份的目标4、备份工具二、备份方案1、cp + tar == 物理冷备2、lvm快照 + binlog == 几乎...
    99+
    2024-04-02
  • 数据库备份与恢复
    数据库备份与恢复 一、物理备份和逻辑备份二、mysqldump实现逻辑备份2.1 备份一个数据库2.2 备份全部数据库2.3 备份部分数据库2.4 备份部分表2.5 备份单表的部分数据2.6 排除某些表的备份2.7 只备份结构或只备...
    99+
    2023-08-18
    数据库 mysql sql
  • mysql数据备份及恢复
    这篇文章主要介绍“mysql数据备份及恢复”,在日常操作中,相信很多人在mysql数据备份及恢复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql数据备份及恢复”的疑惑...
    99+
    2024-04-02
  • MySQL 数据备份和数据恢复
    目录 一、数据备份 1、概述 2、MySQLdump命令备份 1)备份单个数据库中的所有表 2) 备份数据中某个或多个表 3) 备份所有数据库 4)备份多个库 5) 只备份一个表或多个表结构 二、数据恢复 三、数据备份与恢复应用 一、数...
    99+
    2023-09-01
    mysql 数据库
  • mysql 数据备份与恢复使用详解
    一、前言 对一个运行中的线上系统来说,定期对数据库进行备份是非常重要的,备份不仅可以确保数据的局部完整性,一定程度上也为数据安全性提供了保障,设想如果某种极端的场景下,比如磁盘损坏导致某个时间段数据丢失,或者误操作导致数据表数据被删等.....
    99+
    2023-09-01
    mysql数据备份与恢复 mysql dump mysql dump数据备份 mysql 使用dump mysql 数据导入导出
  • Mysql数据库的备份与恢复方法
    这篇文章主要介绍“Mysql数据库的备份与恢复方法”,在日常操作中,相信很多人在Mysql数据库的备份与恢复方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql数据库...
    99+
    2024-04-02
  • 【MySql】Mysql之备份与恢复
    目录 一、mysql日志概述 1、日志类型与作用 2、日志配置文件  3、日志配置文件的查询  二、备份的类型❤ 1、物理备份 1.1 冷备份 1.2 热备份 1.3 温备份 2、逻辑备份❤ 2.1 完全备份 2.2 差异备份 2.3 增量...
    99+
    2024-01-21
    mysql 数据库
  • Mysql的数据备份和恢复
    这篇文章主要介绍“Mysql的数据备份和恢复”,在日常操作中,相信很多人在Mysql的数据备份和恢复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql的数据备份和恢复”...
    99+
    2024-04-02
  • PHP与Memcached数据库备份与恢复
    随着互联网的快速发展,大规模MySQL数据库备份和恢复成为各大企业和网站必备的技能之一。而随着Memcached的广泛应用,如何备份和恢复Memcached也成为了一个重要的问题。PHP作为Web开发的主力语言之一,在处理备份和恢复MySQ...
    99+
    2023-05-15
    PHP memcached 数据库备份
  • PHP与MongoDB数据库备份与恢复
    随着大数据时代的到来,数据备份和恢复变得越来越重要。在这个过程中,很多网站都会使用PHP和MongoDB数据库来备份数据。本文将介绍如何使用PHP编写MongoDB数据库备份和恢复脚本。一、MongoDB数据库备份MongoDB数据库备份分...
    99+
    2023-05-15
    PHP MongoDB 备份与恢复
  • 一文学会Mysql数据库备份与恢复
    目录数据库备份的分类从数据库的备份策略角度,备份可分为常见的备份方法Mysql完全备份完全备份分类冷备份方法实现恢复数据库mysqldump备份与恢复Mysql完全恢复Mysql 日...
    99+
    2024-04-02
  • 使用DBeaver进行mysql数据备份与恢复
    目录 前言 一、Dbeaver是什么? 二、Dbeaver如何备份与恢复数据 1.备份Mysql数据 2.恢复Mysql数据 三、导入sql失败与解决 总结 前言 项目迭代、版本升级的过程中,有时候会涉及到数据库表结构的更改,因而,数据库...
    99+
    2023-08-18
    android 前端 后端
  • DB2数据库的备份与恢复
              一、    查看数据库 [db2inst1@localhost ~]$ db2 list db...
    99+
    2024-04-02
  • Oracle数据库的备份与恢复
    本篇内容介绍了“Oracle数据库的备份与恢复”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、备份与恢复...
    99+
    2024-04-02
  • 《入门MySQL—备份与恢复》
    本篇文章将主要讲解 MySQL 数据库数据备份与恢复相关知识,主要聚焦于逻辑备份,介绍mysqldump工具的使用以及恢复方法。 这里简单讲下物理备份和逻辑备份的概念: 物理备份:备份数据文件,转储数据...
    99+
    2024-04-02
  • mysql怎么恢复备份数据库
    要恢复MySQL备份数据库,可以按照以下步骤进行操作: 将备份文件复制到MySQL数据库服务器上的合适位置。确保备份文件的权限设...
    99+
    2024-04-02
  • Mysql数据库之备份和恢复
     一、为什么要数据备份?   备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为,操作错误,运算错误,磁盘故障灾难(如火灾、地震)和盗窃. 二、...
    99+
    2023-09-15
    数据库 mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作