Mariadb数据备份恢复xtrabackup使用

本文档介绍了在CentOS7环境下对MySQL数据库进行备份和恢复的方法,包括对重要数据库和非重要数据的不同处理方式,以及如何使用xtrabackup工具进行增量备份和恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

企业测试环境使用总结的内容。

操作系统CentOS7 

对数据库或某个表的恢复思路:

一、查看损失的数据库是否重要

需要注意的一点是做数据库恢复利弊权衡,恢复这个库在这一段时间中给公司带来的损失大,还是直接舍弃掉这个库给公司带来的损失大,根据自己业务情况来做定夺。
如果是重要数据库恢复方法:
1.停止服务,挂维护页面。
2.一台新的数据库保证数据一致性找。

3.同时对故障的库进行备份。

4.恢复之前备份。回复完毕后。scp binlog日志。
5.获取备份bin位置。获取故障前一刻binlog位置。
6.启动,测试。
7.对外使用,启动服务。
8.再次备份,可有可无,建议进行再次备份。

二.、不重要的数据恢复办法

找个合适的时间停止服务服务。

如果没有备份可以根据操作日志手动进行恢复,

不在详细解释

三、xtrabackup使用

https://www.percona.com/       #xtrabackup官网

xtrabackup是InnoDB Hotbackup的一个开源替代品,

数据库备份工具:
xtrabackup功能介绍:
1.实现增量备份
2.可以对InnoDB引擎的表实现在线热备
3.可以在线对InnoDB/XtraDB引擎的表进行物理备份
4.xtrabackup是开源的MySQL备份工具,物理备份
5.xtrabackup和mysqldump进行对比
支持在线备份,不过是逻辑备份,效率比较差。

拷贝文件时不能保证数据致性,先拷贝文件再产生一个线程来查看日志如果日志文件一有变化就进行拷贝,拷贝完毕之后还会有应用日志操作,最后给你唯一的一个时间点。 

不建议使用percona的yum仓库,这样会将mysql中的其他lib包进行升级这个坑我已经踩过了。

从官网wget xtrabackup rpm安装包

[root@localhost] wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/binary/redhat/7/x86_64/percona-xtrabackup-2.2.8-5059.el7.x86_64.rpm

安装wget的rpm安装包

[root@localhost ]# yum -y localinstall  percona-xtrabackup-2.2.8-5059.el7.x86_64.rpm 

四、全局备份和恢复数据库

如果备份的数据过大的话可以使用压缩,推荐不压缩备份2天之后在压缩,如果压缩数据过大的话考虑到在数据恢复的时候也会占用时间。
1.将mysql数据备份到 /data/mysql/backup/ 默认会在备份目录下创建备份的时间戳目录
 

[root@localhost percona]# innobackupex  --defaults-file="/etc/my.cnf" --user=“用户名” --password="密码"--socket=/var/lib/mysql/mysql.sock /data/mysql/backup/

备份成功

备份完之后的数据不能立即使用需要将备份的数据进行预处理

2.预处理(预处理和应用日志),完毕之后备份数据才会是完整的数据。预处理完备份的数据时需要恢复可以直接mv 备份的数据到mysql跟目录下就可以用。建议每次备份完之后就进行预处理操作,方便恢复数据时使用。
如果使用内存选项的话会应用日志处理速度特别快,内存大小根据自己实际情况情况进行设置。
[root@localhost percona]# innobackupex  --defaults-file="/etc/my.cnf" --user=root --socket=/var/lib/mysql/mysql.sock --apply-log --use-memory=1G  /data/mysql/backup/2016-09-14_21-01-38

常规恢复数据库

1.首先停止数据库
恢复之前先停止数据库,并且要删除数据和日志文件

[root@localhost ~]# systemctl stop mariadb.service

########################################################################################################################

只针对一个数据库备份

--database 是指定需要备份的数据库
[root@localhost ~]#  innobackupex --user=用户名 --password=密码 --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock  --database=app /data/mysql/backup完全备份

增量备份及其恢复

01.增量备份是基于一个数据库的全部备份文件的,在刚才备份了一个全备份,我们现在的增量备份就基于刚才的全部备份来做 /2016-09-15_01-39-48 
需要注意如下两个参数:
--incremental-basedir指向全备目录; 
--incremental指向增量备份的目录; 

02.开始进行增量备份
innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root   --password=123456 --incremental-basedir=/data/mysql/backup/2016-09-15_01-39-48 --incremental /data/mysql/backup/

03.查看是否有备份文件,最新的配置文件就是我们刚才的增量备份文件
[root@localhost ~]# ls /data/mysql/backup/
2016-09-15_01-39-48  2016-09-15_01-55-09(增量备份产生的文件夹)
[root@localhost ~]# du -sh /data/mysql/backup/* 
19M /data/mysql/backup/2016-09-15_01-39-48
1.3M /data/mysql/backup/2016-09-15_01-55-09(增量备份产生的文件夹)

在如下的文件中我们可以发现增量备份的文件from_lsn刚好等于全部备份的to_lsn
[root@localhost ~]#  cat /data/mysql/backup/2016-09-15_01-39-48/xtrabackup_checkpoints  #查看全局备份
backup_type = full-backuped
from_lsn = 0
to_lsn = 1597945
last_lsn = 1597945
compact = 0
[root@localhost ~]#  cat /data/mysql/backup/2016-09-15_01-55-09/xtrabackup_checkpoints #查看增量备份
backup_type = incremental
from_lsn = 1597945
to_lsn = 1597945
last_lsn = 1597945
compact = 0
[root@localhost ~]# 

04.向数据库中写一些东西在增量备份的基础上再做增量备份,如下操作

innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --incremental-basedir=/data/mysql/backup/2016-09-15_01-39-48  --incremental /data/mysql/backup/

在使用增量恢复的时候就不能再使用上面的全局备份恢复方法会报错的一碰到,需要使用下面的方法来恢复全局备份,

05.进行增量恢复

innobackupex --apply-log --redo-only /data/mysql/backup/2016-09-15_01-39-48 #恢复全局备份

innobackupex --apply-log --redo-only /data/mysql/backup/2016-09-15_01-39-48 --incremental-dir=/data/mysql/backup/2016-09-15_01-55-09
innobackupex --apply-log --redo-only /data/mysql/backup/2016-09-15_01-39-48--incremental-dir=/data/mysql/backup/2016-09-15_02-05-06

全局备份产生的文件夹 2016-09-15_01-39-48
第一次增量备份产生的文件夹 2016-09-15_01-55-09
第二次增量备份产生的文件夹 2016-09-15_02-05-06

### MariaDB自动备份配置方法与最佳实践 MariaDB 的自动备份可以通过多种工具和方法实现,具体取决于数据库的规模、复杂性以及对备份一致性的要求。以下是关于如何配置 MariaDB 自动备份的最佳实践。 #### 1. 使用 `mysqldump` 进行逻辑备份 `mysqldump` 是 MariaDB 提供的一个简单而灵活的工具,适用于小型数据库或需要逻辑备份的场景。它将数据转储为 SQL 文件,便于恢复和迁移[^3]。 - **备份命令**: ```bash mysqldump -u root -p --all-databases > /backup/mariadb_backup_$(date +%Y%m%d).sql ``` - **定时任务配置**:通过 `cron` 定时执行备份任务。 ```bash crontab -e 0 2 * * * mysqldump -u root -p'your_password' --all-databases > /backup/mariadb_backup_$(date +%Y%m%d).sql ``` 需要注意的是,`mysqldump` 不支持存储过程、视图和事件的备份,除非明确指定相关选项。 #### 2. 使用 `mariabackup` 进行物理备份 对于大型数据库,`mariabackup` 是更高效的选择。它提供了增量备份功能,并能确保备份的一致性[^2]。 - **完全备份**: ```bash mariabackup --user=root --password='your_password' --backup --target-dir=/backup/full_backup/ ``` - **增量备份**: ```bash mariabackup --user=root --password='your_password' --backup --target-dir=/backup/inc_backup/ --incremental-basedir=/backup/full_backup/ ``` - **准备备份**: 在恢复之前,必须使用 `--prepare` 选项处理备份文件。 ```bash mariabackup --prepare --target-dir=/backup/full_backup/ ``` - **恢复备份**: 将备份应用到 MariaDB Server。 ```bash mariabackup --copy-back --target-dir=/backup/full_backup/ ``` #### 3. 使用 Percona XtraBackup Percona XtraBackup 是一个流行的开源工具,专为 MySQLMariaDB 设计,支持热备份和增量备份[^5]。 - **安装 XtraBackup**: ```bash wget https://www.percona.com/downloads/XtraBackup/LATEST/percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm yum install percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm ``` - **完全备份**: ```bash xtrabackup --user=root --password='your_password' --backup --target-dir=/backup/xtrabackup_full/ ``` - **增量备份**: ```bash xtrabackup --user=root --password='your_password' --backup --target-dir=/backup/xtrabackup_inc/ --incremental-basedir=/backup/xtrabackup_full/ ``` - **准备备份**: ```bash xtrabackup --prepare --apply-log-only --target-dir=/backup/xtrabackup_full/ xtrabackup --prepare --target-dir=/backup/xtrabackup_full/ --incremental-dir=/backup/xtrabackup_inc/ ``` - **恢复备份**: ```bash xtrabackup --copy-back --target-dir=/backup/xtrabackup_full/ ``` #### 4. 主从备份方案 如果需要高可用性和灾难恢复能力,可以结合主从复制进行备份。在主数据库上锁定表并生成全量备份后,解锁主数据库并将备份数据同步到从数据库[^4]。 - **主数据库锁定**: ```sql FLUSH TABLES WITH READ LOCK; ``` - **生成全量备份**: ```bash mysqldump -u root -p --master-data=1 --single-transaction --routines --triggers --events --all-databases > /data/db_backup/all.sql ``` - **解锁主数据库**: ```sql UNLOCK TABLES; ``` - **同步到从数据库**: 将生成的 `all.sql` 文件导入到从数据库中。 #### 最佳实践总结 - 根据数据库大小选择合适的工具:小规模数据库推荐 `mysqldump`,大规模数据库推荐 `mariabackup` 或 `xtrabackup`。 - 定期测试备份恢复流程,确保备份文件的完整性和可用性。 - 使用 `cron` 或其他调度工具实现自动化备份。 - 对于关键业务数据,建议结合主从复制和增量备份策略,提高数据安全性和恢复效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值