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

mysql8.4备份与恢复实践

服务器版本

#cat /etc/os-release

openEuler 22.03 (LTS-SP4)

数据库与数据信息

数据库版本:

#mysql --version

mysql  Ver 8.4.5 for Linux on x86_64 (MySQL Community Server - GPL)

数据库:testdb1

表t_1,t_2,t_3,t_4

表初始数据:

物理冷备份与恢复

物理冷备份:

停止mysql服务

#systemctl stop mysql

打包压缩data目录:

#cd /opt/software/mysql/mysql-8.4.5-linux-glibc2.28-x86_64/data

#tar -zcvf $(date +%Y%m%d%H%M%S).tar.gz *

这样冷备份就完成了,这种备份简单,适合非核心业务场景,能很好地保证数据库的完整性。由于备份过程简单直接,所以备份和恢复速度都比较快。但缺点也很明显,需要停机操作,这在一些对业务连续性要求较高的场景中不太适用。 

物理恢复:

模拟数据丢失:

停止mysql服务

#systemctl stop mysql

备份现有data目录:

执行:

#mv data data_bak2

然后新建一个空data目录:

执行:

#mkdir data

 将物理冷备份的压缩文件包复制到data目录

执行:

将备份的数据解压恢复到data目录:

#tar -xzf 20250607111223.tar.gz 

启动mysql服务:

#systemctl start mysql

登录数据库查看数据是否恢复:

 

恢复成功!

Mysqldump逻辑热备份与恢复

mysqldump常用选项

--databases或-B:备份指定的数据库
--all-databases或-A:备份所有数据库
-d或--no-data:用于备份数据库的结构(即表的创建语句)但不包括表中的数据
--flush-logs或-F :在备份开始前刷新 MySQL 服务器的日志文件
--single-transaction:使用单一事务来备份数据
--lock-all-tables :备份过程中锁定所有表
--master-data=2 :用于备份二进制日志的位置信息,用于设置主从复制
--set-gtid-purged=OFF :用于关闭 GTID 信息的输出

 举例:

mysqldump -u 用户 -p密码  --databases testdb1 testdb2 > mysqldump_20250611_testdb.sql          #备份一个或多个指定库及库中的所有表
 
mysqldump -u 用户 -p密码  --all-databases > mysqldump_20250611_all.sql              #备份所有库及库中的所有表
 
mysqldump -u 用户 -p密码  --all-databases | gzip > mysqldump_20250611_all.sql.gz
 
mysqldump -u 用户 -p密码  testdb1 t_1 t_2 > mysqldump_20250611.sql                 #备份指定库中的一个或多个表(不包含库对象本身)

备份testdb1数据库:

执行:

#mysqldump -u root -p -B testdb1 > $(date +%Y%m%d%H%M%S).sql

模拟数据丢失:

查看当前t_1,t_2,t_3,t_4表数据:

模拟丢失数据:

 恢复testdb1数据库:

#mysql -u root -p  < /opt/software/mysql/mysql-8.4.5-linux-glibc2.28-x86_64/data_backup/20250611111101.sql

验证恢复情况:

结论:数据恢复正常

PXB(Percona XtraBackup)备份与恢复

Percona XtraBackup是世界上唯一一款开源的免费MySQL热备份软件,可以为InnoDB和XtraDB数据库执行非阻塞备份。
使用Percona XtraBackup,可以获得以下好处:

快速可靠地完成备份
备份期间不间断的事务处理
节省磁盘空间和网络带宽
自动备份验证
由于恢复时间更快,正常运行时间更长
Percona XtraBackup对所有版本的Percona Server for MySQL和MySQL进行MySQL热备份。它执行流式、压缩和增量MySQL备份。
注意:
随着Percona XtraBackup 8.0的推出,Percona XtraBackup 2.4将继续支持MySQL和Percona Server 5.6和5.7数据库。由于新的MySQL重做日志和数据字典格式,Percona XtraBackup 8.0.x版本将只与MySQL8.0.x和即将推出的用于MySQL8.0.x的Percona服务器兼容。

下载PXB:

下载地址:

https://www.percona.com/downloads/XtraBackupDownload free, open source software for MySQL including Percona Server, Percona XtraBackup, Percona Toolkit, Percona XtraDB Cluster, and more. Download now!https://www.percona.com/downloads/XtraBackup

 

查看服务器的glibc版本,然后选择对应的版本下载

查看glibc版本方法,执行:

#rpm -q glibc

安装PXB:

将下载PXB上传到服务器目录:/opt/software/mysql/pxb,然后解压:

#tar -zxvf percona-xtrabackup-8.4.0-3-Linux-x86_64.glibc2.34

 设置环境变量:

#vi /etc/profile

增加:

export XTRABACKUP_HOME=/opt/software/mysql/pxb/percona-xtrabackup-8.4.0-3-Linux-x86_64.glibc2.34
export PATH=$PATH:$HOME/bin:$XTRABACKUP_HOME/bin

使环境变量生效,执行:

#source /etc/profile

 验证PXB安装是否成功,执行:

#xtrabackup --version

报错:xtrabackup: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
即缺失:libssl.so.3 包,这个包位于openssl包中

查看服务器openssl版本,发现是1.1版本,需要升级至3.x

下载openssl3.x这个包

#wget https://www.openssl.org/source/openssl-3.0.12.tar.gz

或者在本地下载下来然后上传到服务器,下载地址:

Downloads | OpenSSL Library https://openssl-library.org/source/

 解压openssl-3.0.12.tar.gz:

#tar -zxvf openssl-3.0.12.tar.gz

安装openssl3:

#cd openssl-3.0.12

#./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl

#make
#make install

创建软件链接:

#ln -s /usr/local/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
#ln -s /usr/local/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3

更新动态库缓存:

#ldconfig

继续验证PXB是否安装成功

#xtrabackup --version

报错:

xtrabackup: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by xtrabackup)

xtrabackup: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by xtrabackup)

则需要安装libstdc++ 高版本

检测libstdc++当前版本

#strings /usr/lib64/libstdc++.so.6 | grep CXXABI

如果输出:

CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
...

中没有CXXABI_1.3.13,说明系统自带的 libstdc++ 版本太低,需要升级

执行:

#dnf install libstdc++-devel libstdc++

检查检查当前 libstdc++.so.6 版本:

#strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

如果 没有 GLIBCXX_3.4.29,说明需要升级 libstdc++,执行:

#dnf install gcc-toolset-12-gcc.x86_64

始终未能安装成功,求高人指点!

http://www.xdnf.cn/news/13274.html

相关文章:

  • bilibili-mcp 使用示例
  • 7.6 Finetuning the LLM on instruction data
  • 论文分享 _ Ladder:一种基于收敛的结构化图区块链_2025-06-10
  • 实战案例-FPGA如何实现JESD204B可重复的延迟
  • 2005-2021年中国地下水位年鉴数据(EXCEL/PDF)包含:各省监测点、监测深度等
  • 【存储系统】
  • 理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
  • 全新AI驱动Workspace Security 套件发布!Fortinet 电子邮件安全产品矩阵升级
  • PHP 多种内置的验证规则和函数
  • 在Jenkins上配置邮箱通知
  • 2025-03-15-位运算
  • 第一部分 -- ①语法分析的概要
  • Yolov5.6增加注意力机制+ByterTrack:目标检测与跟踪
  • Linux(Centos 7.6)命令详解:find
  • 揭秘OpenJDK 17字节码解释引擎:模板解释器深度解析
  • C++ 中的尾调用优化TCO:原理、实战与汇编分析
  • 鹰盾加密器如何对视频进行分析?
  • 工模、老化apk中Framewok定制开发的场景
  • Docker 操作容器[SpringBoot之Docker实战系列] - 第538篇
  • 常用数组方法、字符串方法、数组 ↔ 字符串 的转换、TS类型提示 (大全)
  • 二.Gitee分支管理
  • 端口转发和SSH隧道的含义详解及使用方法
  • 用哈希表封装myunordered_map和 myunordered_set(沉淀中)
  • 【Linux基础知识系列】第十七篇-使用Docker进行容器管理
  • 华为OD机试_2025 B卷_相对开音节(Python,100分)(附详细解题思路)
  • 大语言模型原理与书生大模型提示词工程实践-学习笔记
  • 目标跟踪_学习
  • GNSS位移监测站的作用
  • 龙蜥开发者说:我的龙蜥开源之旅 | 第 32 期
  • 寄存器被改写问题总结