基础环境:

阿里云ECS
RockyLinux 9.4 – 5.14.0-427.24.1.el9_4.x86_64
mysql Ver 8.4.2 for Linux on x86_64 (MySQL Community Server - GPL)
xtrabackup version 8.0.35-31 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 55ec21d7)
qpress 1.1

MySQL数据恢复、Binlog解析需要版本对应,跨大版本肯定是不行了,即8.0的备份、Binlog只能在8.0上还原、解析;

数据库环境搭建

操作系统环境准备,基础包准备

yum install -y vim wget tar

1.关闭selinux

查看状态
getenforce

Enforcing:强制模式,代表SELinux运行中,且已经正确开始限制domain/type
Permissive:宽容模式,代表SELinux运行中,不过仅会有警告信息并不会实际限制domain/type的读写(这种模式可以用来作为SELinux的debuug之用)
Disabled:关闭模式,SELinux并没有实际运行

临时关闭
setenforce 0

永久关闭
vim /etc/selinux/config
SELINUX=disabled

reboot

2.关闭swap

swapon --show

临时关闭
swapoff /dev/dm-1

永久关闭
vim /etc/fstab
注释掉
UUID=xxxx-xxxx none swap sw 0 0 或者 /dev/sdXN none swap sw 0 0

更新 grub
grub2-mkconfig -o /boot/grub2/grub.cfg
重启系统
reboot

3.关闭防火墙

systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

4.修改内核参数

vim /etc/sysctl.conf
fs.aio-max-nr= 1048576
fs.file-max= 6815744
kernel.shmall= 2097152
kernel.shmmax= 4294967295
kernel.shmmni= 4096
kernel.sem= 250 32000 100 128
net.ipv4.ip_local_port_range= 9000 65500
net.core.rmem_default= 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576

vm.swappiness = 0

生效

/sbin/sysctl -p
/sbin/sysctl -a 

5.修改资源使用参数

vim /etc/security/limits.conf
# *表示所有用户,可只设置root和kingbase用户
* soft nofile 65536
# 注意:设置nofile的hard limit不能大于/proc/sys/fs/nr_open,否则注销后将无法正常登陆
* hard nofile 65535
* soft nproc 65536
* hard nproc 65535
# unlimited表示无限制
* soft core unlimited
* hard core unlimited

6.RemoveIPC参数

关闭RemoveIPC。CentOS操作系统默认为关闭,可以跳过该步骤。

vim  /etc/systemd/logind.conf
RemoveIPC=no

vim /usr/lib/systemd/system/systemd-logind.service
RemoveIPC=no
# 重新加载
systemctl daemon-reload
systemctl restart systemd-logind.service

# 验证
loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC

7.时区设置

export TZ=CST-8
yum install ntpdate -y
ntpdate cn.ntp.org.cn

8.关闭透明大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled

888.设置LOCAL

查看

locale -a
有些国产库安装的时候需要中文显示
需要设置
export LANG=zh_CN.utf8

dnf install glibc-langpack-zh.x86_64
echo LANG=zh_CN.UTF-8 > /etc/locale.conf
source /etc/locale.conf
locale -a

9.数据盘挂载

lsblk
fdisk /dev/sdb
n 
p
#1
t 
#1
8e
w

fdisk -l
pvcreate /dev/sdb1
pvs

vgcreate vgmysql /dev/sdb1
vgs

lvcreate -L 99.9G -n lvmysql vgmysql
lvs

mkfs.ext4 /dev/vgmysql/lvmysql

mkdir /mysqldata
mount /dev/mapper/vgmysql-lvmysql /mysqldata

vim /etc/fstab
/dev/mapper/vgmysql-lvmysql /mysqldata ext4 defaults 0 0

重启操作系统
reboot

10.数据库安装

官方安装文档

wget https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
yum localinstall -y mysql84-community-release-el9-1.noarch.rpm
yum repolist enabled | grep mysql.*-community

yum repolist all | grep mysql

dnf config-manager --enable mysql-8.4-lts-community

yum install -y mysql-community-server

mkdir -p /mysqldata/{data,logs}
touch /mysqldata/logs/slow.log
touch /mysqldata/logs/mysqld.log
touch /mysqldata/logs/error.log
chmod 640 /mysqldata/logs/error.log
chmod 640 /mysqldata/logs/slow.log
chown -R mysql:mysql /mysqldata
chmod 750 -R /mysqldata/

编译配置文件

# chmod 644 /etc/my.cnf

vim /etc/my.cnf

datadir=/mysqldata/data
port=3306
socket=/var/lib/mysql/mysql.sock
pid-file=/var/run/mysqld/mysqld.pid
server_id=1
autocommit=1

log_error=/mysqldata/logs/error.log
lower_case_table_names=1
slow_query_log=1
slow_query_log_file=/mysqldata/logs/slow.log
long_query_time=1

innodb_buffer_pool_size=6G
max_connections=512
wait_timeout=1800

performance_schema=1
local_infile=1
default-time_zone = '+8:00'
# event_scheduler=ON
# sql_mode=''

# binlogs
binlog_row_image=full
binlog_row_metadata=full

[mysqldump]
user=user_backup
password="Lunz@2024"

启动数据库

systemctl start mysqld
# 获取临时密码
cat /mysqldata/logs/error.log|grep pass|awk '{print $NF}'

#更新root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lunz@2017';

# 允许root用户远程连接
use mysql;
update user set Host = '%' where User='root';

FLUSH PRIVILEGES;

验证所需工具

mysqldump --help
mysqlbinlog --help

数据库还原工具安装

这里使用 阿里云 XtraBackup 8.0

由于RDS MySQL 8.0有新增Redo类型,开源版本的Percona XtraBackup可能存在兼容性问题。因此请下载阿里云RDS提供的XtraBackup工具。

Linux 6(基于x86_64架构)

sudo yum localinstall -y t-rds-xtrabackup-80-8.0.31-20230817110455.alios6.x86_64

Linux 7(基于x86_64架构)

sudo yum localinstall -y t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm

Linux 7(基于ARM AArch64架构)

sudo yum localinstall -y t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.aarch64.rpm

Linux 8(基于ARM AArch64架构)

sudo yum localinstall -y t-rds-xtrabackup-80-8.0.31-20230817110455.al8.aarch64.rpm

说明:安装完成后,Percona XtraBackup的可执行文件将位于/u01/xtrabackup80/bin目录下,该目录路径默认不会被添加到Linux系统的PATH环境变量中。

[root@iZbp1ctgni579msvzghxk4Z ~]# wget https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230825/kpof/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm
--2024-08-16 09:44:00--  https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230825/kpof/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm
Resolving help-static-aliyun-doc.aliyuncs.com (help-static-aliyun-doc.aliyuncs.com)... 121.89.58.187, 121.89.58.189, 121.89.58.190, ...
Connecting to help-static-aliyun-doc.aliyuncs.com (help-static-aliyun-doc.aliyuncs.com)|121.89.58.187|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 300957476 (287M) [application/x-rpm]
Saving to: ‘t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm’

t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x8 100%[===================================================================================================================>] 287.01M  10.8MB/s    in 24s     

2024-08-16 09:44:24 (12.0 MB/s) - ‘t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm’ saved [300957476/300957476]

[root@iZbp1ctgni579msvzghxk4Z ~]# yum localinstall t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm 
Last metadata expiration check: 2:18:12 ago on Fri 16 Aug 2024 07:26:29 AM CST.
Dependencies resolved.
================================================================================================================================================================================================================
 Package                                              Architecture                            Version                                                       Repository                                     Size
================================================================================================================================================================================================================
Installing:
 t-rds-xtrabackup-80                                  x86_64                                  8.0.31-20230817110455.alios7                                  @commandline                                  287 M

Transaction Summary
================================================================================================================================================================================================================
Install  1 Package

Total size: 287 M
Installed size: 1.2 G
Is this ok [y/N]:
find / -name xtrackbackup
vim ~/.bash_profile
# 添加
export XTB="/u01/xtrabackup80/bin"
export PATH="$XTB:$PATH"
# 生效
source ~/.bash_profile

如果阿里云系统为CentOS 7 以上,建议装Percona官方版本

wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/9/x86_64/percona-xtrabackup-80-8.0.35-31.1.el9.x86_64.rpm?_gl=1*1pig9ys*_gcl_au*MTIwNjc4NDg3NS4xNzIzNzczMDU1 -O percona-xtrabackup-80-8.0.35-31.1.el9.x86_64.rpm
[root@iZbp1ctgni579msvzghxk4Z ~]# yum localinstall percona-xtrabackup-80-8.0.35-31.1.el9.x86_64.rpm
Last metadata expiration check: 3:33:31 ago on Mon 19 Aug 2024 05:12:08 AM CST.
Dependencies resolved.
================================================================================================================================================================================================================================
 Package                                                     Architecture                                 Version                                                      Repository                                          Size
================================================================================================================================================================================================================================
Installing:
 percona-xtrabackup-80                                       x86_64                                       8.0.35-31.1.el9                                              @commandline                                        37 M
Installing dependencies:
 libev                                                       x86_64                                       4.33-5.el9                                                   baseos                                              52 k
 mariadb-connector-c                                         x86_64                                       3.2.6-1.el9_0                                                appstream                                          195 k
 perl-DBD-MySQL                                              x86_64                                       4.050-13.el9                                                 appstream                                          145 k
 perl-DBI                                                    x86_64                                       1.643-9.el9                                                  appstream                                          700 k
 perl-DynaLoader                                             x86_64                                       1.47-481.el9                                                 appstream                                           24 k
 perl-Math-BigInt                                            noarch                                       1:1.9998.18-460.el9                                          appstream                                          188 k
 perl-Math-Complex                                           noarch                                       1.59-481.el9                                                 appstream                                           45 k
 zstd                                                        x86_64                                       1.5.1-2.el9                                                  baseos                                             546 k

Transaction Summary
================================================================================================================================================================================================================================
Install  9 Packages

Total size: 39 M
Total download size: 1.9 M
Installed size: 197 M
Is this ok [y/N]: y
[root@iZbp1ctgni579msvzghxk4Z ~]# xtrabackup --version
2024-08-19T08:53:37.348999+08:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/mysqldata/data --server-id=1 --innodb_buffer_pool_size=6G 
xtrabackup version 8.0.35-31 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 55ec21d7)
[root@iZbp1ctgni579msvzghxk4Z ~]# mysql --version
mysql  Ver 8.4.2 for Linux on x86_64 (MySQL Community Server - GPL)

安装解压工具 qpress

wget "https://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/file-manage-files/zh-CN/20230406/flxd/qpress-11-linux-x64.tar"
tar -xvf qpress-11-linux-x64.tar

mv qpress /usr/local/bin/
sudo chmod 775 /usr/local/bin/qpress

下载备份文件

注意复制的网址需要用单引号,再加 -O 指定保存文件名称

解压备份文件包

_xb.qp后缀

qpress -do hins23171014_data_20231204031428_xb.qp | xbstream -x -v -C /var/mysql_bkdata/

_qp.xb后缀

cat hins24302919_data_20231117033429_xb.qp | xbstream -x -v -C /var/mysql_bkdata/
xtrabackup --decompress --remove-original --target-dir=/var/mysql_bkdata/

恢复前准备

/u01/xtrabackup80/bin/xtrabackup --defaults-file=/var/mysql_bkdata/backup-my.cnf  --prepare --target-dir=/var/mysql_bkdata/

恢复数据

sudo xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/var/mysql_bkdata/