您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 徐景春:企业级开源数据库灾备体系
企业级开源数据库灾备体系OSS,DBTeam2009-8-28概述灾备体系Q&A灾备技术灾备实现灾备功能概述1–企业级特点2–开源数据库3–灾备重要性企业级数据库特点一般来说大中型企业的数据库特点有数据量庞大数据库机器众多不止一处的数据库机房免费与收费数据库并存开源数据库灾备特点传统的灾备体系一定离不开IBM,Oracle这些软件巨鳄,它们在灾备领域经验丰富,技术成熟,同时费用昂贵.而随着近期的金融危机,越来越多的传统企业开始考虑使用开源产品降低成本,数据库方面尤其以MySQL突出,而MySQL相比Oracle成熟应用于企业级的数据库灾备体系还少之又少灾备重要性数据丢失对大小企业来说都是个恶梦,业务数据与企业日常业务运作唇齿相依,损失这些数据,即使是暂时性,亦会威胁到企业辛苦赚来的竞争优势,更可能摧毁你公司的声誉,或可能引致昂贵的诉讼和索偿费用。美国“911”恐怖事件发生后,在世贸大厦金融界巨头摩根士丹利公司全球营业部第二天可以照常工作你的公司有灾难恢复呢?2008.11.2.德克萨斯州27GB的档案数据没有进行及时备份,导致数据丢失,负责该灾备体系的IBM被罚90万美金灾备技术1–灾备定义2–灾备体系演变灾备定义所谓数据灾备,就是指建立一个异地的数据系统,该系统是本地关键应用数据的一个可用复制。在本地数据及整个应用系统出现灾难时,系统至少在本地或者异地保存有一份可用的关键业务的数据。该数据可以是与本地生产数据的完全实时复制,也可以比本地数据略微落后,但一定是可用的。采用的主要技术是数据备份和数据复制技术。根据央行和银监会的要求,总行数据中心的灾备系统应按照“两地三中心”的架构建设,在周边地域建立同城数据中心,在其他一个城市建立异地数据中心。体系演变„„„web备份系统ShellScriptMysqldumpMyISAM/InnoDBmanual/autofull/incrDump/cp电信网通同城异地异城异地离线磁带财务/银行数据恢复/灾难演习灾备技术1–备份一致性2–备份对业务的影响3–全量备份4–增量备份5–备份恢复备份一致性什么是备份一致性?停止正在运行的数据库或者锁住正在运行的数据库备份用MySQL的Replication机制,制作一个slave,在slave进行备份采用Transaction的存储引擎和文件系统,利用Transaction的特性进行备份如何实现备份一致性?备份对业务的影响备份对业务有那些影响?尽量在Slave是进行备份可以在一个服务器上启多个slave实例节约备份成本尽量在凌晨备份看清楚备份目的地规划好备份空间,做好监控如何降低这些影响?降低性能增加成本磁盘空间锁表,阻塞业务全量备份1–备份方式对比2–mysqldump3–ibbackup4–cp5–mysqlhotcopy6–Select/load7–LVM/ZFS全量备份全量备份是灾难恢复的重要保证备份方式必须要满足备份一致性为前提,还能不影响业务或者可以忽略对业务的影响的情况下,则重点从备份和恢复的速度,存储空间,易操作性来衡量Oracle&MySQL全量备份MySQL备份方式对比★以下对比必须是保证一致性为前提mysqldumpibbackupcpmysqlhotcopyselect/loadLvm/ZFS表引擎InnoDBMyISAMInnoDBInnoDBMyISAMMyIsamInnoDBMyISAMInnoDBMyISAM速度一般较快最快较快较快较快锁表InnoDB不锁MyISAM锁表不锁锁表锁表锁表不锁存储空间小大大小小大mysqldump适应引擎:MyISAM.InnoDB……适应角色:Master,Slave锁表:MyISAM备份需要锁表保证一致性,InnoDB使用--master-date和--single-transaction来保证数据一致性备份恢复速度:一般存储空间:少评价:mysqldump作为MySQL当前备份恢复不可替代的工具,能支持全部模式下的备份,而且备份出数据为文本文件,因此压缩后存储空间最优,但由于文本文件需要重新load后才能恢复数据,因而数据恢复速度视数据的多少,但依然值得推荐mysqldump1.Master为InnoDB的备份方式$mysqldump_string-f--single-transaction-d$db$bak_rdir/t_$bak_filename.sql$mysqldump_string-f--master-data--single-transaction-t$db$bak_rdir/d_$bak_filename.sql2.Slave为InnoDB的备份方式$mysql_string-estopslave;$mysql_string-eshowslavestatus\G$bak_rdir/slave_info$mysql_string-eflushtables;$mysqldump_string--single-transaction-d$db$bak_rdir/t_$bak_filename.sql&$mysqldump_string-f--master-data--single-transaction-t$db$bak_rdir/d_$bak_filename.sql&$mysql_string-estartslave;3.Slave为MyISAM的备份方式$mysql_string-eflushTABLESWITHREADLOCK;showslavestatus\G\!$mysqldump_string-d$db$bak_rdir/t_$bak_filename.sql;\!$mysqldump_string-t$db$bak_rdir/d_$bak_filename.sql;unlocktables;$tmp_fileibbackup适应引擎:InnoDB适应角色:Master,Slave锁表:不需要备份恢复速度:较快存储空间:多评价:ibbackup是innodb自身提供的一款收费软件,备份不锁表,但是它会备份原始的表空间,尽管支持压缩,但不能排除没有使用的表空间的备份,特别是对于预分配的表空间,不论使用没使用ibbackup都会备份,这点跟Oracle还有差距.所以ibbackup的恢复速度取决于表空间的大小以及在整个备份过程中undo日志的多少1.Master为InnoDB的备份方式ibbackup--compress/etc/my.cnf/home/mysql/backup-my.cnfcp适应引擎:InnoDB,MyISAM适应角色:Master,Slave锁表:需要备份恢复速度:最快存储空间:多评价:cp其实就是锁表直接拷贝数据了,因为innodb的存储空间是myisam的2~3倍,再加上innodb还有共享表空间,从空间上看,直接拷贝数据目录不太适用innodb引擎,但比较适合myisam引擎,特别是对myisam引擎的锁表后的直接tar包备份速度又快,恢复又快.所以采用异构体系,也就是master是innodb,slave是myisam这类,特别适合1.Slave为MyISAM的备份方式$mysql_string-eflushTABLESWITHREADLOCK;showslavestatus\G\!cprelay-log.infoslave.info;\!tar-zcvf$bak_rdir/$bak_filename.tgz$need_bak_file;unlocktables;$tmp_filemysqlhotcopy适应引擎:MyISAM适应角色:Master,Slave锁表:需要备份恢复速度:快存储空间:少评价:mysqlhotcopy是早期的mysql备份工具,只使用与myisam,是一个表一个文件类型,可惜速度上没有直接拷贝数据来得快,基本上已经没有太大价值.select/load适应引擎:MyISAM,InnoDB适应角色:Master,Slave锁表:需要备份恢复速度:快存储空间:少评价:应该说select/load不是一种标准的备份方式,但有其适用的环境,比如说将HASH分散的mysql数据库提取部分字段,制作集中数据仓库进行数据统计时候,采用select/load往往恢复速度最快,由于这不是标准的备份恢复方式,也就不给出使用方法,在我经历的使用mysql做数据仓库的时候,使用比较多,因此给出这个思路.LVM/ZFS适应引擎:MyISAM,InnoDB适应较色:Master,Slave锁表:不需要备份恢复速度:快存储空间:少评价:基于文件系统的备份方式是解决mysql备份很好的思路,特别是对于myisam引擎的数据库备份,而且这种备份模式是基于物理备份,而mysqldump是基于逻辑导出.这注定两者在数据备份和恢复的可靠度上是不一样的.但lvm需要额外的分配快照分区为备份使用,所以使用lvm会浪费一部分磁盘,更重要的是,这部分分配出来的空间不易再调整.因而对于长期备份需求来说变动很不灵活.这点ZFS有改进.采用Lvm和XFS的结合有一个非常大的优势,就是Lvm会忽略writebarriers,这个将能使你的文件系统快20倍,可以参见的相关介绍全量备份小结:Master为InnoDB:mysqldump,ibbackupMaster为MyISAM:Lvm/ZFSSlave为InnoDB:mysqldump,ibbackupSlave为MyISAM:cp灾备技术1–备份一致性2–备份对业务的影响3–全量备份5–备份恢复4–增量备份增量备份MySQL增量备份跟Oracle的增量备份有本质的区别mysql进行增量备份,从机制上决定了它不能保证数据的完整性和安全性MySQLBinlogVSOracleARCHIVELOG全备份+binlog理论上是可以指定恢复到具体时间的flushlogs;bak_file=`cd${binlog_dir}&&ls-l|grep${file_date}|awk'{print$9}'|sed'/.index/d'|sed's/^/\/opt\/mysql.bin\//'`rsync-av--progress--update${bak_file}mysql@${bin_bak_dest}::Binlog/${Local_ip}/${date_dir}/last_log=`tail-${bin_remain}$file_list|head-n1|awk-F\/'{print$4}'`PURGEMASTERLOGSTO'${last_log}';灾备技术1–备份一致性2–备份对业务的影响3–全量备份4–增量恢复5–备份恢复概述灾备体系Q&A灾备技术灾备实现灾备功能灾备功能所有备份方式以保证数据一致性和不中断(或尽可能少中断)业务流程为前提手动备份和自动备份并存全量备份和增量备份逻辑备份和物理备份多DB并发备份,多实例DB串行备份同时支持MySQL备份和Oracle备份满足在Master和Slave上不同角色的备份满足不同存储引擎InnoDB,MyISAM,Heap上的备份备份力度控制在库级,既能全库备份,也能备份部分库,配置调整灵活,能对备份地,备份时间根据不同的业务特性进行配置灾备功能表结构和数据分离,可以只备份表结构或者全数据备份间隔可以根据业务重要程度不同进行每小时,每天,每月,半月的配置依据业务数据量大小和重要程度进行备份后清除策略的配置给出每天备份报告,知晓那些机器备份,那些没有备份,备份成功和失败的情况,以及存储地址给出备份机磁盘增长情况,预算磁盘写满时间,及早做出扩容预算能自动根据备份恢复到指定的服务器上记录每次恢复日志,作为灾难演戏的经验积累和财务审计用途同城
本文标题:徐景春:企业级开源数据库灾备体系
链接地址:https://www.777doc.com/doc-5375366 .html