mysqldump 导出数据、结构、函数和存储过程

目录

基础备份命令

导出某个数据库(结构+数据)

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt db_name | gzip -9 > /db_backup/db_name.gz

包含函数和存储过程

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt -R db_name | gzip -9 > /db_backup/db_name.gz
# -R: 包含存储过程和函数

包含事件、函数和存储过程

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt -R -E db_name | gzip -9 > /db_backup/db_name.gz
# -E: 包含事件

多库和全库备份

导出多个数据库

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt --databases db_name1 db_name2 db_name3 | gzip -9 > /db_backup/mul_db.gz

导出所有数据库

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt --all-databases | gzip -9 > /db_backup/all_db.gz

结构和数据分离

只导出结构

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt --no-data db_name | gzip -9 > /db_backup/db_name.struct.gz

只导出数据

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt --no-create-info db_name | gzip -9 > /db_backup/db_name.data.gz

指定表的导出

导出某个表(结构+数据)

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt db_name tbl_name | gzip -9 > /db_backup/db_name.tbl_name.gz

导出某个表的结构

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt --no-data db_name tbl_name | gzip -9 > /db_backup/db_name.tbl_name.struct.gz

导出某个表的数据

mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt --no-create-info db_name tbl_name | gzip -9 > /db_backup/db_name.tbl_name.data.gz

—opt 参数说明

--opt 是组合参数,等价于:

--add-drop-table +
--add-locks +
--create-options +
--disable-keys +
--extended-insert +
--lock-tables +
--quick +
--set-charset

默认启用,用 --skip-opt 禁用。其他有用参数:

  • --add-drop-database:添加 DROP DATABASE 语句

导出为 Excel

导出为 XLS 格式

SELECT * FROM test INTO OUTFILE '/tmp/reg.xls';

编码转换

Excel 默认编码为 GB2312,导出的 UTF-8 数据需转换:

iconv -futf8 -tgb2312 -oreg2.xls reg.xls

如转换失败(字符编码问题),可用 Excel 直接打开 XLS 文件,以文本模式另存为 ANSI 编码即可解决乱码。

MySQL 锁表操作

全局读锁

FLUSH TABLES WITH READ LOCK;
UNLOCK TABLES;

全局读锁会锁定所有库的所有表为只读,用于联机备份。写操作被阻塞,读操作正常进行。

表级锁

LOCK TABLE tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE};
UNLOCK TABLES;

表级锁可以锁定特定表,支持 READ 和 WRITE 两种模式:

  • READ 锁(共享锁):允许其他读请求,阻塞写请求
  • WRITE 锁(独占锁):阻塞其他读和写请求

注意:锁定语句具有隐式提交特性,退出 MySQL 终端时自动解锁。要使锁保持生效,必须保持当前连接。

#mysql #备份恢复