centos服务器mysql增量备份步骤


增量备份mysql数据

一、 安装 Percona XtraBackup

# 添加 Percona 仓库
sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm  
  
# 安装 Percona XtraBackup  
sudo yum install percona-xtrabackup-83 -y # 注意:版本号可能会变化

二、数据库中创建一些数据

如果数据库中已有默认以外的数据,直接跳过

CREATE TABLE ceshi;			\\添加一个名为ceshi的数据库
use ceshi;					\\使用数据库
#创建一张表
CREATE TABLE test_table (  
    id INT AUTO_INCREMENT PRIMARY KEY,  
    name VARCHAR(100) NOT NULL,  
    age INT NOT NULL,  
    gender ENUM('male', 'female', 'other') NOT NULL  
);
#插入一些数据
INSERT INTO test_table (name, age, gender) VALUES ('alice', 20, 'female');  
INSERT INTO test_table (name, age, gender) VALUES ('bob', 22, 'male');  
INSERT INTO test_table (name, age, gender) VALUES ('charlie', 23, 'male');  
INSERT INTO test_table (name, age, gender) VALUES ('diana', 21, 'female');
#查看一下数据
SELECT * FROM test_table;

在这里插入图片描述
退出数据库

三、创建全备份

首先,你需要为 MySQL 数据库创建一个全备份、这是增量备份的基础

# 使用 xtrabackup 执行完全备份  
xtrabackup --backup -uroot -p'你的密码' --target-dir=/data/backup/base  --no-server-version-check 

注意:在实际操作中,请不要直接在命令行中包含密码,而是通过配置文件或环境变量来管理密码

四、创建增量备份

在进行了全备份之后,你可以根据需要创建多个增量备份

增量备份只包含自上次备份(无论是全备份还是增量备份)以来发生更改的数据

1. 在数据库中添加数据,让数据发生一些改变
use ceshi			\\使用ceshi库

INSERT INTO test_table (name, age, gender) VALUES ('增量_1', 20, 'female');  
INSERT INTO test_table (name, age, gender) VALUES ('增量_1', 22, 'male');  
INSERT INTO test_table (name, age, gender) VALUES ('增量_1', 23, 'male');  
INSERT INTO test_table (name, age, gender) VALUES ('增量_1', 21, 'female');

在这里插入图片描述

2. 创建第一个增量备份
#创建第一个增量备份(基于全备份)
 xtrabackup --backup -uroot -p'你的密码' --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup/base --no-server-version-check

在这里插入图片描述

3. 数据库中再次添加一些数据
use ceshi			\\使用ceshi库

INSERT INTO test_table (name, age, gender) VALUES ('增量_2', 20, 'female');  
INSERT INTO test_table (name, age, gender) VALUES ('增量_2', 22, 'male');  
INSERT INTO test_table (name, age, gender) VALUES ('增量_2', 23, 'male');  
INSERT INTO test_table (name, age, gender) VALUES ('增量_2', 21, 'female');

在这里插入图片描述

4. 创建第二个增量备份
#创建第二个增量备份(基于第一个增量备份)
xtrabackup --backup -uroot -p'TianJunnan@123' --target-dir=/data/backup/inc2 --incremental-basedir=/data/backup/inc1 --no-server-version-check

五、模拟数据丢失,删库

 rm -rf /var/lib/mysql/*		\\删除mysql下的所有数据
 #这时mysql数据库已经登不上了
 systemctl stop mysqld			\\停止mysql数据库

如果无法停止数据库,查询一下mysql服务的进程号,使用kill -9 进程号 强杀

ps -ef | grep mysqld			\\查询mysql的进程号
kill -9 进程号					\\强行停止进程

六、准备备份数据

在恢复之前,你需要准备备份数据。这包括应用全备份中的所有更改,并依次应用每个增量备份中的更改。

#准备全备份
 xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base --no-server-version-check
#准备第一个增量备份(应用到全备份上)
 xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base --incremental-dir=/data/backup/inc1 --no-server-version-check
#准备第二个增量备份(应用到第一个增量备份上)
 xtrabackup --prepare  --target-dir=/data/backup/base --incremental-dir=/data/backup/inc2 --no-server-version-check

注意:–apply-log-only 选项用于准备备份但不合并重做日志,这在有多个增量备份时很有用。在最后一个增量备份后,你可以省略此选项以合并重做日志

七、恢复数据

#保证mysql下没有任何数据,再次清空mysql
rm -rf /var/lib/mysql/*
#恢复数据
 xtrabackup --copy-back --target-dir=/data/backup/base
#将恢复的数据给上mysql用户权限
chown -R mysql.mysql /var/lib/mysql
#重启mysql
 systemctl restart mysqld
#登录mysql
mysql -uroot -p'你的密码';
#查看所有数据库
show databases;

发现ceshi数据库回来了
在这里插入图片描述

#使用ceshi库
use ceshi
#查询所有表
show tables;

在这里插入图片描述
查询表中数据

select * from test_table;

可以看到所有的增量备份的数据都在了
在这里插入图片描述

回到顶层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值