跳转至

备份与恢复

备份是将系统或者数据库中重要是数据保存起来,目的是为了保证在灾难或故障发生的时候,确保数据不丢失或者是最小程度的丢失

备份策略要求:

第三方备份软件 bacula (开源备份软件)等

一、备份的分类

1、根据备份方法分

1)冷备份(cold backup)

也叫离线备份(offline backup)

这种备份最简单,直接拷贝物理文件

需要关闭数据库,然后才能进行备份

2)热备份(hot backup)

也叫在线备份(online backup)

无需关闭数据库,直接在线备份

3)温备(warm backup)

无需关闭数据库,但是会对当前数据库的操作有影响,因为会给数据库加全局读锁

2、根据备份后的文件分

逻辑备份

指备份出来的文件是可读的,也就是文本文件 如:mysqldump

物理备份

指备份数据库的物理文件 如:ibbackup

3、按照备份数据库的内容来分

完全备份:

不管是否发生变化,将全库都备份

增量备份:

仅备份上次备份到这次备份之间发生变化的部分

日志备份:

备份二进制日志

在企业中,一般的备份策略是完全备份+增量备份

备份时间的选择:数据库访问量较小的时候去备份。

二、mysqldump

备份
1、单库备份
[root@mysql ~]# mysqldump -u root -p 库名 > /tmp/up1.sql
Enter password:                      
2、单表备份
[root@mysql ~]# mysqldump -uroot -p 库名 表名 > /tmp/dept.sql
Enter password:
3、多表备份
[root@mysql ~]# mysqldump -uroot -p 库名 表名 表名 表名 > /tmp/duu.sql
Enter password:                          
4、多库备份 -B
[root@mysql ~]# mysqldump -uroot -p -B 库名  库名 > /tmp/utdb.sql
Enter password:
5、全库备份 --all-databases
[root@mysql ~]# mysqldump -uroot -p --all-databases > /tmp/all.sql
Enter password: 
恢复
1、单库恢复(要先创建数据库的)
mysql> drop database beh-manager;
mysql> create database beh-manager;     //先建库

第一种恢复方式:在mysql提示符下运行

mysql> use beh-manager
mysql> source /tmp/beh-manager.sql

第二种恢复方式:在shell提示符下执行

mysql> drop database up;
mysql> create database up;   
[root@mysql ~]# mysql -uroot -p up < /tmp/up1.sql 
Enter password: 
2、单表恢复
mysql> drop table dept;
[root@mysql ~]# mysql -uroot -p up < /tmp/dept.sql 
Enter password: 
3、多表恢复(同单表恢复)
[root@mysql ~]# mysql -uroot -p test < /tmp/duu.sql      //将表恢复到test库中的操作
Enter password:
[root@mysql ~]# mysql -uroot -predhat -e "use test;show tables"
4、多库恢复 (不需要手动建库)
mysql> drop database up;
mysql> drop database test;
mysql> source /tmp/utdb.sql
5、全库恢复
[root@mysql ~]# mysql -uroot -p < /tmp/all.sql

备份时候加锁
    -x:给所有的表加读锁
    -l:给单独的表加读锁
查看mysqldump的帮助     
    mysqldump --help
    man mysqldump