备份分为逻辑备份和物理备份。逻辑备份就是备份所有的sql语句操作,物理备份就是备份整个数据库结果。逻辑备份备份速度快,但是数据多时,恢复起来比较慢,物理备份相对比较占空间,但是恢复速度快。物理备份又分为全备份,增量备份,差异备份,全备份就是把所有的数据都备份一下,增量备份是和上一次备份做对比,只备份增加那一部分,差异备份是和上一次全备份做对比,备份增加的那一部分。增量备份和差异备份相比较,增量备份占用空间比较小,但是恢复数据相对比较麻烦,因为增量备份需要一次次回滚,最后才能恢复,差异备份占用空间比较大,但是恢复数据比较方便,差异备份只需要进行一次回滚就可以恢复数据。
逻辑备份的过程
1、在数据库运行状态下使用mysqldump对数据库进行备份,分为单个数据库或者多个以及全部
逻辑备份恢复过程
1、在数据库运行状态下,使用mysqldump对数据库进行恢复,单个库恢复必须保证这个库存在,多个以及全部不需要保证库存在
备份命令
1、对远程数据库进行备份
单个库备份: mysqldump -h 主机地址 -u用户名 -p密码 库名> 备份存储路径/备份文件名称.sql
多个库备份: mysqldump -h 主机地址-u用户名 -p密码 -B 库1 库2 > 备份存储路径/备份文件名称.sql
所有库备份: mysqldump -h 主机地址-u用户名 -p密码 -A > 备份存储路径/备份文件名称.sql
2、对本地数据库进行备份
单个库备份: mysqldump -u用户名 -p密码 库名> 备份存储路径/备份文件名称.sql
多个库备份: mysqldump -u用户名 -p密码 -B 库1 库2 > 备份存储路径/备份文件名称.sql
所有库备份: mysqldump -u用户名 -p密码 -A > 备份存储路径/备份文件名称.sql
恢复命令
1、在命令行下
单个库恢复:mysql -u用户名 -p密码 库名< 备份路径/备份文件名称.sql
多个库以及全部库恢复:mysql -u用户名 -p密码 < 备份路径/备份文件名称.sql
2、在数据库中恢复命令
临时关闭log_bin (如果开启了二进制日志,在恢复数据库时候,所有增删改查操作会被写入到二进制文件中,这样容易导致数据的不一致,所以一般会临时关闭,恢复数据以后再打开) set sql_log_bin=0
单个数据库恢复:建立数据库;使用数据库;source 备份文件存储位置/备份文件名.sql
多个数据库恢复:source 备份文件存储位置/备份文件名.sql
逻辑备份实验:
数据库中包含school和student两个库,对所有库进行备份,对school备份,对school和student两个一起备份
对所有库进行备份:
[[email protected] tmp]# mysqldump -uroot -p’Jqb19910312,’ -A > all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
对单个school库进行备份:
[[email protected] tmp]# mysqldump -uroot -p’Jqb19910312,’ school > /tmp/school.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
对school和student两个库进行备份:
[[email protected] tmp]# mysqldump -uroot -p’Jqb19910312,’ -B school student > /tmp/school_student.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
逻辑备份恢复操作:
(逻辑备份恢复是在数据库运行状态下进行的,删除数据库不能通过删除目录,只能通过sql语句删除,直接删除数据库存储目录可能会导致数据库无法恢复,删除存储数据库目录以后想要恢复只能重启mysql服务,并且恢复时候有可能数据丢失)
删除数据库school:drop database shcool;
恢复数据库: create school; source /tmp/school.sql;use school;show tables;
恢复多个数据库可以自己验证,物理备份在下一篇介绍