码迷,mamicode.com
首页 > 数据库 > 详细

Mysql的备份与恢复

时间:2014-11-30 21:40:24      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:mysql   mysql的备份和恢复

Mysql的备份和恢复

        对于某些企业来说,数据就是该企业的核心元素,一旦数据丢失都将会对该企业造成致命的打击,因此,作为一名DBA要定期的对数据做好备份工作,以便出现故障时,可以即时恢复,从而保证企业数据的完整性。根据不同的需求,我们可以划分如下备份类型:

 

mysql的备份类型

1、根据mysql服务器是否在线,备份类型可以这样划分:

            热备分:使用这种方式mysql服务器可以在线,且读写操作不受影响

            温备:这种方式mysql服务器也可以在线,读操作不受影响,但是写操作受影响,需要手动加读锁(共享锁)。

           冷备:这是方式mysql服务器必须停止运行,即离线备份,因此,读写操作都不会受影响

 

2、根据备份的是表中的数据还是文件,可以这样划分:

            物理备份:这种方式是直接复制文件(即使用cp命令)

            逻辑备份:这种方式是将数据导出到文本文件中(利用数据重定向功能),因此可以直接利用编辑器编译

 

3、根据备份数据的集合范围,可以这样划分:

            完全备份:就是备份所有的数据

            增量备份:仅备份上次完全备份或增量备份以后变化的数据

            差异备份:仅备份上次完全备份以后变化的数据,相对于增量备份该方式备份比较慢,但还原速度比较快。

 

这几种备份类型彼此之间没有什么对应关系,可以根据需求相互结合使用。

 

 

物理备份和逻辑备份的特点

物理备份:该方式备份速度快,且还原也比较快,属于文件系统级别的

逻辑备份:该方式仅是备份数据,因此在还原过程中,需要手动建立表结构,且这种方式备份的速度慢、丢失浮点数精度。备份出来的数据会占用更多的存储空间,其压缩后可大大节省空间。但是由于将数据直接存储在本文文件中,因此,可以利用文本工具直接处理,其移植能力强。但是不适合对大数据库做完全备份。

 

增量备份和差异备份的比较在

在上面已经讲述了增量备份和差异备份的概念,如果还是看不懂,这里我给出一个比较直观的图形界面,大家可以直观的看出,这两种方式的差异在哪里。

bubuko.com,布布扣

 

 

备份的对象

一般来说,我们需要对如下这些数据进行备份:

数据:这个就不多说了,这就是要备份的核心东西

二进制日志文件:如果mysql服务器上的存储数据的文件损坏了,那么二进制日志文件就可以用来恢复备份之后的数据。因此,这个一般我们也要备份,一般我们会对二进制日志使用增量备份或者差异备份的方式来备份。

事务日志文件:如果某个事务线程正在运行,且事务日志文件存放的数据满时,即时事务没有提交,事务日志会将数据同步到磁盘中去,因此,事务日志中很可能存在一半的事务(即只有一部分数据写入到磁盘中去)。一旦服务器宕机,就可以利用事务日志来进行撤销。使数据保持不受影响。因此,事务日志一般也要备份。

mysql的配置文件:由于mysql的配置文件可以定义各种服务器变量,因此,不同的mysql服务器可能定义的属性不一样,因此,一般我们也要对mysql的配置文件做备份。

 

备份策略

一般的我们需要一个月做一次完全备份,一周做一次增量备份或差异备份;或者一周做一次完全备份,每天做一次增量备份或差异备份。

因此,一般使用完全备份+增量备份或者完全备份+差异备份来结合备份数据和其他重要文件(上述提到)

 

 

备份工具

我们所需要的备份工具有如下这些:

bubuko.com,布布扣

其中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

Mysql的备份与恢复

标签:mysql   mysql的备份和恢复

原文地址:http://xslwahaha.blog.51cto.com/4738972/1584802

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!