一、基本介绍 @
Mysqldump 是 MySQL 数据库管理系统中最常用的数据备份工具,它能够将数据库中的数据和结构导出为 SQL 脚本文件,便于数据迁移、备份和恢复。
二、常用命令示例 @
1. 完整数据库备份 @
# 一次性导出所有数据库(完整备份)
mysqldump -uroot -p --all-databases > /home/all_databases_backup.sql
2. 单数据库操作 @
# 导出指定数据库(包含结构和数据)
mysqldump -uroot -p db_name > file.sql
# 仅导出数据库结构,不包含数据
mysqldump --opt -d db_name -uroot -p > file_structure_only.sql
# 仅导出数据,不包含表结构
mysqldump -t db_name -uroot -p > file_data_only.sql
3. 表级操作 @
# 导出特定表的结构和数据
mysqldump -uroot -p -B db_name --table tb_name > file.sql
# 导出多个指定表
mysqldump -uroot -p db_name table1 table2 > multiple_tables.sql
4. 数据导入 @
# 方法一:使用 source 命令(在 MySQL 命令行中执行)
mysql -uroot -p
use target_database;
source /temp/file.sql;
# 方法二:直接使用 mysql 命令
mysql -uroot -p target_database < file.sql
三、常见问题与解决方案 @
错误处理 @
问题描述:
mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS
错误原因:
新版本的 mysqldump 默认启用了 --column-statistics 选项,但在某些 MySQL 版本中可能不兼容。
解决方案:
# 通过添加 --column-statistics=0 参数禁用该功能
mysqldump -umoresec -pmoresec@sec db_sentry --tables tb_vuln_type > tb_vuln_type.sql --column-statistics=0
四、实用参数详解 @
连接参数 @
-
-u 或--user:指定用户名 -
-p 或--password:提示输入密码 -
-h 或--host:指定主机地址 -
-P 或--port:指定端口号
输出控制参数 @
-
--opt:启用优化选项(默认开启) -
-d 或--no-data:不导出数据,仅导出结构 -
-t 或--no-create-info:不导出结构,仅导出数据 -
-B 或--databases:导出多个数据库 -
--tables:指定要导出的表
五、完整示例 @
# 完整备份示例(包含错误处理)
mysqldump -uroot -p --all-databases --column-statistics=0 --single-transaction > complete_backup_$(date +%Y%m%d).sql
# 特定业务表备份
mysqldump -umoresec -pmoresec@sec db_sentry --tables tb_vuln_type tb_user > business_tables_backup.sql --column-statistics=0
通过掌握这些常用命令和技巧,您可以更加高效地进行 MySQL 数据库的备份和恢复操作,确保数据的安全性和完整性。