标签(空格分隔): mysql
1 导出数据库
1.1 导出所有数据库
mysqldump -uroot -p --all-databases > all.sql;
1.2 导出单个数据库
mysqldump -uroot -p db1 > db1.sql;
1.3 导出多个数据库
mysqldump -uroot -p --databases db1 db2 > db1-db2.sql
1.4 只备份表结构
mysqldump -uroot -p --no-data db1 > db1.structure.sql;
2 导出表
导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据
2.1 导出单个表
mysqldump -uroot -p db1 tb1 > db1.tb1.sql;
2.2 导出多个个表
mysqldump -uroot -p --databases db1 --tables tb1 tb2 > db1.tb1-tb2.sql;
2.3 只备份表结构
mysqldump -uroot -p --no-data db1 tb1 > db1.tb1.structure.sql;
3 恢复数据
shell> mysql db_name < db1.sql
或者
shell> mysql -e "source /path-to-backup/db1.sql" db_name
4 跨主机备份
mysqldump --host=host1 -uroot -ppwd1 sourceDb | mysql --host=host2 -uroot -ppwd2 -C targetDb
-C指示主机间的数据传输使用数据压缩
5 定时备份
新建 shell 脚本
#vi /backup/backup.sh
#!bin/bash
cd /backup
mv backup* /oldbackup
echo "Old dbs are moved to oldbackup folder"
now=$(date +%Y-%m-%d-%H-%m)
file = "backup-$now.sql"
mysqldump -u user -p password database-name > $file
echo "Your database backup successfully completed"
上面脚本文件保存为backup.sh,并且系统中已经创建两个目录/olcbackup和/backup。每次执行backup.sh时都会先将/backup目录下所有名称为backup开头的文件移到/oldbackup目录。
为上述脚本制定执行计划如下:
#crontab -e
30 1 * * * /backup.sh
6 条件备份
mysqldump -uroot -p --databases db1 --tables tb1 --where='id=1' >/tmp/db1.tb1.sql
7 导出存储过程和自定义函数
mysqldump -uroot -p --host=localhost --all-databases --routines