有效的MySQL备份与恢复

标签: mysql | 发表时间:2012-10-19 09:06 | 作者:admin
出处:http://blog.haohtml.com

【TechTarget中国原创】如果您接手了一个 MySQL生产系统,但不确定它是否运行了MySQL备份策略,这时需要做哪些保障措施呢?在实施备份策略之前,一定要明确数据规模和存储引擎使用等先决条件。这会对系统在备份过程中的可用性产生直接影响。

在本文中,我们将介绍用于确定最小备份功能所需要的方法,其中包括:

  • 确定数据库规模
  • 确定存储引擎使用率
  • 锁定和停机时间影响

MySQL备份方法

备份MySQL环境的策略有很多,这些策略与MySQL拓扑的服务器数量相关,有许多开源和商业工具可以执行备份操作。

假设目前您有一个单服务器环境,希望创建一个统一备份,那么您现在可以在所有MySQL环境中采用两种备份方法。第一种方法是停止MySQL实例,然后对整个文件系统执行冷备份。这样会让系统在特定时间段变成不可用状态,而且您必须确保复制了所有信息,其中包括MySQL数据、事务与二进制日志文件(如果有的话)和MySQL的当前配置。

第二种方法是使用MySQL标准安装所包含的客户端工具。使用mysqldump命令,可以在不停止MySQL实例的前提下创建一个统一的MySQL备份。然而,在运行mysqldump之前,必须考虑几个重要问题,才能够选择最佳的备份方法。

  • 所备份数据库的大小是多少?
  • 生成统一备份需要使用哪一种锁策略?
  • 备份用时多久?

确定数据库大小

执行MySQL备份需要考虑的一个重要问题是备份到本地磁盘的备份文件大小。这要求您准备足够存储备份文件的磁盘空间。

运行下面的 SQL语句,可以获得当前数据与索引的总大小(单位为MB):

SELECT round(sum(data_length+index_length)/1024/1024)
AS total_mb,
round(sum(data_length)/1024/1024) AS data_mb,
round(sum(index_length)/1024/1024) AS index_mb
FROM INFORMATION_SCHEMA.tables;

有效的MySQL备份与恢复.1

  mysqldump备份大小大约为总数量加上10%~15%的预留量。这里并不存在精确计算大小的方法;然而,备份会生成以文本方式保存的数据。例如,数据库中4字节的整数可能会在mysqldump备份文件中占10个字符大小。在备份过程中,也可以同时压缩备份文件,或者将它传输到其他网络设备上。

运行这个SQL语句,得到的数据库数据大小为847MB。作为将来的参考,这里使用常用默认设置运行mysqldump,得到的备份文件大小为818MB。

选择锁策略

所选择的锁策略将确定应用程序是否可以在备份过程中执行数据库写操作。默认情况下,mysqldump会使用LOCK TABLES命令执行表一级的锁,以保证所有数据的统一性。这个命令由命令行选项--lock-tables指定,但是它默认是未启用的。这个选项属于默认启用的选项--opt。您可以选择不锁定表;然而,它还不足以保证实现统一的备份。在使用MyISAM存储引擎时,必须使用--lock-tables,才能保证实现统一的备份。

此外,mysqldump还提供了--single-transaction选项,它可以在一个事务中创建所有表的统一快照。这个选项只适用于支持多版本存储的存储引擎。InnoDB是唯一默认包含的存储引擎。

SELECT table_schema, engine, COUNT(*) AS tables
FROM information_schema.tables
WHERE table_schema NOT IN
('INFORMATION_SCHEMA', 'PERFORMANGE_SCHEMA')
GROUP BY table_schema, engine
ORDER BY 3 DESC;

有效的MySQL备份与恢复.2

  MySQL安装环境也同样适用,指定这个选项会自动关闭--lock-tables。

执行面的SQL语句,可以确定MySQL实例所使用的存储引擎:

在这个例子中,MySQL实例拥有多个不同的模式,它们支持各种不同的功能,其中包括购物车、新闻邮件和管理工具。一个全InnoDB应用程序的模式可能像下面这样:

有效的MySQL备份与恢复.3

  从上面可以看出,mysql元模式使用MyISAM。这个实例的存储引擎不能修改。如果数据库采用全InnoDB引擎,那么您有两个与备份MyISAM mysql表相关的方法。

执行时间

最重要的一点是确定备份所需要的时间。没有任何方法可以精确计算出备份时间。数据库大小、系统RAM数量、所使用的存储引擎、MySQL配置、硬盘速度和当前负载都会影响计算结果。在执行备份时,一定要收集这些信息,以备将来使用。执行时间很重要,因为这是数据库的有效维护时间窗口。在数据库备份过程中,应用程序的功能可能会受到影响,备份过程可能会产生性能过载,而且备份可能会影响其他的操作,其中包括批处理或软件维护。

汇总信息

SELECT table_schema, engine,
ROUND(SUM(data_length)/1024/1024) AS total_mb,
ROUND(SUM(data_length)/1024/1024) AS index_mb,
COUNT(*) AS tables
FROM information_schema.tables
GROUP BY table_schema,engine
ORDER BY 3 DESC;

有效的MySQL备份与恢复.4

  上面是一条推荐使用的SQL语句,它汇总了所有用于确定数据库大小的信息。

转自: http://www.searchdatabase.com.cn/showcontent_66648.htm

相关 [有效的 mysql 备份] 推荐:

有效的MySQL备份与恢复

- - haohtml's blog
【TechTarget中国原创】如果您接手了一个 MySQL生产系统,但不确定它是否运行了MySQL备份策略,这时需要做哪些保障措施呢. 在实施备份策略之前,一定要明确数据规模和存储引擎使用等先决条件. 这会对系统在备份过程中的可用性产生直接影响. 在本文中,我们将介绍用于确定最小备份功能所需要的方法,其中包括:.

Linux 安装 MySQL / MySQL 主从备份

- - BlogJava-首页技术区
假定所有安装包均在 /share目录,安装目录为 /opt !!. ========================= 安装 MySQL =========================. $ vi /opt/mysql/my.cnf (参考下面配置). $ vi /etc/rc.d/init.d/mysql (参考下面配置).

使用Percona XtraBackup备份MySQL

- - searchdatabase
  Percona XtraBackup是一款开放源码,免费的MySQL热备份软件,以非阻塞方式执行备份InnoDB和XtraDB为存储引擎的数据库,是商业备份工具InnoDB Hotbackup的一个很好的替代品. 作者的前一家公司就花了不菲美元买了Hotbackup产品.     下载地址: http://www.searchdatabase.com.cn/softwaredownload_10241.htm.

mysql实现增量备份

- - CSDN博客数据库推荐文章
有点要注意 如果你误删了表 想通过这个恢复 必须恢复日志里面有创建表的日志 不然的话是无法回复的  就是必须是从你开始创建表的时候就已经记录日志了 . 恢复到哪个位置 就按照哪个位置来计算. mysql  5.0不支持增量备份.     mysql数据库会以二进制形式 自动把用户对mysql数据库的操作 记录到文件 当用户希望恢复的时候可以使用备份文件 进行回复.

mysql数据备份3种方案

- - 开心平淡对待每一天。热爱生活
   mysql按照备份恢复方式分为逻辑备份和物理备份 逻辑备份是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现. 物理备份就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单. 这2种备份各有优劣,一般来说,物理备份恢复速度比较快,占用空间比较大,逻辑备份速度比较慢,占用空间比较小.

MYSQL自动备份策略的选择

- - ITeye博客
目前流行几种备份方式:. 1、 逻辑备份:使用mysql自带的mysqldump工具进行备份. 优点:最大好处是能够与正在运行的mysql自动协同工作,. 在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问). 如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据).

MySQL备份与恢复之热拷贝

- - CSDN博客数据库推荐文章
       在上一篇文章中我们提到热拷贝,热拷贝也就是在MySQL或者其他数据库服务在运行的情况下进行备份. 本文分享另外一种备份的方法,也就是热拷贝. 热拷贝跟热备很类似,只不过热备使用mysqldump命令,热拷贝使用mysqlhotcopy命令. 热拷贝的优势在于支持服务运行中进行备份,速度快,性能好;劣势在于只能备份MyIsam的表,无法备份InnoDB的表.

linux 定期自动备份mysql的shell

- - OurMySQL
刚才有个玩家在站上玩游戏,提醒了我要及时备份数据啊,万一哪天服务器挂了把他们的数据丢了,我可就是罪人了. 一直打算放个自动备份的shell,都没有放. 安全起见,直接用Root执行的:. 以下是自动自动备份shell,只保留最新5天. AutoMySQLBackup — 轻量级MySQL备份方案. LINUX/win2003下mysql怎么定期自动备份数据库.

MySQL Cluster-备份恢复初步测试

- - CSDN博客数据库推荐文章
在  http://blog.csdn.net/mchdba/article/details/10544585  的第八小节里面进行扩展测试. 8.1 sql节点上面录入数据:.  8.2 管理节点上面,开始备份.  8.3 再次插入几条数据(为了保持和正式环境尽可能接近,在插入数据中间穿插了flush logs操作!).

每天自动备份mysql脚本

- - CSDN博客数据库推荐文章
在etc中加入如下内容,让其自动执行任务. 以上两个 00    00    *    *    *  为每天的凌晨自动执行脚本. d: 一星期内的天(0~6,0为星期天). 每五分钟执行    */5 * * * *. 每小时执行      0 * * * *. 每天执行        0 0 * * *.