mysqldump备份数据

标签(空格分隔): 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

参考
mysqldump — A Database Backup Program

你可能感兴趣的:(mysqldump备份数据)