linux中使用mysqldump来备份数据库
导出单个表
mysqldump -u root -p123456 testdb t_user > t_user.sql
去掉注释
- 这个太重要了,方便保存后通过git等代码管理工具比较差异
--skip-comments
输出更少的信息
--compact 相当于
--skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys
插入语句单行输出
- 这一点很重要,如果记录比较多的话,生成的sql没法看。
--extended-insert=FALSE
备份多个表
- 在all_base_table.txt中存放需要备份的表名
cat all_base_table.txt
t_user_config
t_login_config
t_game_config
#!/bin/bash
for tbname in $(cat all_base_table.txt)
do
echo tbname: $tbname
mysqldump -h192.168.2.127 -P3306 -uroot -p123456 --opt testdb $tbname--skip-comments --extended-insert=FALSE >./base_table/$tbname.sql
echo basetable: $tbname
done
备份整个数据库的结构:
des_file=testdb_no_data_v0.0.1.sql
mysqldump -h192.168.2.127 -P3306 -uroot -p123456 testdb --no-data --routines --skip-comments > $des_file
备份整个数据库的结构和数据并压缩
dt=$(date +%Y%m%d_%H%M%S)
des_file=testdb_bak_$dt.sql
bak_file=testdb_bak_$dt.tar.gz
mysqldump -h192.168.2.127 -P3306 -uroot -p123456 testdb --routines > $des_file
tar -czvf $bak_file $des_file
mv $bak_file ./bak/
rm -f $des_file
总结
- 上面只是列举了常用的几种用法
- mysqldump的用法还很多,有需要的同学可以深入研究学习一下。
- mysqldump的笔记先就记到这里,后面有更有价值的用法再行补充。