使用mysqldump
工具备份(适用于逻辑备份)
mysqldump
是 MySQL 自带的一个非常实用的逻辑备份工具,它可以将数据库中的数据和结构以 SQL 语句的形式导出到文件中。
1. 备份整个数据库
mysqldump -u [用户名] -p [数据库名] > [备份文件名].sql
参数说明:
-u [用户名]
:指定连接 MySQL 服务器的用户名。-p
:表示需要输入该用户的密码。[数据库名]
:要备份的数据库名称。>
:将备份内容重定向到指定的文件。[备份文件名].sql
:指定备份文件的名称,通常以.sql
结尾。
示例:备份名为 testdb
的数据库,用户名为 root
。
mysqldump -u root -p testdb > testdb_backup.sql
执行该命令后,系统会提示你输入 root
用户的密码,输入正确密码后,testdb
数据库的备份文件 testdb_backup.sql
就会生成在当前目录下。
2. 备份多个数据库
mysqldump -u [用户名] -p --databases [数据库名1] [数据库名2] ... > [备份文件名].sql
示例:备份 testdb1
和 testdb2
两个数据库。
mysqldump -u root -p --databases testdb1 testdb2 > multiple_dbs_backup.sql
3. 备份所有数据库
mysqldump -u [用户名] -p --all-databases > [备份文件名].sql
示例:
mysqldump -u root -p --all-databases > all_dbs_backup.sql
使用mysqlpump
工具备份(适用于高并发场景,MySQL 5.7 及以上版本)
mysqlpump
是 MySQL 5.7 引入的一个新的逻辑备份工具,相比 mysqldump
,它在处理高并发场景时性能更好。
备份整个数据库
mysqlpump -u [用户名] -p [数据库名] > [备份文件名].sql
示例:备份 testdb
数据库。
mysqlpump -u root -p testdb > testdb_mysqlpump_backup.sql
使用 MySQL 命令行进行物理备份(适用于 InnoDB 存储引擎)
物理备份是直接复制数据库的物理文件,这种方法速度快,但需要在数据库停止服务时进行,适用于 InnoDB 存储引擎。
1. 停止 MySQL 服务
# 对于使用systemd的系统
sudo systemctl stop mysql
# 对于使用SysVinit的系统
sudo service mysql stop
2. 复制数据库文件
数据库文件通常存储在 /var/lib/mysql
目录下,你可以将需要备份的数据库文件夹复制到其他位置。
sudo cp -R /var/lib/mysql/[数据库名] /path/to/backup/directory
示例:备份 testdb
数据库。
sudo cp -R /var/lib/mysql/testdb /home/user/backup/
3. 启动 MySQL 服务
# 对于使用systemd的系统
sudo systemctl start mysql
# 对于使用SysVinit的系统
sudo service mysql start
以上就是几种常见的 MySQL 备份方法及其具体操作,你可以根据实际需求选择合适的备份方式。
- 创建目标数据库(如果需要)
如果备份文件是针对某个特定数据库的,而该数据库在当前 MySQL 服务器中不存在,需要先创建该数据库。在 MySQL 命令行中执行以下命令:CREATE DATABASE [数据库名];
例如,创建名为testdb
的数据库:CREATE DATABASE testdb;
- 选择目标数据库
使用以下命令选择要恢复数据的数据库:USE [数据库名];
例如,选择testdb
数据库:USE testdb;
- 执行备份文件恢复数据
退出 MySQL 命令行(输入EXIT;
或按Ctrl + D
),然后在终端中执行以下命令来恢复数据:mysql -u [用户名] -p [数据库名] < [备份文件名].sql
例如,使用testdb_backup.sql
文件恢复testdb
数据库:mysql -u root -p testdb < testdb_backup.sql
4.也可以在mysql中恢复备份语句
- 执行备份文件中的 SQL 语句:
SOURCE 备份文件的完整路径;
例如,备份文件在 /home/user/backup/testdb_backup.sql
: