MySQL主从复制的研究与应用

2018-01-30 16:40邢志峰
电子技术与软件工程 2017年15期

邢志峰

摘要:近年来,承钢公司逐渐引入了开源软件和开源数据库来降低开发成本,MySQL做为最流行的开源数据库在企业中应用较多,数据库的安全、备份与恢复一直是企业关注的重点,在日常维护中数据库的备份是定期执行的,周期较长,本文通过对MySQL数据库主从复制的研究,解决了数据不能实时备份的问题,而主从数据库的切换能够很好的保证前台业务的稳定运行。

【关键词】数据备份与恢复 MySQL 主从复制

1 MySQL主从复制的原理

MySQL主从复制基于主数据库的二进制日志文件内容进行的,用户对主数据库的创建、修改、删除等操作以及对表的增、删、改、查操作都会记录到二进制日志文件中,從数据库通过I/O线程来连接主服务器,主服务器创建一个线程将二进制日志中的内容发送到从服务器,从服务器将内容拷贝到它的中继日志当中,从服务器利用SQL线程从中继日志读取事件,并重放其中的事件而更新到从数据库当中,使其与主数据库中的数据保持一致。具体的原理图如图1。

2 MySQL主从复制的搭建

2.1 环境介绍

本文以MySQL的新版本5.7.18为例,将其安装在Centos6的环境下,关闭本机的防火墙SeLinux和IPtables.使用Ntpdate与局域网的时问服务器进行对时。另外,需要注意的是主从服务器版本必须一致,数据库的root用户密码建议进行修改,不要使用初始密码。

2.2 安装数据库

通过官方网站找到操作系统对应的安装包,将其下载到本地进行yum安装,把MySQL的服务器端和客户端软件安装完毕后启动数据库服务,修改数据库的默认密码。

2.3 配置主数据库参数

主从复制主要依靠数据库的binlog日志,它以事件的形式保存,它是主从复制的基础,所以要在配置文件中开启此项功能。下而介绍配置主从复制时的几个重要参数,server-id为主数据库指定唯一的id值;max binlogcache size该参数表示binlog使用的内存最大值,binlog_cache_size该参数表示binlog使用的内存大小,可以通过查看状态变量来查看当前值用于测试;sync_binlog是个重要参数它直接影响mysql的性能和完整性,当设置为O时表示,当事务提交后binlog_cache中的数据写入Binlog文件,同步文件系统不立即将数据刷新到磁盘上,而让文件系统自行决定什么时候来做同步,这个是性能最好的,但是风险也是最大的,一旦同步系统崩渍,缓存中的数据将全部丢失。当sync_binlog=n时,在进行n次事务提交以后,同步系统将强制进行一次数据刷新,将缓存中的数据同步到磁盘上;innodb flush_ log_at_trx commit该参数表示每一次事务提交或事务外的指令都需要把日志写入硬盘,这是很费时的,但是最安全的。

2.4 配置从数据库参数

在进行主从复制时,从数据库依靠SlaveIO线程和Slave_SQL来实现数据的同步,从服务器的二进制日志不是必须启用的,如果该从服务器要作为其他服务器的主服务器时则需要启用,若启用二进制日志,可以用作数据备份和功能恢复。下而介绍从数据库的几个重要参数,server id是必须设置的,而且不能和主数据库重复:relay_log_recovery这个参数的作用是当从数据库宕机后,假如中继日志损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的中继日志,并且重新从主数据库上获取日志,这样就保证了中继日志的完整性,建议开启;log_slave_updates表示从数据库将复制事件写进自己的二进制日志,使用该参数的前提是需要从数据库开启binlog日志。

2.5 主从数据库的连接

设置完主从数据库的参数之后,需要在主数据库上为从数据库创建复制用户并进行授权,使用CHANGE MASTER TO语句指定主数据库IP地址,指定复制用户和密码,二进制日志文件名称和数据库同步位置。之后在从数据库上启动slave线程,查看线程状态,如果Slave IO_Running和Slave_SQL_Running都为Yes,说明从数据库状态正常,在主数据库上也可以看到从数据库的I/O线程创建的连接,说明主从数据库的连接正常。

3 主从数据库的切换

在日常的数据库维护中可能出现主数据库的宕机导致业务不能正常使用,本文以承钢设备平台为例,讲解主从数据库的切换方法。承钢设备平台采用BS结构开发,后台数据库使用的是MySQL,通过数据库的主从复制实现了数据库的实时备份,通过使用监控系统实时监控主从数据库状态,主数据库一旦出现故障,通过监控系统向数据库管理员发送报警信息,数据库管理员停止从数据库的slave线程,即可实现主从数据库的切换。

参考文献

[1]施瓦茨等,高性能MYSQL [M].北京:电子工业出版社,2013.

[2]姜承尧.MYSQL技术内幕INNODB存储引擎[M].北京:机械工业出版社,2013.endprint