2.6. 备份 MySQL 数据
从 MySQL 数据库备份数据有两种主要方法:
- 逻辑备份
逻辑备份由恢复数据所需的 SQL 语句组成。这种类型的备份以纯文本文件的形式导出信息和记录。
与物理备份相比,逻辑备份的主要优势在于可移植性和灵活性。数据可以在其他硬件配置、MySQL 版本或数据库管理系统(DBMS)上恢复,而这些数据无法进行物理备份。
请注意,逻辑备份只在
mysqld.service
运行时才执行。逻辑备份不包括日志和配置文件。- 物理备份
物理备份由存储内容的文件和目录的副本组成。
与逻辑备份相比,物理备份具有以下优点:
- 输出更为紧凑。
- 备份的大小会较小。
- 备份和恢复速度更快。
备份包括日志和配置文件。
请注意,当
mysqld.service
没有运行或数据库中的所有表被锁住时,才能执行物理备份,以防在备份过程中数据有更改。
您可以使用以下 MySQL 备份方法之一从 MySQL 数据库备份数据:
-
使用
mysqldump
的逻辑备份 - 文件系统备份
- 作为备份解决方案复制
2.6.1. 使用 mysqldump 执行逻辑备份 复制链接链接已复制到粘贴板!
mysqldump
客户端是一个备份工具,可用于转储数据库或数据库集合,用于备份目的或传输到其他数据库服务器。mysqldump
的输出通常由重新创建服务器表结构、为其填充数据的 SQL 语句组成,或两者兼而有之。mysqldump
也可以生成其他格式的文件,包括 XML 和分隔的文本格式,如 CSV。
要执行 mysqldump
备份,您可以使用以下选项之一:
- 备份一个或多个所选的数据库
- 备份所有数据库
- 从一个数据库备份表子集
流程
要转储单个数据库,请运行:
mysqldump [options] --databases db_name > backup-file.sql
# mysqldump [options] --databases db_name > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要一次转储多个数据库,请运行:
mysqldump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
# mysqldump [options] --databases db_name1 [db_name2 ...] > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要转储所有数据库,请运行:
mysqldump [options] --all-databases > backup-file.sql
# mysqldump [options] --all-databases > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将一个或多个转储的完整数据库加载回服务器,请运行:
mysql < backup-file.sql
# mysql < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将数据库加载到远程 MySQL 服务器,请运行:
mysql --host=remote_host < backup-file.sql
# mysql --host=remote_host < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要转储一个数据库中的表的子集,请在
mysqldump
命令的末尾添加所选表的列表:mysqldump [options] db_name [tbl_name ...] > backup-file.sql
# mysqldump [options] db_name [tbl_name ...] > backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要载入从一个数据库转储的表的子集,请运行:
mysql db_name < backup-file.sql
# mysql db_name < backup-file.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此时,db_name 数据库必须存在。
要查看
mysqldump
支持的选项的列表,请运行:mysqldump --help
$ mysqldump --help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.2. 在 MySQL 服务器上执行文件系统备份 复制链接链接已复制到粘贴板!
要创建 MySQL 数据文件的文件系统备份,请将 MySQL 数据目录的内容复制到您的备份位置。
要同时备份当前的配置或日志文件,请使用以下流程的可选步骤:
流程
停止
mysqld
服务:systemctl stop mysqld.service
# systemctl stop mysqld.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将数据文件复制到所需位置:
cp -r /var/lib/mysql/ /backup-location/data/
# cp -r /var/lib/mysql/ /backup-location/data/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:将配置文件复制到所需位置:
cp -r /etc/my.cnf /etc/my.cnf.d/ /backup-location/configuration/
# cp -r /etc/my.cnf /etc/my.cnf.d/ /backup-location/configuration/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:将日志文件复制到所需位置:
cp /var/log/mysql/* /backup-location/logs/
# cp /var/log/mysql/* /backup-location/logs/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
mysqld
服务:systemctl start mysqld.service
# systemctl start mysqld.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