MySQL双机热备

Posted 数通畅联

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL双机热备相关的知识,希望对你有一定的参考价值。

mysql数据库没有增量备份的机制,当数据量太大时,备份是一个很大的问题。所以MySQL数据库提供了一种主从备份的机制,可以把主数据库的所有数据同时写到备份的数据库中,实现MySQL数据库的热备份。实现双机的热备,首先要了解主从数据库服务器的版本需求。同时实现热备MySQL数据库的版本都需要高于3.2版本。还有一个基本的原则,就是作为从数据库的数据版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。

当然关于MySQL双机热备,除了MySQL本身自带的REPLICATION功能可以实现外,也可以用Heartbeat这个开源软件来实现。本文主要讲述如何用MySQL自带的REPLICATION来实现MySQL双机热备的功能。 

1需求说明 

在企业实际的生产环境中,有时会因为服务器故障导致信息化运作停止,为了应对这种现象,可以通过数据热备来解决单台服务器的数据服务崩溃问题,具体应用场景及环境配置说明如下。 

1.1应用场景 

双机热备针对的是服务器故障。服务器故障可能由各种原因引起,如设备故障、操作系统故障、软件系统故障等等。一般地讲,有技术人员在现场的情况下,恢复服务器正常可能需要10分钟、几小时甚至几天。从实际经验上看,除非是简单地重启服务器(隐患可能仍然存在),否则往往需要几个小时以上。相反如果技术人员不在现场,那么恢复服务的时间就更长了。而对于一些重要系统而言,用户是很难接受长时间服务中断的。因此就需要通过双机热备,来避免长时间的服务中断,保证系统长期、可靠的服务。 

1.2环境说明 

操作系统:两台CentOS 7.6的Linux系统(虚拟机) 

数据库版本:MySQL 5.7 

主服务器IP:192.168.28.37 

从服务器IP:192.168.28.38 

2备份方式 

数据库备份的重要性不言而喻,特别是在生产环境,任何数据的丢失都可能产生严重的后果。所以,无论什么环境,我们都应该有相应的备份策略来定时备份数据库,下面介绍几种常用的数据备份方法。 

2.1工具备份 

MySQL工具备份是比较简单的备份方法,使用Navicat等可视化工具进行快速数据备份及还原,其操作比较简单,恢复的方式也很简单。使用这种软件备份的数据库会带上建库的sql语句,方便数据库的还原。设置定时备份可以预防程序员因为繁忙而忘记备份,造成数据丢失的情况,确保数据安全。 

2.2脚本备份 

在实际生产环境中,客户MySQL服务器往往是部署在Linux系统中,为了防止误操作及恶意攻击导致数据丢失等现象,可以利用crontab定时任务来执行备份脚本对数据库数据进行备份,脚本备份往往会跟据服务器冷点,例如凌晨时执行备份脚本,并定期对备份数据进行删除,但是脚本备份往往会丢失部分数据,并不是最佳的备份方式,最佳效果是服务器集群间的热备。 

2.3双机热备 

双机热备就是使用MySQL提供的一种主从备份机制实现。所谓双机热备其实是一个复制的过程,复制过程中一个服务器充当主服务器,一个或多个服务器充当从服务。这个复制的过程实质上是从服务器复制主服务器上MySQL的二进制日志(bin-log),并在从服务器上还原主服务器上的sql语句操作,这样只要两个数据库的初态是一样的,就可以一直进行数据同步。 

3热备原理 

这种备份是基于MySQL二进制日志实现的,所以主从服务器上的MySQL版本最好是相同的,至少从服务器的MySQL版本不可以低于主服务器的数据库版本。因为MySQL不同的版本之间二进制日志可能不一样。当然这种复制和重复都是MySQL自动实现的,我们只需要配置即可。 

3.1工作原理 

对于一个MySQL服务器, 一般有两个线程来负责复制和被复制。当开启复制后作为主服务器Master,会把自己的每次改动都记录到二进制日志 binlog 中(从服务器会负责来读取这个log,然后在自己那里再执行一遍)。 

作为从服务器Slave,会用Master服务器上的账号登陆到Master上,读取Master的binlog日志,写入到自己的中继日志 Relaylog中,然后自己的SQL线程会负责读取这个中继日志,并执行一遍。 

3.2文件解析 

binlog是二进制日志,它记录了数据库上的所有改变,改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕。binlog格式分为statement、row以及mixed三种,MySQL5.5默认的还是statement模式,当然我们在主从同步中一般是不建议用statement模式的,因为有些语句不支持,比如语句中包含UUID函数,以及LOAD DATA IN FILE语句等,一般推荐的是mixed格式。 

Relaylog很多方面都跟binlog差不多,Relaylog中继日志是连接Master和Slave的核心,只不过他多了一个Master.info和relay-log.info的文件。 

3.3注意事项 

在考虑双机热备时,需要注意:一般意义上的双机热备都会有一个切换过程,这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。因此,双机热备不是无缝、不中断的,但它能够保证在出现系统故障时,能够尽快恢复正常服务,使业务不受到影响。而如果没有双机热备,一旦出现服务器故障,可能会出现几个小时的服务中断,对业务的影响,可能会造成公司严重的损失。 

4热备配置 

MySQL热备的实现都是通过日志文件读取实现的,需要对主服务器及服务器进行配置,具体实现方式如下。 

4.1主服务器 

1.修改数据库配置文件; 

更改配置文件; 

2.重启数据库服务(MySQLd); 

3.登陆MySQL数据库允许从库获得主库日志; 

输入密码后登录MySQL。 

4.重启MySQL服务,登录MySQL,查看主库信息; 

需要记住File及Position信息,后面会用到。 

4.2从服务器 

1.修改从库的数据库配置文件; 

2.重启MySQL服务,登录MySQL; 

3.数据库修改; 

4.查看从库状态信息; 

至此整个过程就配置好了。现在可以在主服务器上创建一个表,然后在从服务器上查询刚创建的这个表,看是否存在。 

4.3测试验证 

验证UMC产品的sys_log数据表,目前表中有306条数据,从增删改进行验证操作。 

4.3.1数据新增 

登录UMC平台日志表会新增一条数据,现登录UMC。 

成功登录,主数据库表验证。 

从库验证,效果如下。 

4.3.2数据变更 

在主数据库内修改用户登录USER_ID为root,从库验证成功。 

4.3.3数据删除 

清空主库表内全部数据,从库验证成功。 

5心得体会 

通过撰写本篇文档意识到工作过程中随手记录的重要性,在记录后一定要把记录内容整理到工作文档中,并做好归纳。对于自身知识不断的迭代完善,现从做事方法、意识形态、能力提升方面总结如下。 

5.1做事方法 

通过平时工作中对技能点的随手记录,在撰写这篇文章的过程中,再次的梳理了自己的逻辑。在后续的工作中,应该把文档分门别类地整理出来,例如教程类的归为一类、错误信息及解决方案的归为一类、知识点归为一类。以便自己日后的更新迭代及快速查找。个人认为写文档不仅没有浪费时间,而且通过文档的撰写过程,间接直接的给了我许多帮助。比如代码的复用、类似错误信息的快速调试等,都节省了很多时间。 

5.2意识形态 

伴随着自身专业知识的不断积累,对知识的认知也不断地提高。此时回过头来看自己之前记录的工作文档,会发现有很多漏洞存在,这时就需要再次完善工作文档。在完善的过程中把初学时的理解和当下进行比较,可以了解到当时自己的不足,思维逻辑有了怎样地提升。技术、认知在不断地更新,工作文档也在不断地更新,在不断迭代更新的过程中,使自己的知识由点连成了线。 

5.3能力提升 

在工作学习过程中通过不断记录文档,可以从多方面提升自身的综合能力。一方面可以感觉到自己的逻辑思维有了很显著地提升,尤其是在记录教程类文档时,可以重新系统的梳理技术要点,在这个过程中,可以不断提高自己的逻辑思维;另一方面在有了清晰的逻辑思维后,对自己的技术能力和水平都有了系统地提升;同时撰写文档也是一个总结、反思的过程,能够帮助自己深入思考。 

就目前的IT行业来看,撰写文档也并不是毫无缘由的,一个优秀的IT从业者势必具有过硬的笔头功夫。除此之外,不管向项目实施、项目管理、项目经理或是后端开发等任何方向发展,都会有撰写项目总结、实施进度汇报、需求设计文档等要求,因此重视并培养自己撰写文档的能力至关重要,将文档记录形成习惯,将有助于个人成长。 

以上是关于MySQL双机热备的主要内容,如果未能解决你的问题,请参考以下文章

mysql的双机热备

Mycat+Mysql主从复制实现双机热备

MySQL 数据库双机热备方案

mysql双机热备实现方案

MySQL双机热备

MySQL架构备份之双机热备