★CentOS:MySQL数据备份

发布于:2025-08-17 ⋅ 阅读:(13) ⋅ 点赞:(0)

一、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


网站公告

今日签到

点亮在社区的每一天
去签到