mysql数据库备份,恢复

备份的原因

生产的数据库可能因为以下情况导致数据丢失:

硬件故障

软件故障

自然灾害

黑客攻击

误操作(占比例最大)

备份数据的策略

1.能够容忍丢失多少数据

2.恢复数据需要多长时间

3.需要恢复哪一些数据

数据备份类型

完全备份

备份整个数据库

部分备份

增量备份:备份自从上次备份以来变化的数据。节约空间,还原麻烦

差异备份:备份上次完全备份以来变化的数据。浪费空间,还原比增量备份简单。

mysql备份数据的方式

逻辑备份

把数据库的结构定义语句,数据内容的插入语句,全部存储下来,然后在恢复的时候,在另一个myql服务器执行这些语句,就可以创建另一个与之前一样的数据库。

典型办法

1.mysqldump程序可以把对远程/本地数据库进行逻辑备份

2.select .... into  outfile可以把数据进行逻辑备份,但备份文件只能存储在mysql-server的机器上。

适用:适合数据量少的数据库

特点

1.逻辑备份通过查询数据库的信息进行备份

2.速度比较慢,因为获取了信息,然后组装sql语句,如果调用命令是远程,还要把sql语句远程传输。

3.备份文件要比物理备份大

4.备份粒度只能到表

5.没有日志或者配置文件

6.备份文件是sql语句,逻辑语句,相对来说,可移植性要好(比如在linux备份了,可以在windows恢复)

// 备份单个数据库或单个数据库中指定的表
mysqldump [options] database [tb1] [tb2]...
// 备份多个数据库
mysqldump [options] -- database [options] db1 [db2,db3...]
// 备份所有数据库
mysqldump [options] --all-database [options]
// 指定导出使用何种字符集
--default-character-set=charset
// 只导出数据,而不添加create table语句
--no-create-info, -t
//只导出数据库表结构,不导出任何数据
--no-data, -d

注意事项

1.表结构备份和数据备份最好分开

2.在进行表结构备份的时候,记得加上--add-drop-database=false和--add-drop-table=false,以免在进行增量恢复时,覆盖已存在的数据。如果需要全量恢复,可以先手工drop database或者drop table,再使用表结构备份脚本恢复表结构

3.innodb引擎要想维护数据一致性,加上--single-transaction,这个参数不会阻塞读写锁

4.备份blob数据,需要加上--hex-blob,否则恢复的时候可能报错

5.如果想要进行增量数据恢复,那么备份的时候最好加上--add-locks,否则在恢复过程中,表将无法进行读写。

6.备份完成之后,tail -n 1 backup_file,成功的备份会显示信息“-- Dump completed on 时间”

猜你喜欢

转载自blog.csdn.net/u010918487/article/details/81673866