`
zhaoshijie
  • 浏览: 2242206 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自动备份策略之mysql

 
阅读更多
关键字:自动备份策略之mysql



最常见的几种备份方式及策略:

1、逻辑备份:使用mysql自带的mysqldump工具进行备份。备份成sql文件形式。
优点:最大好处是能够与正在运行的mysql自动协同工作,
在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问)。可能会阻止修改操作。sql文件通用方便移植。

缺点:备份的速度比较慢。如果是数据量很多的时候。就很耗时间。如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据)。那么服务就会影响的。


备注:所谓的与mysql服务器能够自动协同工作,实际上是指加参数来控制mysql服务器,比如锁定所有表只能进行读,不能进行写操作。

--lock-all-tables


2、物理备份:直接拷贝mysql的数据目录。缺点,你不能去操作正在运行的mysql服务器(在拷贝的过程中有用户通过应用程序访问更新数据,这样就无法备份当时的数据)
可能无法移植到其他机器上去。
直接拷贝只适用于myisam类型的表。这种类型的表是与机器独立的。但实际情况是,你设计数据库的时候不可能全部使用myisam类型表。你也不可能:因为myisam类型表与机器独立,方便移植,于是就选择这种表,这并不是选择它的理由。

更多的情况是,你会根据业务特点(比如你需要支持事务机制就必须使用innodb),查询速度和服务性能来选择表类型的。


必须保证表不被使用中。
如果服务器在你则正在拷贝一个表时改变它,拷贝就失去意义。
如果数据库表在文件系统备份过程中被修改,进入备份的表文件主语不一致的状态,而对以后的恢复表将失去意义。

保证你的拷贝完整性的最好方法是:关闭服务器,拷贝文件,然后重启服务器。
或者是,要锁定对应的表(对前端用户造成访问问题)。

解释直接拷贝文件,为什么不具备可移植性?


mysqldump 产生可移植到其他机器、甚至具有不同硬件结构的机器上的文本文件。直接拷贝文件不能够移植到其他机器上,除非要拷贝的表使用MyISAM 存储格式。ISAM 表只能在具有相同硬件结构的机器之间进行拷贝。例如,将文件从S PARC 的Solaris 机器拷贝到Intel 的Solaris 机器(或者相反)是行不通的。由MySQL3.23 引进的MyISAM 表存储格式可以解决这个问题,因为该格式与机器独立。因此,如果以下两个条件都满足的话,直接拷贝文件可以移植到具有不同硬件结构的机器上:即另一台机器上也必须运行MySQL3.23 以上的版本,并且文件必须表示成MyISAM 表,而不是ISAM 表。




3、双机热备份。

mysql数据库没有增量备份的机制。当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制(也就是双机热备)
优点:适合数据量大的时候。现在明白了。大的互联网公司对于mysql数据备份,都是采用热机备份。搭建多台数据库服务器,进行主从复制。

主从复制经常遇到的问题就是,如何保证数据不堵塞,不延迟。这个问题还是可以容忍的,有一些方案可以改善。毕竟有得有失的。这已经是很省心省力的方式了。



================================================



我目前应该使用什么样的备份策略的权衡:

物理备份,恢复快,当然最好是存储在一个机器上。我现在是用物理备份还是逻辑备份为好呢?
考虑到以后会迁移平台。为了保证通用性。恢复速度1分钟左右的差距我是可以容忍的。所以我为了跨平台,我更加愿意使用逻辑备份。存储sql文件形式。

双热机备份方式,目前硬件没有多个。技术人员有限,需要人力去维护,比较麻烦。所以排除在外。





方案:
1、总体策略:写个定时执行任务。定时在晚上或凌晨自动备份(考虑数据库服务器在运行中不能停机)
代码中做成备份成功后,把以前的删掉。避免很多数据占据磁盘。

2、考虑到初期数据量这么小。使用mysqldump进行备份吧。设置在凌晨几点(4-6点这个时候基本上没什么人访问)的时候自动备份。


3、使用逻辑备份方式:恢复速度1分钟左右的差距我是可以容忍的。所以我为了跨平台,我更加愿意使用逻辑备份。存储sql文件形式。

4、每天都进行备份。由于是在凌晨的时候mysqldump去锁定,访问数据库服务器。对服务器几乎没什么影响。所以每天都可以备份。每天都一个sql文件。那么将会很多文件。
所以,每次备份成功后。删除以前的文件。保留最近一个星期的备份sql文件。


备份工具的路径:/usr/bin/mysqldump
备份数据保存路径:/data/backdata/



5、备份脚本的编写

思路:

5.1 在shell脚本中调用mysqldump生成备份文件(这个工具可以生成sql文件到磁盘上去)

5.2 为了方便以后查找。每次备份的记录记录成日志形式。几点进行了备份操作,生成了什么文件名称。这样可以方便以后查阅哪天是否没有成功备份

删除的文件作为日志信息也记录下来。

5.3  让linux下的crontab进程调用脚本执行。

命令:crontab -e

打开的文件中加入代码:0 05 * * * 脚本的路径/mysqlback.sh







mysqlback.sh的内容:



# /bin/bash
DB_NAME="****"
DB_USER="****"
DB_PASS="****"
BIN_DIR="/usr/bin"
BACK_DIR="/data/backdata"
DATE="mysql-`date +'%Y%m%d-%H:%M:%S'`"
LogFile="$BACK_DIR"/dbbakup.log #日志记录保存的目录
BackNewFile=$DATE.sql

$BIN_DIR/mysqldump --opt --force -u$DB_USER  -p$DB_PASS $DB_NAME > $BACK_DIR/$DATE.sql


echo -----------------------"$(date +"%y-%m-%d %H:%M:%S")"----------------------- >> $LogFile



echo  createFile:"$BackNewFile" >> $LogFile


#find "/data/backdata/" -cmin +1 -type f -name "*.sql" -print > deleted.txt

find "/data/backdata/" -ctime +7 -type f -name "*.sql" -print > deleted.txt

echo -e "delete files:\n" >> $LogFile

#循环删除匹配到的文件
cat deleted.txt | while read LINE
do
    rm -rf $LINE
    echo $LINE>> $LogFile
done


echo "---------------------------------------------------------------" >> $LogFile


分享到:
评论
2 楼 zhaoshijie 2013-12-18  
netkiller.github.com 写道
如此啰嗦
看这个
https://github.com/netkiller/backup/blob/master/shell/backup.mysql.sh

年轻人就是急躁啊  哈哈 哈哈 哈哈
1 楼 netkiller.github.com 2013-12-18  
如此啰嗦
看这个
https://github.com/netkiller/backup/blob/master/shell/backup.mysql.sh

相关推荐

    Linux系统部署Mysql自动备份策略操作步骤(20200618).txt

    描述Linux系统部署Mysql自动备份操作详细步骤 描述Linux系统部署Mysql自动备份操作详细步骤 描述Linux系统部署Mysql自动备份操作详细步骤

    数据库备份脚本mysql

    在实施数据库备份之前,我们需要制定一个备份策略。备份策略应该包括以下几个方面: 备份频率:决定备份的频率,例如每天、每周或每月备份一次。 备份类型:决定备份的类型,例如完全备份或增量备份。 备份存储...

    linux一键安装mysql5.7和mysql8.0脚本

    该包中包含一键安装mysql5.7和mysql8.0脚本,分为mysql二进制包安装和yum安装,并一起部署MySQL备份策略 用于快速部署mysql场景,适合多项目快速部署 备份工具为xtrabackup

    通用数据库及文件自动备份系统

    可用于对sqlserver、sybase、mysql、oracle,MDB等数据库进行定时自动备份,并将备份的数据库文件、指定的文件夹传送到远程的计算机中,是一款免安装纯绿色软件。此版本在第二版的基础上,增加了相应的备份策略:...

    MySql 5.1 参考手册.chm

    5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据和排序...

    MySQL 5.1参考手册

    5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据...

    MySQL 5.1中文手冊

    5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据和排序...

    MySQL 5.1官方简体中文参考手册

    5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据和排序...

    mysql5.1中文手册

    示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 ...

    redhat/centos版本>=7.x系统一键安装mysql数据库5.7.x并配置基线安全策略shell脚本

    5.暂时不支持centos和redhat 版本为6.x的系统自动安装 6.可同时按住Ctrl和c停止脚本的安装运行 7.若运行脚本表明您愿意承担脚本运行带来的风险和责任,请提前检查备份 8.反馈可联系qq 1024588739 9.可安装目前最新版...

    MySQL 5.1参考手册中文版

    5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据...

    MySQL 5.1参考手册 (中文版)

    5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据和排序...

    frabit:一款适用于MySQL的备份管理工具,集成了mysqldump,mysqlpump,mysqlbinlog,xtrabackup等开源组件。零编码,配置备份策略可直接使用

    逻辑备份:根据备份策略,调用进行备份 2。物理备份:根据备份策略,调用进行备份 3。 binlog备份:根据备份策略,调用进行备份 备份巡检 1。日常巡检 2。月末巡检 备份恢复演练 1。本地备份文件恢复-在线 2。远程...

    MYSQL中文手册

    5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    06-只备份MySQL表结构及只备份MySQL数据.avi 07-企业生产场景不同引擎备份命令参数详解.avi 08-利用source恢复mysql数据讲解及实战.avi 09-分库备份后mysql如何分库恢复实战.avi 10-mysql进程-状态-在线修改参数重要...

    MySQL进阶-高可用、分布式、主从复制原理、备份恢复

    MySQL进阶涉及多个主题,其中高可用性、分布式系统、主从复制原理和备份恢复是核心部分。以下是关于这些主题的详细解释: 高可用性 (High Availability) 定义:确保在任何给定的时间点,服务都是可用的。 策略: ...

    mysql官方中文参考手册

    5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据和排序...

    MySQL5.1参考手册官方简体中文版

    5.9.2. 示例用备份与恢复策略 5.9.3. 自动恢复 5.9.4. 表维护和崩溃恢复 5.9.5. myisamchk:MyISAM表维护实用工具 5.9.6. 建立表维护计划 5.9.7. 获取关于表的信息 5.10. MySQL本地化和国际应用 5.10.1. 数据和排序...

Global site tag (gtag.js) - Google Analytics