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

★CentOS:MySQL数据备份

一、cp 命令备份

特点:

  • 优点:备份恢复数据快:直接复制文件,无需进行数据转换和复杂的处理,因此备份恢复速度非常快
  • 缺点:需要停止数据库服务,灵活性差,占用空间大,可移植性差

使用:

停止数据库

创建备份目录:mkdir -p /usr/local/bin/mysql/data_backup_a

备份:

        cp -a /usr/local/bin/mysql/data/* /usr/local/bin/mysql/data_backup_a/

恢复:

        先备份:mv /usr/local/bin/mysql/data/ /usr/local/bin/mysql/data_backup_1

        再恢复:cp -a /usr/local/bin/mysql/data_backup_a/* /usr/local/bin/mysql/data/

注:保证所有目录都存在(不存在就创建 mkdir -p )

二、mysqldump全量备份

特点:

优点:备份文件是 SQL 语句,可以直接查看和编辑。支持热备份,可以对正在运行的数据库进行备份,而无需停止服务。跨平台,易恢复,可压缩

缺点:备份速度较慢:对于大型数据库,备份过程可能需要较长时间;恢复速度较慢:恢复时需要逐条执行 SQL 语句,速度可能比直接复制文件慢;数据一致性问题: 如果在备份过程中有数据写入,可能导致备份数据不一致。未压缩的 SQL 文件可能占用较多存储空间。备份期间可能影响性能。

使用:

注:可以备份所有库、单个库、某张表、压缩,太多了这里以单个库为例(如果是docker,为容器中目录)

备份:

mysqldump -u root -p --single-transaction --flush-logs --source-data=2 --set-gtid-purged=OFF xiaodu > /usr/local/bin/mysql/backup/database_name_A.sql

参数说明:

  • --source-data=2:在备份文件中记录二进制日志(binlog)的位置信息。这个参数在主从复制环境中非常有用,因为它允许从库在恢复备份后,从主库的正确位置开始复制

  • --set-gtid-purged=OFF:GTID(Global Transaction Identifiers)是 MySQL 中用于标识事务的全局唯一标识符。主从复制

  • --single-transaction确保备份时不会阻塞事务;

  • --flush-logs会刷新binlog,生成新的binlog文件,方便后续的增量备份;

定期刷新binlog文件,生成新的binlog文件:mysqladmin flush-logs -u root -p

新的

恢复:

mysql -u root -p xiaodu_A < /usr/local/bin/mysql/backup/database_name_A.sql

        

三、mysqlbinlog增量备份

注:mysqlbinlog工具是个问题,Alpine Linux系统没有mysqlbinlog工具,但是可以使用debian版本的MySQL镜像文件

MySQL 的二进制日志工具,主要用于解析和处理 MySQL 的二进制日志文件(binlog)。虽然它本身不是直接用于备份的工具,但可以通过结合二进制日志实现增量备份和恢复。

特点:

优点:增量备份: 可以实现基于时间点的增量备份,仅备份自上次备份以来的更改。 节省存储空间,因为不需要每次都备份整个数据库。数据完整性: 二进制日志记录了所有数据更改操作,可以确保数据的完整性和一致性。恢复灵活性: 可以恢复到任意时间点,支持细粒度的恢复操作。支持主从复制: 二进制日志是主从复制的基础,使用 mysqlbinlog 可以更好地管理复制过程中的数据同步。

缺点:复杂性较高: 需要对二进制日志有较深入的了解,操作相对复杂。依赖二进制日志: 必须启用二进制日志,并且需要正确配置日志文件的存储和管理。 备份速度较慢: 二进制日志文件可能较大,解析和备份过程可能需要较长时间。 恢复速度较慢: 恢复时需要逐条应用日志中的更改,速度可能比直接复制文件慢。 对磁盘 I/O 影响大: 在解析和应用日志文件时,可能会对磁盘 I/O 产生较大压力

使用:

备份:

复制bin文件:mysqlbinlog /var/lib/mysql/mysql-bin.000001 > /usr/local/bin/mysql/backup/mysql-bin.000001.sql

恢复:

按节点恢复

mysqlbinlog --start-position=4691 --stop-position=1825 /var/lib/mysql/mysql-bin.000005 | mysql -u root -p

mysqlbinlog --start-position=214 /path/to/mysql-bin.000008 | mysql -u root -p
mysqlbinlog /path/to/mysql-bin.000009 | mysql -u root -p
mysqlbinlog /path/to/mysql-bin.000010 | mysql -u root -p
mysqlbinlog /path/to/mysql-bin.000011 | mysql -u root -p

按时间回复:

mysqlbinlog --stop-datetime="2025-08-16 12:00:00" /var/lib/mysql/mysql-bin.000004 | mysql -u root -p

  • mysqldump:用于全量备份,生成完整的数据库备份文件。

  • mysqlbinlog:用于增量备份,记录自上次全量备份以来的更改,支持基于时间点的恢复。

从 MySQL 8.4 开始,SHOW MASTER STATUS 已被弃用,取而代之的是 SHOW BINARY LOG STATUS。(MySQL中执行)

# MySQL 8.0 及以下版本:
SHOW MASTER STATUS;
# MySQL 8.4 及以上版本:
SHOW BINARY LOG STATUS;
SHOW BINARY LOGS;

四、Xtrabackup

http://www.dtcms.com/a/334313.html

相关文章:

  • 学习安卓APP开发,10年磨一剑,b4a/Android Studio
  • CPP多线程2:多线程竞争与死锁问题
  • 企业级Java项目金融应用领域——银行系统
  • C#WPF实战出真汁09--【消费开单】--选择菜品
  • 驱动开发系列63 - 配置 nvidia 的 open-gpu-kernel-modules 调试环境
  • AI重构文化基因:从“工具革命”到“生态觉醒”的裂变之路
  • 【101页PPT】芯片半导体企业数字化项目方案汇报(附下载方式)
  • 在鸿蒙应用中快速接入地图功能:从配置到实战案例全解析
  • Nginx域名和IP兼容双方的API地址
  • GaussDB 数据库架构师修炼(十三)安全管理(3)-数据库审计
  • 使用npm/pnpm自身安装指定版本的pnpm
  • JavaWeb开发_Day14
  • 如何在 Ubuntu 24.04 Server 或 Desktop 上安装 XFCE
  • 我的世界Java版1.21.4的Fabric模组开发教程(十八)自定义传送门
  • 边缘计算及其特点
  • 学习日志35 python
  • Python Day30 CSS 定位与弹性盒子详解
  • CodeBuddy IDE深度体验:AI驱动的全栈开发新时代
  • 缓存一致性总线协议(Cache Coherence Protocols)的发展过程
  • LangChain4j:基于 SSE 与 Flux 的 AI 流式对话实现方案
  • Honor of Kings 100star (S40) 2025.08.16
  • 11-verilog的RTC驱动代码
  • 10-verilog的EEPROM驱动-单字节读写
  • OpenCV安装及配置
  • 机器学习核心概念精要:从定义到评估
  • 从频繁告警到平稳发布:服务冷启动 CPU 风暴优化实践222
  • 利用 Java 爬虫按图搜索淘宝商品(拍立淘)实战指南
  • AirReceiverLite:轻松实现手机隔空投屏
  • [typescript] interface和type有什么关系?
  • Spark 数据分发性能深度剖析:mapPartitions vs. UDF – 你该选择哪一个?