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双机热备的主要内容,如果未能解决你的问题,请参考以下文章