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
# mariadb-dump [options] --databases db_name > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要一次转储多个数据库,请运行:
mariadb-dump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
# mariadb-dump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要转储所有数据库,请运行:
mariadb-dump [options] --all-databases > backup-file.sql
# mariadb-dump [options] --all-databases > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将一个或多个转储的完整数据库加载回服务器,请运行:
mariadb < backup-file.sql
# mariadb < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将数据库加载到远程 MariaDB 服务器,请运行:
mariadb --host=remote_host < backup-file.sql
# mariadb --host=remote_host < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要从一个数据库转储表子集,请在
mariadb-dump
命令末尾添加所选表的列表:mariadb-dump [options] db_name [tbl_name ...] > backup-file.sql
# mariadb-dump [options] db_name [tbl_name ...] > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要载入从一个数据库转储的表的子集,请运行:
mariadb db_name < backup-file.sql
# mariadb db_name < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此时,db_name 数据库必须存在。
要查看 mariadb-dump 支持的选项列表,请运行:
mariadb-dump --help
$ mariadb-dump --help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.2. 使用 mariabackup 工具执行物理在线备份 复制链接链接已复制到粘贴板!
mariabackup
工具基于 Percona XtraBackup 技术,它允许执行 InnoDB、Aria 和 MyISAM 表的物理在线备份。工具支持对 MariaDB 服务器的全备份功能,其包括加密和压缩的数据。
先决条件
-
mariadb-backup
软件包已在系统中安装: -
您必须为在其下运行备份的用户提供
mariabackup
和凭证。您可以在命令行中或通过配置文件来提供凭证。 -
mariabackup
的用户必须具有RELOAD
、LOCK TABLES
和REPLICATION CLIENT
特权。
流程
使用以下选项之一创建备份:
要在在命令行上提供凭证时创建备份,请输入:
mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password <backup_passwd>
$ mariabackup --backup --target-dir <backup_directory> --user <backup_user> --password <backup_passwd>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow target-dir
选项定义存储备份文件的目录。如果要执行全备份,目标目录必是空或者不存在。user
和password
选项允许您配置用户名和密码。要使用配置文件中设置的凭证创建备份:
-
在
/etc/my.cnf.d/
目录中创建配置文件,例如/etc/my.cnf.d/mariabackup.cnf
。 在文件中添加以下内容:
[mysqld] user=<backup_username> password=<password>
[mysqld] user=<backup_username> password=<password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行备份:
mariabackup --backup --target-dir <backup_directory>
$ mariabackup --backup --target-dir <backup_directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在
1.6.3. 使用 mariabackup 工具恢复数据 复制链接链接已复制到粘贴板!
如果您有 mariabackup
工具创建的 MariaDB 备份,您可以使用相同的工具恢复数据。
先决条件
-
mariadb
服务已停止。 - 数据目录为空。
-
mariabackup
的用户必须具有RELOAD
、LOCK TABLES
和REPLICATION CLIENT
特权。
流程
使用以下选项之一恢复数据:
要从
/var/mariadb/backup/
目录中的备份恢复数据,并保留原始备份文件,请输入:mariabackup --copy-back --target-dir=/var/mariadb/backup/
$ mariabackup --copy-back --target-dir=/var/mariadb/backup/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要从
/var/mariadb/backup/
目录中的备份恢复数据,并删除原始备份文件,请输入:mariabackup --move-back --target-dir=/var/mariadb/backup/
$ mariabackup --move-back --target-dir=/var/mariadb/backup/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
修复文件权限。例如,要递归地将文件的所有权改为
mysql
用户和组,请输入:chown -R mysql:mysql /var/lib/mysql/
# chown -R mysql:mysql /var/lib/mysql/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 恢复数据库时,
mariabackup
会保留备份的文件和目录特权。但是,mariabackup
以恢复数据库的用户和组的身份将文件写入磁盘。因此,在恢复备份后,您必须调整数据目录的所有者,以匹配 MariaDB 服务器的用户和组。启动
mariadb
服务:systemctl start mariadb.service
# systemctl start mariadb.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.4. 对 MariaDB 服务器执行文件系统备份 复制链接链接已复制到粘贴板!
要创建一个 MariaDB 数据文件的文件系统备份,请将 MariaDB 数据目录的内容复制到您的备份位置。
要同时备份当前的配置或日志文件,请使用以下流程的可选步骤:
流程
停止
mariadb
服务:systemctl stop mariadb.service
# systemctl stop mariadb.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制数据文件:
cp -rp /var/lib/mysql/ /backup-location/data/
# cp -rp /var/lib/mysql/ /backup-location/data/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制配置文件:
cp -rp /etc/my.cnf /etc/my.cnf.d/ /backup-location/configuration/
# cp -rp /etc/my.cnf /etc/my.cnf.d/ /backup-location/configuration/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:复制日志文件:
cp -p /var/log/mariadb/* /backup-location/logs/
# cp -p /var/log/mariadb/* /backup-location/logs/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
mariadb
服务:systemctl start mariadb.service
# systemctl start mariadb.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将备份位置的备份数据加载到
/var/lib/mysql
目录时,请确保mysql:mysql
是/var/lib/mysql
中所有数据的所有者:chown -R mysql:mysql /var/lib/mysql/
# chown -R mysql:mysql /var/lib/mysql/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.5. 作为备份解决方案复制 复制链接链接已复制到粘贴板!
如果源服务器复制到副本服务器,备份可以在副本上运行,而不会对源造成任何影响。当您关闭副本,并从副本备份数据时,源仍然可以运行。
复制本身并不是一个足够的备份解决方案。复制可以防止源服务器出现硬件故障,但它不能确保防止数据的丢失。