当前位置: 首页 > news >正文

xtrabackup全备 增备

版本针对mysql8.0版本

官方下载地址 https://www.percona.com/downloads

自行选择下载方式

yum安装方式 

 1、下载上传服务器 安装软件 

[root@master mysql]# ll percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm
-rw-r--r--. 1 root root 44541856 Oct 10 13:25 percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm
[root@master mysql]# yum -y install percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm
[root@master ~]# xtrabackup -version
2023-10-11T15:13:58.035145+08:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/usr/local/mysql/data
xtrabackup version 8.0.33-28 based on MySQL server 8.0.33 Linux (x86_64) (revision id: b3a3c3dd)
[root@master ~]#

自行安装mysql 作为测试数据库使用

或者使用此脚本

注意 需要修改

数据库下载地址

https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster-8.0.33-linux-glibc2.12-x86_64.tar.xz

tar -xvf /opt/src/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local/

要下载mysql软件包 上传到服务器的指定目录

[root@master ~]# cat install_mysql.sh
#!/bin/bashcheck_mysql_installed() {local num=$(pgrep mysqld |wc -l)if [ $num -eq 2 ]; thenecho "MySQL is already installed."return 0elsereturn 1fi
}install_mysql() {tar -xvf /opt/src/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local/cd /usr/local && mv mysql-8.0.33-linux-glibc2.12-x86_64/ mysql/mkdir -p /var/lib/mysqlmkdir -p /usr/local/mysql/datamkdir -p /usr/local/mysql/loggroupadd mysqluseradd -r -g mysql mysqlchown -R mysql:mysql /usr/local/mysqlchmod -R 777         /var/lib/mysql/chown -R mysql:mysql /usr/local/mysql/datachown -R mysql:mysql /usr/local/mysql/logchown -R mysql:mysql /var/lib/mysql/mysql.sockrm -rf /etc/my.cnfcat > /etc/my.cnf <<EOF
[mysql]
default-character-set=utf8[mysqld]
lower-case-table-names=1
port=3306
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=100000
wait_timeout=3153600
character-set-server=utf8
default-storage-engine=InnoDB
max_allowed_packet=200M
pid-file=/usr/local/mysql/mysqld.pid
log-error=/usr/local/mysql/log/mysqld.log
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
EOFcd /usr/local/mysql./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/cp ./support-files/mysql.server /etc/rc.d/init.d/mysqldln -sv /usr/local/mysql/bin/mysql /usr/bin/mysqlchkconfig --add mysqldsystemctl start mysqld
}if check_mysql_installed; thenexit 0
elseinstall_mysqlif check_mysql_installed; thenecho "MySQL installed successfully."elseecho "Failed to install MySQL."fi
fi

数据库默认密码查看 cat tailf /usr/local/mysql/log/mysqld.log

1、mysql -uroot -p

输入初始密码

进入数据库先修改密码,不修改密码不能使用

alter user "root"@"localhost" identified by '123456';

表示用户"root"可以从任何主机连接到MySQL数据库,方便我们使用外部工具

update mysql.user set host="%" where user="root";

创建一个给备份时候用的数据库

create user "back"@"%" identified by "123456";

#这个注意授权的权限我开启的全部,因为是测试环境为了方便,如果是给公司生产上使用,建议还是规范使用授权

grant all on *.* to "back"@"%";

FLUSH PRIVILEGES;

创建数据库就自行创建,使用工具点点就创建了

=========================================================================

在开始全量备份前 准备一些测试数据库方便验证

开始全量备份

# 全量备份数据库 
mkdir -p /backup/full
xtrabackup --backup --target-dir=/backup/full --user=back --password=123456 --host=192.168.25.129 --port=3306# 备份数据目录
mv /usr/local/mysql/data/ /usr/local/mysql/databak  # 重命名表示已备份数据目录# 停止 MySQL 服务器
systemctl stop mysql# 创建新的数据目录
mkdir /usr/local/mysql/data/  # 创建新的数据目录以准备恢复
chown -R mysql:mysql /usr/local/mysql/data  # 设置目录所有者为MySQL用户# 准备备份数据
xtrabackup --prepare --apply-log-only --target-dir=/backup/full/
xtrabackup --prepare --target-dir=/backup/full/# 复制备份数据到新的数据目录
xtrabackup --copy-back --target-dir=/backup/full/# 设置新的数据目录的权限
chown -R mysql:mysql /usr/local/mysql/data/*# 启动 MySQL 服务器
systemctl start mysql

 在执行第一步全量备份后把初始数据库的data目录给更改后创建新的空data目录,就是等于把data  给清空

在执行后面的恢复数据库登录数据库查看还是正常的数据

 

=========================================================================

上面是全量的备份、恢复

增量数据备份 恢复就是在全量备份的基础上继续备份,备份的数据是后续生产的数据

比如 早上9点全量备份后   增量备份是在下午6点,那么这一次的增量数据就是9点到6点的数据

上面已经做过全量备份全量备份的目录是在 /backup/full 里面

开始增量备份前需要数据库在创建一些测试数据经行对比

自己自行创建创建完成后执行

1、创建测试数据  执行下面语句

xtrabackup --backup --target-dir=/backup/inc1 --user=back --password=123456 --host=192.168.25.129 --port=3306 --incremental-basedir=/backup/full

注意  上下这俩个都是增量备份数据的恢复  一个是inc1  一个是inc2

inc1数据目录是根据/backup/full 后开始备份

inc2数据目录是根据/backup/inc1后开始备份

inc1备份数据  也要和inc2数据有些区别

这个最后会解释

2、创建不一样的测试数据  执行下面语句

xtrabackup --backup --target-dir=/backup/inc2 --user=back --password=123456 --host=192.168.25.129 --port=3306 --incremental-basedir=/backup/inc1

 重复操作删除数据库的data目录

3、删除data mysql数据库目录   
mv /usr/local/mysql/data /usr/local/mysql/data5 4、创建新的 授权mysql
mkdir /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/data/# 在备份目录执行以下命令以准备全量备份数据
xtrabackup --prepare --apply-log-only --target-dir=/backup/full/# 接下来,添加第一个增量备份
xtrabackup --prepare --apply-log-only --target-dir=/backup/full/ --incremental-dir=/backup/inc1/# 如果有第二个增量备份,也可以添加它
xtrabackup --prepare --apply-log-only --target-dir=/backup/full/ --incremental-dir=/backup/inc2/# 最后的准备,这会完成整个数据库恢复
xtrabackup --prepare --target-dir=/backup/full/# 将数据拷贝回MySQL数据目录
xtrabackup --copy-back --target-dir=/backup/full/# 修改MySQL数据目录的所有者,以确保MySQL可以访问
chown -R mysql:mysql /usr/local/mysql/data/*# 重新启动MySQL服务以加载恢复后的数据
systemctl restart mysqld

查看是否恢复了全部数据

上面是完整的使用操作,有问题留言

注意: 每次备份在备份数据库的目录下都有xtrabackup_checkpoints文件 

这是我的三个

cat /backup/full/xtrabackup_checkpoints[root@master ~]# cat /backup/full/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 19679426
last_lsn = 19679426
flushed_lsn = 19679426
redo_memory = 0
redo_frames = 0[root@master ~]# cat /backup/inc1/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 19639598
to_lsn = 19653067
last_lsn = 19653067
flushed_lsn = 19653067
redo_memory = 0
redo_frames = 0[root@master ~]# cat /backup/inc2/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 19653067
to_lsn = 19679426
last_lsn = 19679426
flushed_lsn = 19679426
redo_memory = 0
redo_frames = 0


[root@master ~]#

备份的 开始是 LSN(from_lsn )

结束是 LSN(to_lsn),

from_lsn 应该等于上一步备份的 to_lsn

要保证 inc1的to_lsn是19653067    inc2的from_lsn是 19653067

所以每次增量都是从上次一的尾开始到第一次的头结束

不然会有这个报错

2023-10-11T14:20:41.209319+08:00 0 [ERROR] [MY-011825] [Xtrabackup] This incremental backup seems not to be proper for the target.
2023-10-11T14:20:41.209325+08:00 0 [ERROR] [MY-011825] [Xtrabackup] Check 'to_lsn' of the target and 'from_lsn' of the incremental.

生产环境使用脚本 比如 每8天晚上11点经行一次全量备份   每个3天的晚上11一次增备份

主备份可以每次生成一个时间戳文件,检测/back下面的文件删除30天之前文件,增倍目录也是一样的操作

/back/时间戳

增备份一个目录

 

 

http://www.lryc.cn/news/191272.html

相关文章:

  • 【广州华锐互动】灭火器使用VR教学系统应用于高校消防演练有什么好处?
  • Pymol做B因子图
  • EKF例程 matlab
  • 【C语言】atoi函数的模拟
  • JAXB 使用记录 bean转xml xml转bean 数组 继承 CDATA(转义问题)
  • Linux Centos安装Sql Server数据库,结合cpolar内网穿透实现公网访问
  • Vulnhub系列靶机---Raven: 2
  • 计算机视觉与深度学习 | 视觉惯性SLAM的基础理论
  • [电源选项]没有系统散热方式,没有被动散热选项
  • 房产中介租房小程序系统开发搭建
  • RS485电路设计
  • 分布式文件服务器——Windows环境MinIO的三种部署模式
  • 科技资讯|9月新能源汽车零售74.3万辆,充电桩迎来发展高峰
  • 【C++ Primer Plus学习记录】指针——小结
  • Android Studio for Platform (ASfP) 使用教程
  • 【安全】linux audit审计使用入门
  • 如何优雅的终止 Docker 容器
  • SXSSFWorkbook-MinIo-大数据-流式导出
  • 使用PyQt5创建图片查看器应用程序
  • 怎样制作一个展会场馆预约小程序
  • 呼叫中心系统信息发送功能的应用
  • Android笔记(三)多Activity活动的切换中的简化处理
  • vue打包压缩
  • Mysql5.7大限将至升级Mysql 8.0过程记录(未完)
  • 多架构环境下docker-compose部署rocketmq单机模式—— 筑梦之路
  • [Unity][VR]Passthrough2-创建一个基本的Passthrough应用
  • 【Unity3D赛车游戏制作】设置面板搭建——UGUI复合控件
  • 如何让 Source Insight 识别 AUTOSAR 宏定义 FUNC
  • sts搭建springboot
  • 解决react使用css module无法重写bootstrap样式的问题