一、基本介绍 @

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 数据库的备份和恢复操作,确保数据的安全性和完整性。