前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >双节点配置MySQL主备同步与Y20持续部署流水线

双节点配置MySQL主备同步与Y20持续部署流水线

原创
作者头像
airxiechao
发布2022-03-21 11:36:24
9590
发布2022-03-21 11:36:24
举报
文章被收录于专栏:鲲擎流水线(y20.work)

MySQL主备是最简单的MySQL集群,和单机MySQL相比,只多了一个用于同步备份的MySQL。

1. 什么是MySQL主备

两个MySQL实例。第一个和普通单机MySQL一样,提供读取和写入数据。第二个MySQL只能从第一个MySQL中同步数据,不能写入其他数据,但是可以读取数据。

2. MySQL主备内部机制

主节点将数据操作历史写入 binary log,备节点从主节点获取从指定位置开始的 binary log,写入自己的 relay log,然后读取 relay log,执行相应的数据操作,实现同步。

3. MySQL主备的配置步骤

这里用两台腾讯云 Ubuntu 20.04 主机演示,已经分别安装好了MySQL(可以参考:使用Generic二进制包安装MySQL8)。确保主节点的3306端口在防火墙中放通,可以从备节点访问。

主机

IP

主节点

10.0.16.12

备节点

10.0.16.16

主节点步骤

MySQL 的 binary log 功能默认是开启的。

步骤【1】编辑配置文件 /etc/my.cnf,在 [mysqld] 后面添加 server-id

代码语言:javascript
复制
[mysqld]
server-id = 1

步骤【2】重启 MySQL

代码语言:javascript
复制
sudo systemctl restart mysql

步骤【3】登录 MySQL,添加同步用户

代码语言:javascript
复制
CREATE USER 'replicauser'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'replicauser'@'%';

步骤【4】查询当前 binary log 的位置

代码语言:javascript
复制
SHOW MASTER STATUS\G

可以看到输出,记录下 File 和 Position 的内容

代码语言:javascript
复制
mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: binlog.000002
         Position: 703
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

备节点步骤

同步默认是关闭的。

步骤【1】编辑配置文件 /etc/my.cnf,在 [mysqld] 后面添加 server-id

代码语言:javascript
复制
[mysqld]
server-id = 2

步骤【2】重启 MySQL

代码语言:javascript
复制
sudo systemctl restart mysql

步骤【3】获取主节点的 public key

代码语言:javascript
复制
mysql -uroot -p123456 -h10.0.16.12 --get-server-public-key

这一步很关键。MySQL8 中,备节点通过同步用户拉取主节点的 binary log,需要建立 SSL 连接。如果没有主节点的 public key,同步状态中时会看到连接错误

代码语言:javascript
复制
 Last_IO_Error: error connecting to master 'replicauser@10.0.16.12:3306' - retry-time: 60 retries: 1 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

步骤【4】登录 MySQL,设置从主节点同步

代码语言:javascript
复制
STOP SLAVE;

CHANGE MASTER TO MASTER_HOST='10.0.16.12',MASTER_USER='replicauser', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=703;

START SLAVE;

步骤【5】查看同步状态

代码语言:javascript
复制
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 10.0.16.12
                  Master_User: replicauser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000002
          Read_Master_Log_Pos: 703
               Relay_Log_File: VM-16-16-ubuntu-relay-bin.000002
                Relay_Log_Pos: 323
        Relay_Master_Log_File: binlog.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...

步骤【6】验证

主备配置完成以后,可以在主节点插入数据,看备节点是否会同步

4. 持续部署

利用持续部署系统,把以上步骤编排为流水线,在新节点上就可以自动完成配置。这里使用的持续部署系统是 Y20持续部署,流水线也编排好了 双节点配置MySQL主备同步。步骤和变量如下:

流水线步骤

主节点:

  1. 配置 /etc/my.cnf 的 server-id
  2. 创建同步用户
  3. 查询当前 binary log 的文件和位置
  4. 查询主节点 IP

备节点:

  1. 配置 /etc/my.cnf 的 server-id
  2. 获取主节点的 public key
  3. 开启从主节点同步

流水线输入变量

名称

说明

MSTER_AGENT

主节点

MASTER_ROOT_PASSWORD

主节点 MySQL 的 ROOT 密码

MASTER_SERVER_ID

主节点 server-id,默认 1

MSTER_REPLICA_USERNAME

主节点同步用户名,默认 replicauser

MASTER_REPLICA_PASSWORD

主节点同步用户密码,默认 123456

SLAVE_AGENT

备节点

SLAVE_ROOT_PASSWORD

备节点 MySQL 的 ROOT 密码

SLAVE_SERVER_ID

备节点 server-id,默认 2

流水线运行

接入自己的两个节点,运行流水线

Y20持续部署-通过流水线配置MySQL主备

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 什么是MySQL主备
  • 2. MySQL主备内部机制
  • 3. MySQL主备的配置步骤
    • 主节点步骤
      • 备节点步骤
      • 4. 持续部署
        • 流水线步骤
          • 流水线输入变量
            • 流水线运行
            相关产品与服务
            云数据库 SQL Server
            腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档