前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Centos7下Percona XtraBackup 2.3.4备份与恢复MySQL

Centos7下Percona XtraBackup 2.3.4备份与恢复MySQL

原创
作者头像
洛秋_
发布2023-12-19 17:20:08
2970
发布2023-12-19 17:20:08
举报
文章被收录于专栏:洛秋的运维之路

介绍

Percona XtraBackup是MySQL数据库的一款备份工具,它通过热备份的方式,在不停止MySQL服务器的情况下对InnoDB和XtraDB表进行备份。本文将详细介绍使用XtraBackup进行备份与恢复的过程,包括备份的类型、常用选项以及备份与恢复的步骤。

XtraBackup工具简介

XtraBackup主要包含两个工具:xtrabackupinnobackupex

  • xtrabackup: 用于热备InnoDB和XtraDB表的工具,不能备份其他类型的表,也不能备份数据表结构。
  • innobackupex: 是对xtrabackup的封装,提供了备份MyISAM表的能力。是一个用Perl脚本编写的工具,简化了备份的过程。

常用选项

  • --host: 指定主机
  • --user: 指定用户名
  • --password: 指定密码
  • --port: 指定端口
  • --databases: 指定数据库
  • --incremental: 创建增量备份
  • --incremental-basedir: 指定包含完全备份的目录
  • --incremental-dir: 指定包含增量备份的目录
  • --apply-log: 对备份进行预处理操作,确保数据文件处于一致性状态
  • --redo-only: 不回滚未提交事务
  • --copy-back: 恢复备份目录

调整ulimit最大文件打开数

在备份之前,需要调整ulimit最大文件打开数,以确保备份过程中不会受到限制。

代码语言:shell
复制
# 临时生效
ulimit -n 65535

# 永久生效(重启后生效)
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf

全库备份

执行全库备份,并记录备份相关信息:

代码语言:shell
复制
innobackupex --defaults-file=/etc/my.cnf --use-memory=1G --host=localhost --user=root --password=123456 --port=3306 /home/backups/

# 备份类型:全库备份
# 备份方式:xtrabackup
# 备份开始时间:2023年12月18日19:47:52
# 备份结束时间:2023年12月18日19:54:17
# 备份耗时:6分钟
# 备份所有文件大小:7.2G
# 打包开始时间:2023年12月18日19:56:44
# 打包结束时间:2023年12月18日20:03:10
# 打包耗时:6.5分钟
# 压缩包大小:754M

备份包括完整备份、备份开始和结束时间、备份耗时、备份文件大小以及打包和压缩的相关信息。

全库恢复

在停止MySQL服务的情况下进行全库恢复:

代码语言:shell
复制
# 停止MySQL服务
systemctl stop mysqld

# 恢复准备:
innobackupex --apply-log /home/backups/2023-12-18_12-43-37/

# 模拟数据丢失:
cd /var/lib/
mv mysql mysql_mv
mkdir mysql

# 恢复:
innobackupex --copy-back /home/backups/2023-12-18_12-43-37/
# mysql目录授权:
chown -R mysql.mysql /var/lib/mysql
# 启动mysql
systemctl start mysqld

全库备份(压缩)

执行全库备份并压缩:

代码语言:shell
复制
innobackupex --defaults-file=/etc/my.cnf --use-memory=1G --host=localhost --user=root --password=123456 --port=3306 --no-timestamp --stream=tar /temp/ | gzip - > /home/backups/full/20231218fullbak.tgz

# 备份类型:全库备份
# 备份数据库文件大小:80G
# 备份方式:xtrabackup
# 备份开始时间:2023-12-18 20:42:46
# 备份结束时间:2023-12-18 21:15:15
# 备份耗时:32分钟
# 压缩包文件大小:12G

增量备份与恢复

第一次增量备份

代码语言:shell
复制
innobackupex --defaults-file=/etc/my.cnf --use-memory=1G --host=localhost --user=root --password=123456 --port=3306 --incremental /home/backups/first/ --no-timestamp --incremental-basedir=/home/backups/2023-12-18_12-43-37/

恢复准备(停止MySQL)

回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态:

代码语言:shell
复制
# 1、(完整备份文件)
innobackupex --apply-log /home/backups/2023-12-18_12-43-37/
或者
innobackupex --user=root --apply-log --redo-only /home/backups/2023-12-18_12-43-37/
# 2、(第一次增量文件)将第一次增量备份整合到完整备份中:
innobackupex --user=root --apply-log --redo-only /home/backups/2023-12-18_12-43-37/ --incremental-dir=/home/backups/first/
---    231218 15:02:22 completed OK!

# 模拟MySQL故障数据丢失,进行数据恢复:
cd /var/lib/
mv mysql mysql_first
mkdir mysql
innobackupex --copy-back /home/backups/2023-12-18_12-43-37/
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld

第二次、第三次增量备份与恢复

依照相同的步骤进行第二次和第三次的增量备份与恢复,依次整合增量备份到完整备份中。

结论

通过上述详细的备份与恢复过程,您可以有效地利用Percona XtraBackup保护MySQL数据库,确保数据的安全性和可靠性。备份的类型和恢复的步骤清晰明了,使得在实际应用中能够更加灵活地选择适合自己需求的备份策略。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • XtraBackup工具简介
  • 常用选项
  • 调整ulimit最大文件打开数
  • 全库备份
  • 全库恢复
  • 全库备份(压缩)
  • 增量备份与恢复
    • 第一次增量备份
      • 恢复准备(停止MySQL)
        • 第二次、第三次增量备份与恢复
        • 结论
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档