goodrain云平台 mysql主从同步应用创建

时间:2022-09-09 22:30:59

mysql 主从同步原理

goodrain云平台 mysql主从同步应用创建

1)在Slave 服务器上执行sart slave命令开启主从复制开关,开始进行主从复制。

2)此时,Slave服务器的IO线程会通过在master上已经授权的复制用户权限请求连接master服务器,并请求从执行binlog日志文件的指定位置(日志文件名和位置就是在配置主从复制服务时执行change master命令指定的)之后开始发送binlog日志内容。

3)Master服务器接收到来自Slave服务器的IO线程的请求后,其上负责复制的IO线程会根据Slave服务器的IO线程请求的信息分批读取指定binlog日志文件指定位置之后的binlog日志信息,然后返回给Slave端的IO线程。返回的信息中除了binlog日志内容外,还有在Master服务器端记录的IO线程。返回的信息中除了binlog中的下一个指定更新位置。

4)当Slave服务器的IO线程获取到Master服务器上IO线程发送的日志内容、日志文件及位置点后,会将binlog日志内容依次写到Slave端自身的Relay Log(即中继日志)文件(Mysql-relay-bin.xxx)的最末端,并将新的binlog文件名和位置记录到master-info文件中,以便下一次读取master端新binlog日志时能告诉Master服务器从新binlog日志的指定文件及位置开始读取新的binlog日志内容。

5)Slave服务器端的SQL线程会实时检测本地Relay Log 中IO线程新增的日志内容,然后及时把Relay LOG 文件中的内容解析成sql语句,并在自身Slave服务器上按解析SQL语句的位置顺序执行应用这样sql语句,并在relay-log.info中记录当前应用中继日志的文件名和位置点。

goodrain云平台整合mysql集群

1. 实现步骤

  1. 构建mysql镜像;
  2. 构建集群镜像,发布云市场;
  3. 利用云市场镜像构建mysql集群。
1. 构建mysql镜像(支持主从同步),目前github(https://github.com/goodrain-apps/percona-mysql)上已将代码更新, 设计到的修改主要有以下几点:
  1. master节点和slave节点的uuid不同。
    用同一mysql镜像创建mysql主从同步集群时,发现每台mysql服务的uuid都是相同的,是因为在数据初始化时将uuid写在了/var/lib/mysql/auto.cnf文件中,这时候需要在mysql启动生成配置文件后修改此文件的uuid,确保每个mysql服务的uuid不相同即可。

goodrain云平台 mysql主从同步应用创建

解决:克隆代码,修改配置文件

goodrain云平台 mysql主从同步应用创建

goodrain云平台 mysql主从同步应用创建

  1. master节点和slave节点的server_id不同。

如何确保每个mysql服务的server_id不同,k8s在创建容器时,会为每个容器创建创建一个主机名( 如:gr78648d-0),创建多个容器后面的数字会依次递增,所以可以利用这一特性生成不同的server_id(主机名数字部分 + 环境变量数字),然后在maser和slave使用不同的环境变量数字数字即可。

goodrain云平台 mysql主从同步应用创建

goodrain云平台 mysql主从同步应用创建

  1. 创建镜像,并将镜像推到dockerhub上

goodrain云平台 mysql主从同步应用创建

2. 构建集群镜像,发布云市场。
  1. 创建master应用

goodrain云平台 mysql主从同步应用创建

goodrain云平台 mysql主从同步应用创建

goodrain云平台 mysql主从同步应用创建

goodrain云平台 mysql主从同步应用创建

配置--》环境变量
goodrain云平台 mysql主从同步应用创建

goodrain云平台 mysql主从同步应用创建

  1. 创建slave应用

goodrain云平台 mysql主从同步应用创建

goodrain云平台 mysql主从同步应用创建

goodrain云平台 mysql主从同步应用创建

goodrain云平台 mysql主从同步应用创建

  1. 设置slave依赖master

goodrain云平台 mysql主从同步应用创建

  1. 创建两台slave

goodrain云平台 mysql主从同步应用创建

  1. 发布到云市场(实例为发送到团队中)

goodrain云平台 mysql主从同步应用创建

3. 利用云市场镜像构建mysql集群。
  1. 创建容器

goodrain云平台 mysql主从同步应用创建

  1. 进入master查看bin_log 详情

goodrain云平台 mysql主从同步应用创建

  1. 进入slave 设置连接
    goodrain云平台 mysql主从同步应用创建