1.关于备份:
MySQL中有完全备份、增量备份和差异备份三种常见的备份策略,这次使用增量备份
定义:增量备份仅备份自上一次备份(无论是完全备份还是增量备份)以来发生变化的数据。
特点:依赖于上一次备份,仅备份变化的部分,因此备份文件较小,但恢复时需要结合之前的备份。
优点:备份文件较小,节省存储空间。
缺点:恢复时需要应用所有的增量备份,可能需要更多的时间。
2.下载备份软件percona-xtrabackup80(mysql80)
安装yum仓库
YUM安装perconna仓库
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
如果无法直接安装,可以尝试先下载,再安装
wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install -y percona-release-latest.noarch.rpm
安装之前先启用perconna仓库
percona-release enable-only tools release
注意:xtrabackup8.0只支持mysql8.0以上的版本,mysql5.7或以下需要使用xtrabackup8.0以下的版本
yum install percona-xtrabackup-83
3.增量备份
不管是什么备份,首先都要进行一次完整备份
可以先看我的上篇文章,做一次完整备份
完整备份
1.增量备份1
mysql -uroot -p'LiuDeHua@123'
create database inc1;
create table inc1.t1 (id int,name varchar(10));
use inc1;
insert into t1 values (1,'增量备份'),(2,'增量备份');
select * from t1;
\q
2.开始增量备份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup/base -uroot -p'LiuDeHua@123' -H localhost -P 3306 --no-server-version-check
--defaults-file 默认文件
--backup 备份
--target-dir 备份存放的目录,要单独存放 此时为/data/backup/inc1/
注意此时就不要放在完全备份的文件夹(data/backup/base)中
如果还放在这里,无法进行区分,会产生冲突
incremental-basedir 增量备份参照的文件(参照谁进行增量)
查看备份是否成功
ls /data/backup/inc1
3.增量备份2
修改数据
mysql -uroot -p'LiuDeHua@123'
use inc1;
insert into t1 values (3,'增量备份'),(4,'增量备份');
select * from t1;
\q
开始备份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/backup/inc2 --incremental-basedir=/data/backup/inc1 -uroot -p'LiuDeHua@123' -H localhost --no-server-version-check
--target-dir=/data/backup/inc2/ 用了存储第二次的增量备份文件
incremental-basedir=/data/backup/inc1/ 第二次要参照第一次进行备份(增量备份参照上一次)
查看备份是否成功
ls /data/backup/inc2
4.恢复增量备份
- 还原的时候,要先准备好完整备份
- 然后再还原增量备份,这样数据才是完整的
注意最后一次把增量备份恢复到全部不要加 --apply-log-only(表示后面还有备份)
应用完整备份
xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/base --no-server-version-check
应用增量备份1
xtrabackup --defaults-file=/etc/my.cnf --prepare --apply-log-only --target-dir=/data/backup/base --incremental-basedir=/data/backup/inc1 --no-server-version-check
应用增量备份2 注意此时不需要加–apply-log-only
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/backup/base --incremental-basedir=/data/backup/inc2 --no-server-version-check
恢复到数据目录
全库级恢复要先停止数据库并清空数据目录
如果不这样做,当前数据库内有某张表,又还原进同样的表,会产生冲突
systemctl stop mysqld
rm -rf /var/lib/msyql/*
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/base
将备份文件的文件属主属组设为msyql
chown -R mysql.mysql /var/lib/msyql
启动msyql
systemctl start msyqld
获取默认密码,修改密码
awk '/password/ {print $NF}' /var/log/mysqld.log
mysqladmin -uroot -p"获取的默认密码" password "新密码"
登录msqyl,查看数据库
msyql -uroot -p'密码'
show databases;
use inc1;
show tables;
select * from t1;
标签:inc1,MySQL8,data,备份,--,增量,backup
From: https://blog.csdn.net/pch330818/article/details/140388390