This is a read-only copy of the MariaDB Knowledgebase generated on 2024-12-22. For the latest, interactive version please visit https://mariadb.com/kb/.

备份和还原概述

本文简要讨论了备份MariaDB的主要方式。有关详细的描述和语法,请参阅各个页面。更多细节正在添加中。

逻辑备份与物理备份

逻辑备份由用于恢复数据的SQL语句组成,例如CREATE DATABASECREATE TABLEINSERT

物理备份是通过复制单个数据文件或目录来执行的。

主要区别如下:

  • 逻辑备份更加灵活,因为数据可以在其他硬件配置,MariaDB版本甚至其他DBMS上恢复,而物理备份无法导入到显着不同的硬件,不同的DBMS或甚至不同版本的MariaDB上。
  • 逻辑备份可以在数据库和表级别上执行,而物理备份是在目录和文件级别上执行的。在MyISAMInnoDB存储引擎中,每个表都有一个等效的文件集。 (在MariaDB 5.5之前的版本中,默认情况下一些InnoDB表存储在同一个文件中,在这种情况下无法按表进行备份。请参阅innodb_file_per_table。)
  • 逻辑备份比等效的物理备份更大。
  • 逻辑备份需要比等效的物理备份更长时间来备份和恢复。
  • 日志文件和配置文件不是逻辑备份的一部分

备份工具

Mariadb-backup

Mariadb-backupPercona XtraBackup的分支,增加了对MariaDB 10.1 compressiondata-at-rest encryption的支持。它包含在MariaDB 10.1.23及更高版本中。

mariadb-dump

mariadb-dump(以前称为mysqldump)执行逻辑备份。当数据大小相对较小时,它是执行备份和恢复的最灵活方式。

对于大型数据集,备份文件可能很大,恢复时间可能很长。

mariadb-dump将数据转储为SQL格式(也可以将其转储为其他格式,例如CSV或XML),然后可以轻松地将数据导入到另一个数据库中。假设转储中没有版本或DBMS特定的语句,可以将数据导入到MariaDB的其他版本,MySQL甚至完全不同的DBMS中。

mariadb-dump会将触发器与表一起转储,因为这些是表定义的一部分。但是,存储过程viewsevents不是,需要显式重新创建(例如,--routines--events)。存储过程functions也是系统表的一部分(例如mysql.proc)。

InnoDB逻辑备份

InnoDB使用缓冲池,它将其表中的数据和索引存储在内存中。该缓冲池对性能非常重要。如果InnoDB数据不适合内存,则缓冲池包含最常访问的数据非常重要。但是,最后访问的数据是可以插入到缓冲池中的候选数据。如果未正确配置,则当发生表扫描时,InnoDB可能会将整个表的内容复制到缓冲池中。逻辑备份的问题在于它们总是意味着完整的表扫描。

避免这种情况的简单方法是增加innodb_old_blocks_time系统变量的值。它表示必须经过多少毫秒才能将最近访问的页面放入缓冲池中的“新”子列表中。只访问一次的数据应该保留在“旧”子列表中。这意味着它们很快就会从缓冲池中清除。由于在备份过程中,“旧”子列表很可能存储无用的数据,因此可以通过更改innodb_old_blocks_pct系统变量的值来考虑调整其大小。

还可以在开始逻辑备份之前明确将缓冲池转储到磁盘上,并在备份过程之后将其恢复。这将撤消备份期间发生的任何对缓冲池的负面更改。要转储缓冲池,可以将innodb_buffer_pool_dump_now系统变量设置为ON。要还原它,请将innodb_buffer_pool_load_now系统变量设置为ON。

示例

备份单个数据库

shell> mariadb-dump db_name > backup-file.sql

还原或加载数据库

shell> mariadb db_name < backup-file.sql

有关详细语法和示例,请参见mariadb-dump页面。

mariadb-hotcopy / mysqlhotcopy

mariadb-hotcopy / mysqlhotcopy目前已弃用。

mariadb-hotcopy执行物理备份,并仅用于备份MyISAMARCHIVE表。它只能在与数据库目录位置相同的计算机上运行。

示例

shell> mariadb-hotcopy db_name [/path/to/new_directory]
shell> mariadb-hotcopy db_name_1 ... db_name_n /path/to/new_directory

Percona XtraBackup

Percona XtraBackup is not supported in MariaDB. Mariabackup is the recommended backup method to use instead of Percona XtraBackup. See Percona XtraBackup Overview: Compatibility with MariaDB for more information.

Percona XtraBackup是用于执行快速热备份的工具。它专门为XtraDB/InnoDB数据库设计,但可以与任何存储引擎一起使用(尽管不能与MariaDB 10.1 encryptioncompression一起使用)。它不包含在MariaDB中。

文件系统快照

某些文件系统(如Veritas)支持快照。在快照期间,必须锁定表。获得快照的正确步骤是:

  • 从mariadb客户端执行FLUSH TABLES WITH READ LOCK。客户端必须保持打开状态。
  • 从shell中执行mount vxfs snapshot
  • 客户端可以执行UNLOCK TABLES
  • 复制快照文件。
  • 从shell中使用umount snapshot卸载快照。

LVM

广泛使用的物理备份方法,使用Perl脚本作为包装器。请参见http://www.lenzg.net/mylvmbackup/

Percona TokuBackup

有关详细信息,请参见:

dbForge Studio for MySQL

除了系统实用程序外,还可以使用第三方GUI工具执行备份和还原操作。在这种情况下,值得一提的是dbForge Studio for MySQL,这是一个功能丰富的数据库IDE,完全兼容MariaDB,并提供广泛的备份功能。

Studio的备份和还原模块允许精确配置和管理全面和部分备份,直到特定数据库对象。定期备份的功能提供了特定的设置来处理错误并记录它们的日志。此外,设置和配置可以保存以供以后重用。

这些操作是向导辅助的,允许用户以可视化模式设置所有任务。

另请参阅

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.