1.6. 备份 MariaDB 数据


从 MariaDB 数据库备份数据有两种主要方法:

逻辑备份

逻辑备份由恢复数据所需的 SQL 语句组成。这种类型的备份以纯文本文件的形式导出信息和记录。

与物理备份相比,逻辑备份的主要优势在于可移植性和灵活性。数据可以在其他硬件配置、MariaDB 版本或数据库管理系统(DBMS)上恢复,这无法通过物理备份来实现。

请注意,逻辑备份只有在 mariadb.service 运行时才能执行。逻辑备份不包括日志和配置文件。

物理备份

物理备份由存储内容的文件和目录的副本组成。

与逻辑备份相比,物理备份具有以下优点:

  • 输出更为紧凑。
  • 备份的大小会较小。
  • 备份和恢复速度更快。
  • 备份包括日志和配置文件。

    请注意,当 mariadb.service 没有运行或者数据库中的所有表都被锁定以防止备份期间更改时,必须执行物理备份。

您可以使用以下 MariaDB 备份方法之一从 MariaDB 数据库备份数据:

  • 使用 mariadb-dump 进行逻辑备份
  • 使用 Mariabackup 工具进行物理在线备份
  • 文件系统备份
  • 作为备份解决方案复制

1.6.1. 使用 mariadb-dump 执行逻辑备份

mariadb-dump 客户端是一个备份工具,其可用于转储数据库或数据库集合,来进行备份或传输到其他数据库服务器。mariadb-dump 的输出通常由重建服务器表结构、为它填充数据的 SQL 语句组成或两者兼而有之。mariadb-dump 也可以生成其他格式的文件,包括 XML 和分隔的文本格式,如 CSV。

要执行 mariadb-dump 备份,您可以使用以下选项之一:

  • 备份一个或多个所选的数据库
  • 备份所有数据库
  • 从一个数据库备份表子集

流程

  • 要转储单个数据库,请运行:

    # mariadb-dump [options] --databases db_name > backup-file.sql
    Copy to Clipboard Toggle word wrap
  • 要一次转储多个数据库,请运行:

    # mariadb-dump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
    Copy to Clipboard Toggle word wrap
  • 要转储所有数据库,请运行:

    # mariadb-dump [options] --all-databases > backup-file.sql
    Copy to Clipboard Toggle word wrap
  • 要将一个或多个转储的完整数据库加载回服务器,请运行:

    # mariadb < backup-file.sql
    Copy to Clipboard Toggle word wrap
  • 要将数据库加载到远程 MariaDB 服务器,请运行:

    # mariadb --host=remote_host < backup-file.sql
    Copy to Clipboard Toggle word wrap
  • 要从一个数据库转储表子集,请在 mariadb-dump 命令末尾添加所选表的列表:

    # mariadb-dump [options] db_name [tbl_name ...​] > backup-file.sql
    Copy to Clipboard Toggle word wrap
  • 要载入从一个数据库转储的表的子集,请运行:

    # mariadb db_name < backup-file.sql
    Copy to Clipboard Toggle word wrap
    注意

    此时,db_name 数据库必须存在。

  • 要查看 mariadb-dump 支持的选项列表,请运行:

    $ mariadb-dump --help
    Copy to Clipboard Toggle word wrap

1.6.2. 使用 mariabackup 工具执行物理在线备份

mariabackup 工具基于 Percona XtraBackup 技术,它允许执行 InnoDB、Aria 和 MyISAM 表的物理在线备份。工具支持对 MariaDB 服务器的全备份功能,其包括加密和压缩的数据。

先决条件

  • mariadb-backup 软件包已在系统中安装:
  • 您必须为在其下运行备份的用户提供 mariabackup 和凭证。您可以在命令行中或通过配置文件来提供凭证。
  • mariabackup 的用户必须具有 RELOADLOCK TABLESREPLICATION CLIENT 特权。

流程

  • 使用以下选项之一创建备份:

    • 要在在命令行上提供凭证时创建备份,请输入:

      $ mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password <backup_passwd>
      Copy to Clipboard Toggle word wrap

      target-dir 选项定义存储备份文件的目录。如果要执行全备份,目标目录必是空或者不存在。

      userpassword 选项允许您配置用户名和密码。

    • 要使用配置文件中设置的凭证创建备份:

      1. /etc/my.cnf.d/ 目录中创建配置文件,例如 /etc/my.cnf.d/mariabackup.cnf
      2. 在文件中添加以下内容:

        [mysqld]
        user=<backup_username>
        password=<password>
        Copy to Clipboard Toggle word wrap
      3. 执行备份:

        $ mariabackup --backup --target-dir <backup_directory>
        Copy to Clipboard Toggle word wrap

1.6.3. 使用 mariabackup 工具恢复数据

如果您有 mariabackup 工具创建的 MariaDB 备份,您可以使用相同的工具恢复数据。

先决条件

  • mariadb 服务已停止。
  • 数据目录为空。
  • mariabackup 的用户必须具有 RELOADLOCK TABLESREPLICATION CLIENT 特权。

流程

  1. 使用以下选项之一恢复数据:

    • 要从 /var/mariadb/backup/ 目录中的备份恢复数据,并保留原始备份文件,请输入:

      $ mariabackup --copy-back --target-dir=/var/mariadb/backup/
      Copy to Clipboard Toggle word wrap
    • 要从 /var/mariadb/backup/ 目录中的备份恢复数据,并删除原始备份文件,请输入:

      $ mariabackup --move-back --target-dir=/var/mariadb/backup/
      Copy to Clipboard Toggle word wrap
  2. 修复文件权限。例如,要递归地将文件的所有权改为 mysql 用户和组,请输入:

    # chown -R mysql:mysql /var/lib/mysql/
    Copy to Clipboard Toggle word wrap

    恢复数据库时,mariabackup 会保留备份的文件和目录特权。但是,mariabackup 以恢复数据库的用户和组的身份将文件写入磁盘。因此,在恢复备份后,您必须调整数据目录的所有者,以匹配 MariaDB 服务器的用户和组。

  3. 启动 mariadb 服务:

    # systemctl start mariadb.service
    Copy to Clipboard Toggle word wrap

1.6.4. 对 MariaDB 服务器执行文件系统备份

要创建一个 MariaDB 数据文件的文件系统备份,请将 MariaDB 数据目录的内容复制到您的备份位置。

要同时备份当前的配置或日志文件,请使用以下流程的可选步骤:

流程

  1. 停止 mariadb 服务:

    # systemctl stop mariadb.service
    Copy to Clipboard Toggle word wrap
  2. 复制数据文件:

    # cp -rp /var/lib/mysql/ /backup-location/data/
    Copy to Clipboard Toggle word wrap
  3. 复制配置文件:

    # cp -rp /etc/my.cnf /etc/my.cnf.d/ /backup-location/configuration/
    Copy to Clipboard Toggle word wrap
  4. 可选:复制日志文件:

    # cp -p /var/log/mariadb/* /backup-location/logs/
    Copy to Clipboard Toggle word wrap
  5. 启动 mariadb 服务:

    # systemctl start mariadb.service
    Copy to Clipboard Toggle word wrap
  6. 将备份位置的备份数据加载到 /var/lib/mysql 目录时,请确保 mysql:mysql/var/lib/mysql 中所有数据的所有者:

    # chown -R mysql:mysql /var/lib/mysql/
    Copy to Clipboard Toggle word wrap

1.6.5. 作为备份解决方案复制

如果源服务器复制到副本服务器,备份可以在副本上运行,而不会对源造成任何影响。当您关闭副本,并从副本备份数据时,源仍然可以运行。

警告

复制本身并不是一个足够的备份解决方案。复制可以防止源服务器出现硬件故障,但它不能确保防止数据的丢失。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat