MySQL如何选择合适的备份策略和备份工具 (mysql如何启动)

教程大全 2025-07-16 05:18:32 浏览

数据库备份的重要性毋庸置疑,可以说,它是数据安全的最后一道防线。鉴于此,对于备份,我们通常会做以下要求:

多地部署

对于核心数据库,我们通常有两地三中心的部署要求。对于备份来说,也是如此。

一个备份应该有多个副本,每个副本存储在不同区域。

一个备份的多个副本应存储在不同介质上,如磁盘和磁带,防止单一介质失效。

备份只是在做正确的事情,有没有把事情做对,还得依靠备份的有效性检查。

mysql如何启动

前两项,在条件允许的情况下,建议做。第三项必须做。

接下来,我们聊聊备份的相关话题,主要包括以下五方面的内容:

一、备份的常见分类

1、物理备份 VS 逻辑备份

1)物理备份

顾名思义,就是备份物理文件。其优缺点如下:

① 优点

② 缺点

2)逻辑备份

备份表的逻辑记录。其优缺点如下:

① 优点

② 缺点

2、离线备份 VS 在线备份

离线备份,又可称之为 “冷备”,即实例关闭的情况下进行的备份。此时,只能进行物理备份,即全量拷贝物理文件。

在线备份,又可称之为 “热备”,即实例运行过程中进行的备份。此时,既可进行物理备份,又可进行逻辑备份。

因对业务侵入较小,线上一般使用在线备份。

3、全量备份 VS 增量备份

全量备份,即备份整个实例的全量数据。

增量备份,即只备份上次备份以来,那些发生了”变化”的数据。

通常来说,基于物理备份来实现增量备份较为简单,以MySQL为例,只需判断数据页的LSN是否发生了变化。

而对于逻辑备份,就很难实现,如常见的基于某个时间字段来进行增量备份,但其实,很难保证某个时间段之前的数据不被修改或删除。

二、MySQL中的备份工具

1、物理备份

物理备份相关的工具有:

1)XtraBackup

Percona公司开源的备份工具,适用于MySQL、MariaDB、Percona server

XtraBackup目前维护的大版本有两个:

之所以要维护两个版本,是因为MySQL 8.0中的redo log和数据字典的格式发生了变化。

2)mysqlbackup

MySQL企业级备份工具( MySQL Enterprise Backup ),适用于MySQL企业版。

3)Clone Plugin

MySQL 8.0.17引入的克隆插件。初衷是为了方便Group Replication添加新的节点。有了Clone Plugin,我们也能很方便的搭建一个从库,无需借助其它备份工具。

三者的实现原理基本相同,都是在备份的过程中,拷贝物理文件和redo log ,最后,再利用InnoDB Crash Recovery,将物理文件恢复到备份结束时的一致性状态。

2、逻辑备份

逻辑备份相关的工具有:

1)mysqldump

MySQL安装包自带的备份工具,单线程备份。

2)mydumper

由Facebook、SkySQL、Oracle和Percona开发人员维护的一个多线程备份工具,可实现行级别的并行备份。

3)mysqlpump

MySQL 5.7引入的备份工具,可实现表级别的并行备份。

4)MySQL Shell

MySQL Shell 8.0.21引入了一个工具-util.dumpInstance(),可实现行级别的并行备份。

这个工具对备份实例和恢复实例的版本有要求:备份实例 >= 5.6,恢复实例 >= 5.7。

5)SELECT … INTO OUTFILE

SQL命令,可将表记录直接导出到文件中。

下面说说这几个工具的异同点:

而 MySQL Shell和SELECT … INTO OUTFILE 是以CSV格式的形式保存备份结果,如,


mysqldump、mysqlpump对应的恢复工具是mysql客户端,所以是单线程恢复。

mydumper对应的恢复工具是myloader,支持多线程恢复。

util.dumpInstance()对应的恢复工具是util.loadDump(),该工具实际调用的是LOAD>三、mysqlbackup VS mysqldump

下面是MySQL官方提供的一组数据,对比了mysqlbackup和mysqldump备份恢复时间。

第一张图比较的是备份时间,mysqldump是mysqlbackup的49倍。

第二张图比较的是恢复时间,mysqldump是mysqlbackup的80倍。

借此,我们也能看到逻辑备份工具相对于物理备份工具在备份、还原速度上的差距。

不过可惜的是,这里没有测试mydumper。

毕竟,针对数据量较大的实例,如果一定要使用逻辑备份,大家一般倾向于使用mydumper,而不是mysqldump。

四、如何检测备份的有效性

为什么要检测备份的有效性,原因主要有两个:

很多时候,影响数据库恢复时间的并不是备份集太老,而是手动恢复过程中,因为命令、环境、流程的不熟悉,所带来的额外耗时。

如何检测备份的有效性,常用的方法有三个:

这种检测方法最简单。

一般来说,实例能起来,且随机查询也没问题,就意味着这个备份集是可用的。

但备份集可用,并不意味着这个备份集能满足我们的需求,譬如常见的,搭建从库。

而且一些常见的问题,如备份中断、参数没指定准确,也无法通过这种方式检测出来。

如果从库在追主库的过程中,没有报错,大概率意味着主从数据是一致的。当然,也只是大概率,并不是100%。

如果检查结果没问题,则意味着主从数据是一致的,也就间接证明了备份的有效性。

但因为pt-table-checksum在运行的过程中,会在chunk级别对表加S锁,对更新频繁的业务,还是有一定的影响。

一般来说,线上使用方法2足矣。

方法3,因为要检查主从数据的一致性,耗时相对较久,如果要检测的备份集很多,反而会影响检测的效率。

五、RTO 和 RPO

衡量一个数据中心的容灾能力时,有两个常用的指标:

指的是灾难发生后,必须在这个时间内恢复数据。

在恢复数据的这段时间内,服务是不可用的,所以RTO也是服务可允许的最大不可用时间。如果我们要求服务的最大不可用时间是30分钟,那么RTO就是30分钟。

RTO 越小,代表容灾系统的恢复能力越强。

指的是灾难发生后,数据可以恢复到的时间点。

譬如,我有一个系统,每天0点进行一次全备。当系统出现故障后,会基于上一次的备份来恢复。如果系统在凌晨3点出现故障,我们会丢失3个小时的数据。极端情况下,系统在23:59出现故障,我们会丢失24个小时的数据。这里的24小时就是这个系统的RPO 。

RPO越小,代表系统越能保证数据的完整性。

RTO、RPO与灾难在时间轴上的关系如下图所示:

可以看到,RPO针对的是数据丢失,RTO针对的是服务宕机时间,两者之间没有必然的联系。

最理想的情况是RTO和RPO都为0,这就意味着当灾难发生时,系统会立即恢复,而且数据不会丢失。当然,RTO、RPO越小,需要投入的成本也越高。

具体到MySQL中,为了降低RTO和RPO,我们可以从以下几个方面着手:

六、总结

从RTO的角度出发,应尽量选择物理备份,而不是逻辑备份。如果要使用逻辑备份,应尽量选择多线程备份工具和多线程恢复工具。

从RPO的角度出发,应尽量增加备份频率,缩短备份周期。

但 every coin has two sides,使用物理备份或者增加备份频率,无疑会增加存储成本。

所以,在确定备份策略和选择备份工具时,应从业务的RTO和RPO出发,结合存储成本综合考虑。

大多数公司会采取一个统一的备份策略,如一天一个全备。虽然灾难情况很少出现,开发和DBA童鞋也应充分理解到这里面的风险,并制定相应的预案及业务兜底方案。

另外,对于线上核心业务,如果只有备份,还是很难有效降低数据库服务的RTO和RPO,建议部署延迟从库。


以下哪个技术标准是采用公钥密码体系的证书机制来进行身份验证的

ca的作用是检查证书持有者身份的合法性,并签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和密钥进行管理。 (三)ca中心ca中心为每一个使用公钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。 ca认证中心的数字签名技术使得攻击者不能伪造和篡改证书。 在set交易中,ca不仅对持卡的消费人、商家发放证书,还对交易过程中所涉及到的银行、网关也发放证书。 它负责产生、分配并管理所有参与网上交易的个体所需的数字证书。 (四)ca证书的种类ca中心发放的证书分为两类:ssl证书和set证书。 一般地说,ssl(安全套接层)证书是服务于银行对企业或企业对企业的电子商务活动的;而set(安全电子交易)证书则服务于持卡消费、网上购物。 虽然它们都是用于识别身份和数字签名的证书,但它们的信任体系完全不同,而且所符合的标准也不一样。 简单地说,ssl证书的作用是通过公开密钥证明持证人的身份。 而set证书的作用则是,通过公开密钥证明持证人在指定银行确实拥有该信用卡账号,同时也证明了持证人的身份。 用户想获得证书时,首先要向ca中心提出申请,说明自己的身份。 ca中心在证实用户的身份后,向用户发出相应的数字安全证书。 认证机构发放证书时要遵循一定的原则,如要保证自己发出的证书的序列号各不相同,两个不同的实体所获得的证书的主题内容应该相异,不同主题内容的证书所包含的公开密钥相异等。 (五)ca证书的基本原理及功能?ssl协议的握手和通讯为了便于更好的认识和理解ssl协议,这里着重介绍ssl协议的握手协议。 ssl协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。 ssl的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:①客户端的浏览器向服务器传送客户端ssl协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。 ②服务器向客户端传送ssl协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。 ③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的ca是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。 如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。 ④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。 ⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。 ⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的ca是否可靠,发行ca的公钥能否正确解开客户证书的发行ca的数字签名,检查客户的证书是否在证书废止列表(crl)中。 检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。 ⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于ssl协议的安全数据通讯的加解密通讯。 同时在ssl通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。 ⑧客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。 ⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。 ⑩ssl的握手部分结束,ssl安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。 ca中心主要职责是颁发和管理数字证书。 其中心任务是颁发数字证书,并履行用户身份认证的责任。 ca中心在安全责任分散、运行安全管理、系统安全、物理安全、数据库安全、人员安全、密钥管理等方面,需要十分严格的政策和规程,要有完善的安全机制。 另外要有完善的安全审计、运行监控、容灾备份、事故快速反应等实施措施,对身份认证、访问控制、防病毒防攻击等方面也要有强大的工具支撑。 ca中心的证书审批业务部门则负责对证书申请者进行资格审查,并决定是否同意给该申请者发放证书,并承担因审核错误引起的、为不满足资格的证书申请者发放证书所引起的一切后果,因此,它应是能够承担这些责任的机构担任;证书操作部门(certificatep-rocessor,简称cp)负责为已授权的申请者制作、发放和管理证书,并承担因操作运营错误所产生的一切后果,包括失密和为没有授权者发放证书等,它可以由审核业务部门自己担任,也可委托给第三方担任。 (六)ca证书管理包括哪些方面工作ca策略管理管理员可以指定ca管理策略,包括:根证书、个人证书、企业证书、服务器证书的密钥长度、有效期、是否备份等策略。 (七)画图说明ca证书申请流程。 (八)申请ca证书的用户导出证书的目的是什么?简要介绍导出的操作步骤1当普通的恢复失效时,数据恢复代理需要使用数据恢复密钥,以允许代理恢复加密数据。 因此,保护恢复密钥是非常重要的。 有一种好方法可以防止丢失恢复密钥,那就是仅在需要时才将这些恢复密钥导入本地计算机。 而在其他时候,您应将数据恢复代理的数据恢复证书和私钥导出,并以格式文件存储到安全的可移动介质。 2步骤第一步,从ie中导出证书。 点击ie菜单工具,打开internet选项对话框,选中内容页,点击证书,弹出证书对话框,请您选择您要导出的证书,然后选择导出操作,您就可以根据证书导出向导操作完成证书导出了,请注意,证书导出向导第二步提示您是否导出私钥?,请选择是,导出私钥,成功导出证书后,您会得到一个以结尾的文件。 第二步,导入证书到webmail。 在webmail左帧选择个人资料,然后在右帧点击设置个人证书。 请点击导入证书,在上传证书对话框中请浏览找到您在第一步操作中所导出的文件,按下一步,输入您在第一步的证书导出向导里要求您输入的秘匙保护密码,您可以选择保存密码,以后查看加密邮件就不需要输入密码了。 成功的话,webmail将会显示证书的简略信息。 有了个人证书,你就可以发送有你数字签名的信件了。

地方性社区论坛建站,刚开始用多大的虚拟主机空间比较合适?

推荐你用万网L1型(1G,送独立IP,多线机房,Linux+Apache2+MySQL+PHP,送300M MYSQL数据库),网站备案免费国际英文域名(com)

mysqldump不锁表备份,怎么设置为好

mysqldump是mysql用于转存储数据库的实用程序。 它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATETABLEINSERT等。 如果给mysqldump进行备份,从库上停止复制的sql线程然后mysqldump,这个是个很好的选择,因为停止复制就没有写,就不用担心锁表的问题。 下面提供两只备份方法:一、MyISAM引擎备份1.由于MyISAM引擎为表级锁,因此,在备份时需要防止在备份期间数据写入而导致不一致,2.所以,在备份时使用--lock-all-tables加上读锁mysqldump-A-F-B--lock-all-tables|gzip>/data/backup/$(date+%F)3.特别提示:有关MyISAM和InnoDB引擎的差别和在工作中如何选择,在前面已经详细讲解过了,这里就不在讲了。 二、InnoDB引擎备份引擎为行锁,因此,备份时可以不对数据库加锁的操作,可以加选项--single-transaction进行备份:mysqldump-A-F-B--single-transaction|gzip>/data/backup/$(date+%F)2.特别注意:--single-transaction仅适用于InnoDB引擎。 --master-data=2会将当前mysql用到的binlog文件的日志名称和位置记录下来然后搜索changemaster就行了mysqldump-uroot-ppasswd-Bctp1--lock-all-tables|gzip>/home/mysql/ctp1.$(date+%F)--no--data仅仅dump数据库结构创建脚本通过--no-create-info去掉dump文件中创建表结构的命令。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐