你好,上次我们简单地聊了一下Shiro。最近公司在准备项目部署的事情,并使用了Mysql的主从复制,今天就和你聊聊这个过程。
一开始的时候,我也没有想要单独去做主从,当初是打算做集群来着。后来发现集群有点儿困难,为了应对即将的上线,于是就将目标定为了:“先完成主从”。
什么是主从
所谓的主从,简单讲就是有两个数据库,主库提供一般的功能,从库在主库的数据变动的时候,将这些数据的变动同步到自己的身上。举个例子,主库在user表中新添加了一条记录,从库在主库添加完之后就也在自己的user表中添加了相应的记录。
好处
这样一来,如果主库出现了问题,那么可以继续用从库提供服务,如果这样的切换是同时的,且由机器自动完成,那么就仍然能够保证数据的提供。
便于理解的步骤
通常的步骤会有4个,分别是授权,修改配置文件,添加用户,检验,从机配置,连接主机。首先需要授权,即在安装Mysql数据库的服务器上打开3306的端口。如果是在阿里云上部署的话,那么在打开端口之后,还需要去配置安全组,使得3306的端口可以被访问。接下来就是要修改Mysql的配置,主要的一步就是添加bin_log的地址。再接着给主库添加一个用户,该用户是从库同步时与主库联系的用户名和密码,也正是因为如此,所以呢要给这个用户授予完全权限以及从机复制表的权限。这一步完成之后,重启主机的Mysql,查询Master的状态。如果看到了Master的状态是可用的,接下来就可以配置从机,连接主机了。
从机的配置主要是在server-id的添加,并在此之后添加一个relay-log,这一步完成之后就可以在从机上连接主机了。主要会用到change命令,在配置中出现的master_log_file对应show master status显示的File列,master_log_pos对应Position列。如果这个没有对应上的话,就会同步失败。紧接着在从库上创建与主库一样的数据库,用命令启动slave同步。如果看到Salave_IO_Runing与Salave_SQL_Running都是Yes,则表示配置成功。
遇到了坑怎么解决
我在配置的时候就遇到过一个问题:Salave_IO_Runing一直是no,不管从新配置多少次,依旧是这个结果。最终得益于某次的查询,发现是版本库不一样造成的,我的从库用的版本库的版本低于5.6。5.6的版本中加入了replication event checksum,主从复制时间校验功能,所以需要把这个关掉才能正常同步到5.5的slave。
清 单