借助dbops实现GreatSQL MGR架构搭建

借助dbops实现GreatSQL MGR架构搭建

dbops助力GreatSQL MGR架构安装部署

在上一篇文章中讲述了利用dbops部署GreatSQL主从架构的方法,本篇将会介绍运用dbops来部署MGR架构的过程。

环境介绍

本次进行部署所采用的操作系统是麒麟 V10 系统,下面是该系统的具体信息:

$ cat /etc/*release
Kylin Linux Advanced Server release V10 (Sword)
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Sword)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)"
ANSI_COLOR="0;31"
Kylin Linux Advanced Server release V10 (Sword)
$ uname -a
Linux gip 4.19.90-24.4.v2101.ky10.x86_64 #1 SMP Mon May 24 12:14:55 CST 2021 x86_64 x86_64 x86_64 GNU/Linux

其中,环境的 Glibc 版本信息通过以下命令查看:

$ ldd --version
ldd (GNU libc) 2.28

所使用的 dbops 版本为:

dbops.1.10.20250329 release

在本文撰写之时,芬达老师对 dbops 进行了更新,所以本次采用新版本来进行安装部署。

所使用的 GreatSQL 版本为:

GreatSQL-8.0.32-27 minimal

下载 dbops

从 gitee 上下载最新版本的 dbops,其下载地址为:https://gitee.com/fanderchan/dbops/releases

执行以下命令进行下载:

$ cd /usr/local
$ wget https://gitee.com/fanderchan/dbops/releases/download/dbops.1.10.20250329/dbops.1.10.20250329-Linux-x86_64.tar.gz

下载完毕后,对 dbops 进行解压操作:

$ tar -xvzf dbops.1.10.20250329-Linux-x86_64.tar.gz

安装 Ansible

dbops 自带绿色版本的 Ansible,由于 dbops 的核心依赖于 Ansible,执行以下命令进行注册:

$ cd dbops/portable-ansible-v0.5.0-py3
$ sh setup_portable_ansible.sh
$ source ~/.bashrc

最后检查 Ansible 是否安装成功,执行命令:

$ ansible --version
ansible 2.10.5

自动下载 GreatSQL 安装包

dbops 默认会自动下载 GreatSQL 安装包,所以本次采用自动下载的方式进行。

在公共配置文件common_config.yml中可以看到,只要选定了 GreatSQL 版本,就会默认自动下载安装包。

# 此处默认设置为 true 时会自动下载安装包
fcs_auto_download_mysql: true     # 仅支持 mysql。percona、greatsql 请自行下载

不过受限于 dbops,只能下载 GreatSQL-8.0.32-27-Linux-glibc2.17-x86_64-minimal* 这个 Linux Generic 通用包。

minimal 版本是对二进制文件执行 strip 操作,所以文件尺寸较小,但其功能与正常版本是一样的

编辑配置清单

执行以下命令来编辑配置清单:

$ vim /usr/local/dbops/mysql_ansible/inventory/hosts.ini 

将内容修改为如下形式:

[dbops_mysql]
192.168.139.37 ansible_user=root ansible_ssh_pass="'****'"
192.168.139.38 ansible_user=root ansible_ssh_pass="'****'"
192.168.139.39 ansible_user=root ansible_ssh_pass="'****'"
# IP地址 ansible_user=root ansible_ssh_pass="'你的密码'"
[all:vars]
#ansible_python_interpreter=/usr/bin/python3

请注意!密码需要用单引号包围,修改时不要遗漏。

验证服务器的连通性,执行以下命令:

$ cd /usr/local/dbops/mysql_ansible/playbooks
$ ansible all -m ping
192.168.139.37 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

配置公共参数文件

执行以下命令来编辑公共参数文件:

$ vim /usr/local/dbops/mysql_ansible/playbooks/common_config.yml

修改数据库版本以及端口:

## 在大多数情况下,只需调整这两个参数即可。
mysql_version: "8.0.32-27"
mysql_port: 3306

将数据库类型修改为 “greatsql”:

## DB TYPE,支持 mysql、percona、greatsql
db_type: greatsql

由于采用自动下载安装包,此处默认设置为 true,无需进行修改:

fcs_auto_download_mysql: true     # 仅支持 mysql。percona、greatsql 请自行下载

如果有需要修改的地方,比如 my.cnf 配置文件、数据库初始密码、初始用户等,都可以在 common_config.yml 公共参数文件中进行修改。

修改 Playbook 参数

执行以下命令来修改 Playbook 参数:

$ vim /usr/local/dbops/mysql_ansible/playbooks/vars/var_master_slave.yml

修改主从库的 IP 以及主从复制账号的可信网段:

# vars 的加载顺序:common_config -> 此文件
mysql_binlog_format: row
mysql_mgr_port: "{{ mysql_port * 10 + 1 }}"
sub_nets: 192.168.139.%
mysql_mgr_hosts:
  - '192.168.139.37'
  - '192.168.139.38'
  - '192.168.139.39'

# 如果你安装的是 MySQL 而非 GreatSQL,以下参数将不起作用。
greatsql_vip: 192.168.139.250
greatsql_net_work_interface: "ens3"
greatsql_netmask: "255.255.255.255"
greatsql_group_replication_arbitrator: true
greatsql_group_replication_arbitrator_hosts:
  - '192.168.139.39'
  • mysql_binlog_format:由于是 MGR 架构,需要 binlog 为 row 格式,所以此处不能进行修改,目的是覆盖common_config.yml文件中的 binlog 格式。
  • mysql_mgr_port:mgr 的通讯端口,采用原端口乘以 10 再加 1 的方式进行设置。
  • sub_nets:可信网段、可信域、可信 IP。
  • mysql_mgr_hosts:MGR 实例的 IP 地址列表,部署完成后会将字符串列表中的第一个 IP 设置为 Primary 节点。
  • greatsql_vip:GreatSQL HA 绑定的 VIP 地址,仅在部署 GreatSQL HA 时才会生效。
  • greatsql_net_work_interface:GreatSQL HA 绑定的 VIP 地址所在的网卡号,仅在部署 GreatSQL HA 时才会生效
  • greatsql_netmask:GreatSQL HA 绑定的 VIP 地址使用的 netmask,一般使用"32"即可,无需进行修改,仅在部署 GreatSQL HA 时才会生效
  • greatsql_group_replication_arbitrator:是否开启仲裁节点功能
  • greatsql_group_replication_arbitrator_hosts:GreatSQL 的仲裁节点列表。与 greatsql_group_replication_arbitrator 配合使用,当 greatsql_group_replication_arbitrator 为 true 时此参数才会生效。

dbops 支持直接部署 GreatSQL 的 VIP 和仲裁节点功能特性,这两个功能特性可参考 GreatSQL 用户手册:

执行 GreatSQL 安装

执行安装 GreatSQL MGR 架构的操作,执行以下命令:

$ cd /usr/local/dbops/mysql_ansible/playbooks
$ ansible-playbook mgr.yml

等待一段时间后会打印出如下信息:

        "msg": [
            "Hosts to be affected by Deploy MGR cluster using binary installation: 172.17.140.136, 172.17.138.215, 172.17.139.159",
            "DB type: mysql",
            "MySQL port: 3306",
            "MySQL version: 8.0.32-27",
            "Server specs: auto",
            "Roles to be executed: ../roles/pre_check_and_set, ../roles/mysql_server, ../roles/make_mgr",
            "mycnf_dir: /database/mysql/etc/3306",
            "datadir: /database/mysql/data/3306",
            "tmpdir: /database/mysql/tmp/3306",
            "binlog_dir: /database/mysql/log/binlog/3306",
            "relaylog_dir: /database/mysql/log/relaylog/3306",
            "redolog_dir: /database/mysql/log/redolog/3306",
            "socket_dir: /database/mysql/data/3306",
            "mysqlx_socket_dir: /database/mysql/data/3306"
        ]

看到上述信息后,在安装时请确认无误,然后输入 “confirm” 来确认安装。如果想要进行修改,可以按 Ctrl+C 退出安装,之后修改common_config.yml文件,稍等片刻,GreatSQL 就部署完成了。

[Prompt user for confirmation]
This will perform Deploy MGR cluster using binary installation on the displayed hosts. Please type 'confirm' to continue or press Ctrl+C to cancel.:

部署 MGR 架构可能会花费较长时间。

登入 GreatSQL 检查

执行以下命令登录 GreatSQL 并检查版本:

$ mysql -uadmin -h127.0.0.1 -P3306 -pDbops@8888 -e "select @@version"
+-----------+
| @@version |
+-----------+
| 8.0.32-27 |
+-----------+

如果没有修改安装密码,初始密码为Dbops@8888,用户在安装完成后需要自行修改默认密码。

也可以使用快速登录方式,通过以下命令:

$ su mysql
$ db3306
(gip:3306)admin@localhost-14:42:33 [(none)]>SELECT @@VERSION;
+-----------+
| @@VERSION |
+-----------+
| 8.0.32-27 |
+-----------+
1 row in set (0.00 sec)

检查 MGR 的情况:

PRIMARY 节点

(gip:3306)admin@localhost-14:41:39 [(none)]>SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 62855999-24cc-11f0-ae0a-00163e859dfb | 172.17.139.159 |        3306 | ONLINE       | ARBITRATOR  | 8.0.32         | XCom                       |
| group_replication_applier | 62987ed2-24cc-11f0-aa6d-00163e554220 | 172.17.138.215 |        3306 | ONLINE       | SECONDARY   | 8.0.32         | XCom                       |
| group_replication_applier | 62ab3b6d-24cc-11f0-a65a-00163e85a203 | 172.17.140.136 |        3306 | ONLINE       | PRIMARY     | 8.0.32         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

SECONDARY 节点

(gip:3306)admin@localhost-15:41:50 [(none)]>SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 62855999-24cc-11f0-ae0a-00163e859dfb | 172.17.139.159 |        3306 | ONLINE       | ARBITRATOR  | 8.0.32         | XCom                       |
| group_replication_applier | 62987ed2-24cc-11f0-aa6d-00163e554220 | 172.17.138.215 |        3306 | ONLINE       | SECONDARY   | 8.0.32         | XCom                       |
| group_replication_applier | 62ab3b6d-24cc-11f0-a65a-00163e85a203 | 172.17.140.136 |        3306 | ONLINE       | PRIMARY     | 8.0.32         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.01 sec)

ARBITRATOR 节点

(gip:3306)admin@localhost-15:40:26 [(none)]>SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 62855999-24cc-11f0-ae0a-00163e859dfb | 172.17.139.159 |        3306 | ONLINE       | ARBITRATOR  | 8.0.32         | XCom                       |
| group_replication_applier | 62987ed2-24cc-11f0-aa6d-00163e554220 | 172.17.138.215 |        3306 | ONLINE       | SECONDARY   | 8.0.32         | XCom                       |
| group_replication_applier | 62ab3b6d-24cc-11f0-a65a-00163e85a203 | 172.17.140.136 |        3306 | ONLINE       | PRIMARY     | 8.0.32         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.05 sec)

检查 MGR 动态读写 VIP 功能

登入 PRIMARY 节点进行查看:

```
(g

版权声明:程序员胖胖胖虎阿 发表于 2025年6月21日 下午5:14。
转载请注明:

借助dbops实现GreatSQL MGR架构搭建

| 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...