Mysql的备份和恢复
对于某些企业来说,数据就是该企业的核心元素,一旦数据丢失都将会对该企业造成致命的打击,因此,作为一名DBA要定期的对数据做好备份工作,以便出现故障时,可以即时恢复,从而保证企业数据的完整性。根据不同的需求,我们可以划分如下备份类型:
mysql的备份类型
1、根据mysql服务器是否在线,备份类型可以这样划分:
热备分:使用这种方式mysql服务器可以在线,且读写操作不受影响
温备:这种方式mysql服务器也可以在线,读操作不受影响,但是写操作受影响,需要手动加读锁(共享锁)。
冷备:这是方式mysql服务器必须停止运行,即离线备份,因此,读写操作都不会受影响
2、根据备份的是表中的数据还是文件,可以这样划分:
物理备份:这种方式是直接复制文件(即使用cp命令)
逻辑备份:这种方式是将数据导出到文本文件中(利用数据重定向功能),因此可以直接利用编辑器编译
3、根据备份数据的集合范围,可以这样划分:
完全备份:就是备份所有的数据
增量备份:仅备份上次完全备份或增量备份以后变化的数据
差异备份:仅备份上次完全备份以后变化的数据,相对于增量备份该方式备份比较慢,但还原速度比较快。
这几种备份类型彼此之间没有什么对应关系,可以根据需求相互结合使用。
物理备份和逻辑备份的特点
物理备份:该方式备份速度快,且还原也比较快,属于文件系统级别的
逻辑备份:该方式仅是备份数据,因此在还原过程中,需要手动建立表结构,且这种方式备份的速度慢、丢失浮点数精度。备份出来的数据会占用更多的存储空间,其压缩后可大大节省空间。但是由于将数据直接存储在本文文件中,因此,可以利用文本工具直接处理,其移植能力强。但是不适合对大数据库做完全备份。
增量备份和差异备份的比较在
在上面已经讲述了增量备份和差异备份的概念,如果还是看不懂,这里我给出一个比较直观的图形界面,大家可以直观的看出,这两种方式的差异在哪里。
备份的对象
一般来说,我们需要对如下这些数据进行备份:
数据:这个就不多说了,这就是要备份的核心东西
二进制日志文件:如果mysql服务器上的存储数据的文件损坏了,那么二进制日志文件就可以用来恢复备份之后的数据。因此,这个一般我们也要备份,一般我们会对二进制日志使用增量备份或者差异备份的方式来备份。
事务日志文件:如果某个事务线程正在运行,且事务日志文件存放的数据满时,即时事务没有提交,事务日志会将数据同步到磁盘中去,因此,事务日志中很可能存在一半的事务(即只有一部分数据写入到磁盘中去)。一旦服务器宕机,就可以利用事务日志来进行撤销。使数据保持不受影响。因此,事务日志一般也要备份。
mysql的配置文件:由于mysql的配置文件可以定义各种服务器变量,因此,不同的mysql服务器可能定义的属性不一样,因此,一般我们也要对mysql的配置文件做备份。
备份策略
一般的我们需要一个月做一次完全备份,一周做一次增量备份或差异备份;或者一周做一次完全备份,每天做一次增量备份或差异备份。
因此,一般使用完全备份+增量备份或者完全备份+差异备份来结合备份数据和其他重要文件(上述提到)
备份工具
我们所需要的备份工具有如下这些:
其中mysqldump是一个mysql客户端的逻辑备份工具,它对MyISAM存储引擎支持温备份,对Innodb存储引擎支持热备
select into outfile是一个逻辑备份工具,需要手动创建表结构
mysqlhotcopy是一个物理备份工具,它仅对MyISAM存储引擎支持温备份
Snapshot:利用LVM的快照功能实现几乎热备功能
第三方备份工具:
ibbackup是一个商业备份工具
xtrabackup是一个开源备份工具
利用mysqldump工具来实现数据的完全备份
由于mysqldump是一个逻辑备份工具,备份速度慢,因此使用该工具备份数据时,数据的体积不能太大。
mysqldump的使用语法格式
1、备份单个数据库或者其他中的某个表
mysqldump DB_NAME [tb1_name] [tb2_name]
说明:使用这种方式需要手动创建数据库名称或表结构
2、备份多个数据库
mysql options...
options:
--all-databases:备份所有的数据库,不需要创建数据库名
--databases DB1_NAME,DB2_NAME..:备份多个指定数据库,不需要创建数据库名
--lock-all-tables:锁定所有表
--flush-logs:执行日志flush
--master-data={0|1|2}
0:表示不记录二进制日志文件和路径
1:以CHNAGE MASTER TO的方式记录位置,可用于恢复后直接启动从服务器;
2:以CHANGE MASTER TO的方式记录位置,但该行默认为被注释掉了;
--events:备份数据库中的创建事件的语句
--routines:备份存储函数和存储过程
--triggers:备份触发器
如果指定库中的表类型均为InnoDB,可使用--single-transaction启动热备;
本文出自 “linux学习之路” 博客,请务必保留此出处http://xslwahaha.blog.51cto.com/4738972/1584802
原文地址:http://xslwahaha.blog.51cto.com/4738972/1584802