备份和还原概述
Contents
本文简要讨论了备份MariaDB的主要方式。有关详细的描述和语法,请参阅各个页面。更多细节正在添加中。
逻辑备份与物理备份
逻辑备份由用于恢复数据的SQL语句组成,例如CREATE DATABASE,CREATE TABLE和INSERT。
物理备份是通过复制单个数据文件或目录来执行的。
主要区别如下:
- 逻辑备份更加灵活,因为数据可以在其他硬件配置,MariaDB版本甚至其他DBMS上恢复,而物理备份无法导入到显着不同的硬件,不同的DBMS或甚至不同版本的MariaDB上。
- 逻辑备份可以在数据库和表级别上执行,而物理备份是在目录和文件级别上执行的。在MyISAM和InnoDB存储引擎中,每个表都有一个等效的文件集。 (在MariaDB 5.5之前的版本中,默认情况下一些InnoDB表存储在同一个文件中,在这种情况下无法按表进行备份。请参阅innodb_file_per_table。)
- 逻辑备份比等效的物理备份更大。
- 逻辑备份需要比等效的物理备份更长时间来备份和恢复。
- 日志文件和配置文件不是逻辑备份的一部分
备份工具
Mariadb-backup
Mariadb-backup是Percona XtraBackup的分支,增加了对MariaDB 10.1 compression和data-at-rest encryption的支持。它包含在MariaDB 10.1.23及更高版本中。
mariadb-dump
mariadb-dump(以前称为mysqldump)执行逻辑备份。当数据大小相对较小时,它是执行备份和恢复的最灵活方式。
对于大型数据集,备份文件可能很大,恢复时间可能很长。
mariadb-dump将数据转储为SQL格式(也可以将其转储为其他格式,例如CSV或XML),然后可以轻松地将数据导入到另一个数据库中。假设转储中没有版本或DBMS特定的语句,可以将数据导入到MariaDB的其他版本,MySQL甚至完全不同的DBMS中。
mariadb-dump会将触发器与表一起转储,因为这些是表定义的一部分。但是,存储过程,views和events不是,需要显式重新创建(例如,--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执行物理备份,并仅用于备份MyISAM和ARCHIVE表。它只能在与数据库目录位置相同的计算机上运行。
示例
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 encryption和compression一起使用)。它不包含在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的备份和还原模块允许精确配置和管理全面和部分备份,直到特定数据库对象。定期备份的功能提供了特定的设置来处理错误并记录它们的日志。此外,设置和配置可以保存以供以后重用。
这些操作是向导辅助的,允许用户以可视化模式设置所有任务。
另请参阅
- 在云中流式传输MariaDB备份(mariadb.com博客)