1. 将指定数据库备份到某dump文件中:
1 | $ mysqldump -u[user-name] -p[password] [database-name] > [dump-filename] |
Demo:
1 | $ mysqldump -uroot -p123 test > test.dump |
2. –opt 参数
如果加上–opt参数则生成的dump文件中稍有不同:
- 建表语句包含
DROP TABLE IF EXISTS [table-name]
INSERT
之前包含一个锁表语句LOCK TABLES [table-name] WRITE;
,INSERT
之后包含UNLOCK TABLES;
.
Demo:
1 | $ mysqldump -uroot -p123 --opt test > test.dump |
3. 跨主机备份
1 | $ mysqldump -u[user-name] -p[password] --host=[source-host] --opt [source-database-name] | mysql -u[user-name] -p[password] --host=[target-host] -C [target-database-name] |
Demo:
1 | $ mysqldump -uroot -p123 --host=12.12.34.34 --opt test1 | mysql -uroot -p456 --host=localhost -C test2 |
注意:
-C 参数用于指示主机间的数据传输使用数据压缩
目标数据库 test2 需要提前创建
4. 只备份表结构 –no-data
1 | $ mysqldump -u[user-name] -p[password] --no-data --databases [database-name1] [database-name2] [database-name3] > [dump-filename] |
Demo:
1 | $ mysqldump -uroot -p123 --no-data --databases test1 test2 test3 > test.dump |
–databases 参数用于指定主机上要备份的数据库名,
如果要备份所有的数据库, 可以使用 –all-databases 参数.
5. 从备份文件恢复数据库
1 | $ mysql -u[user-name] -p[password] [database-name] < [backup-filename] |
Demo:
1 | $ mysql -uroot -p123 test1 < backup.sql |
一个完整的 Shell 脚本备份 MySQL 数据库示例:
1 | $ vi /data/backup/backup.sh |
1 |
|