听党话跟党走 發表於 2025-6-11 09:46:00

dbops 助力 GreatSQL MGR架构安装部署

<h1 id="dbops-助力-greatsql-mgr架构安装部署">dbops 助力 GreatSQL MGR架构安装部署</h1>
<p><img src="https://img2024.cnblogs.com/other/2630741/202506/2630741-20250611094622978-42251398.png"></p>
<p>在上一篇中讲到了如何使用 dbops 部署 GreatSQL 主从架构,这篇中将介绍如何使用 dbops 部署MGR架构。</p>
<ul>
<li>dbops 助力 GreatSQL 单机架构安装部署</li>
<li>dbops 助力 GreatSQL 主从架构安装部署</li>
</ul>
<blockquote>
<p>部署 GreatSQL MGR 架构,还可启用 GreatSQL 的动态 VIP 功能,以及仲裁节点功能。</p>
</blockquote>
<h2 id="环境介绍">环境介绍</h2>
<p>本次部署所使用的操作系统为麒麟 V10 系统,以下是系统的详细信息:</p>
<pre><code class="language-shell">$ 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
</code></pre>
<ul>
<li>环境 Glibc 版本信息为</li>
</ul>
<pre><code class="language-bash">$ ldd --version
ldd (GNU libc) 2.28
</code></pre>
<ul>
<li>使用的 dbops 版本为</li>
</ul>
<pre><code class="language-bash">dbops.1.10.20250329 release
</code></pre>
<blockquote>
<p>在此文章撰写时,芬达老师对 dbops 进行了更新,所以此篇采用新版本安装部署。</p>
</blockquote>
<ul>
<li>使用的 GreatSQL 版本为</li>
</ul>
<pre><code class="language-bash">GreatSQL-8.0.32-27 minimal
</code></pre>
<ul>
<li>架构如下:</li>
</ul>
<p><img src="https://img2024.cnblogs.com/other/2630741/202506/2630741-20250611094623801-435764888.png"></p>
<h2 id="下载-dbops">下载 dbops</h2>
<p>从 gitee 下载最新版本 dbops</p>
<ul>
<li>dbops:https://gitee.com/fanderchan/dbops/releases</li>
</ul>
<pre><code class="language-bash">$ cd /usr/local
$ wget https://gitee.com/fanderchan/dbops/releases/download/dbops.1.10.20250329/dbops.1.10.20250329-Linux-x86_64.tar.gz
</code></pre>
<p>下载完成后,对 dbops 进行解压:</p>
<pre><code class="language-bash">$ tar -xvzf dbops.1.10.20250329-Linux-x86_64.tar.gz
</code></pre>
<h2 id="安装-ansible"><strong>安装 Ansible</strong></h2>
<p>dbops 自带绿色版 Ansible,dbops 的核心依赖于 Ansible,执行此命令用于注册:</p>
<pre><code class="language-bash">$ cd dbops/portable-ansible-v0.5.0-py3
$ sh setup_portable_ansible.sh
$ source ~/.bashrc
</code></pre>
<p>最后检查下 Ansible 是否安装成功:</p>
<pre><code class="language-bash">$ ansible --version
ansible 2.10.5
</code></pre>
<h2 id="自动下载-greatsql-安装包">自动下载 GreatSQL 安装包</h2>
<p>dbops 默认会自动下载 GreatSQL 安装包,所以本篇采用自动下载方式。</p>
<p>在公共配置文件<code>common_config.yml</code>中可以看到,只要选择了 GreatSQL 版本后,默认自动下载安装包。</p>
<pre><code class="language-bash"># 此处默认设置 true 会自动下载安装包
fcs_auto_download_mysql: true   # only support mysql. percona, greatsql pls download yourself first.
</code></pre>
<p>但由于 dbops 限制,只能下载 GreatSQL-8.0.32-27-Linux-glibc2.17-x86_64-minimal* 这个 Linux Generic 通用包。</p>
<blockquote>
<p>minimal版本是对二进制文件执行strip操作,所以文件尺寸较小,功能上与正常版本一样</p>
</blockquote>
<h2 id="编辑配置清单">编辑配置清单</h2>
<pre><code class="language-bash">$ vim /usr/local/dbops/mysql_ansible/inventory/hosts.ini
</code></pre>
<p>修改内容如下:</p>
<pre><code class="language-bash">
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="'你的密码'"

#ansible_python_interpreter=/usr/bin/python3
</code></pre>
<blockquote>
<p>注意!密码需要单引号包围,修改时不要漏掉。</p>
</blockquote>
<p>验证服务器的连通性:</p>
<pre><code class="language-bash">$ cd /usr/local/dbops/mysql_ansible/playbooks
$ ansible all -m ping
192.168.139.37 | SUCCESS =&gt; {
    "ansible_facts": {
      "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
</code></pre>
<h3 id="配置公共参数文件">配置公共参数文件</h3>
<pre><code class="language-bash">$ vim /usr/local/dbops/mysql_ansible/playbooks/common_config.yml
</code></pre>
<p>修改数据库版本以及端口:</p>
<pre><code class="language-bash">## In most cases, just adjust these two parameters.
mysql_version: "8.0.32-27"
mysql_port: 3306
</code></pre>
<p>修改数据库类型为 “greatsql”:</p>
<pre><code class="language-bash">## DB TYPE,suport mysql,percona,greatsql
db_type: greatsql
</code></pre>
<p>采用自动下载安装包,此处默认为 true ,不做修改即可</p>
<pre><code class="language-bash">fcs_auto_download_mysql: true   # only support mysql. percona, greatsql pls download yourself first.
</code></pre>
<blockquote>
<p>若有需要修改的,例如 my.cnf 配置文件,数据库初始密码、初始用户,都可在 common_config.yml 公共参数文件中修改。</p>
</blockquote>
<h2 id="修改-playbook-参数">修改 Playbook 参数</h2>
<pre><code class="language-bash">$ vim /usr/local/dbops/mysql_ansible/playbooks/vars/var_master_slave.yml
</code></pre>
<p>修改主从库IP以及主从复制账号可信网段:</p>
<pre><code class="language-ini"># vars loading order: common_config -&gt; this file
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'

# If you have installed MySQL instead of GreatSQL, the following parameters will have no effect.
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'
</code></pre>
<ul>
<li>mysql_binlog_format:因为 MGR 架构,需要 binlog 为 row 格式,所以这里不能修改,为的是覆盖<code>common_config.yml</code>文件中的 binlog 格式。</li>
<li>mysql_mgr_port:mgr 的通讯端口,采用原本端口 * 10 + 1 设置。</li>
<li>sub_nets:可信网段、可信域、可信IP。</li>
<li>mysql_mgr_hosts:MGR 实例的 IP 地址列表,部署后会按照字符串列表第一个IP设置为 Primary 节点。</li>
<li>greatsql_vip:GreatSQL HA绑定的VIP地址,只有部署GreatSQL HA时才会生效。</li>
<li>greatsql_net_work_interface:GreatSQL HA绑定的VIP地址所在的网卡号,只有部署GreatSQL HA时才会生效</li>
<li>greatsql_netmask:GreatSQL HA绑定的VIP地址使用的netmask,一般使用"32"即可,无需修改,只有部署GreatSQL HA时才会生效</li>
<li>greatsql_group_replication_arbitrator:是否开启仲裁节点功能</li>
<li>greatsql_group_replication_arbitrator_hosts:GreatSQL 的仲裁节点列表。和 <code>greatsql_group_replication_arbitrator</code> 搭配使用,<code>greatsql_group_replication_arbitrator</code> 为 true 此参数才生效。</li>
</ul>
<blockquote>
<p>dbops 支持直接部署 GreatSQL 的 VIP 和仲裁节点功能特性,两个功能特性可详见 GreatSQL 用户手册:</p>
<ul>
<li>MGR 内置动态VIP:https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-vip.html</li>
<li>MGR 仲裁节点:https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-arbitrator.html</li>
</ul>
</blockquote>
<h2 id="执行-greatsql-安装">执行 GreatSQL 安装</h2>
<p>执行安装 GreatSQL MGR 架构</p>
<pre><code class="language-bash">$ cd /usr/local/dbops/mysql_ansible/playbooks
$ ansible-playbook mgr.yml
</code></pre>
<p>等待一会儿会打印如下信息</p>
<pre><code class="language-bash">    "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"
    ]
</code></pre>
<p>可以看到上面的信息,安装时请确认无误后,输入 “confirm” 确认安装。如果想修改,可按 Ctrl+C 退出安装,再修改文件 <code>common_config.yml</code>稍等片刻,GreatSQL 就部署完成。</p>
<pre><code class="language-bash">
This will perform Deploy MGR cluster using binary installation on the displayed hosts. Please type 'confirm' to continue or press Ctrl+C to cancel.:
</code></pre>
<p>部署 MGR 架构可能会等待久一些</p>
<h2 id="登入-greatsql-检查">登入 GreatSQL 检查</h2>
<pre><code class="language-bash">$ mysql -uadmin -h127.0.0.1 -P3306 -pDbops@8888 -e "select @@version"
+-----------+
| @@version |
+-----------+
| 8.0.32-27 |
+-----------+
</code></pre>
<blockquote>
<p>若没有修改安装密码,初始为<code>Dbops@8888</code>,请用户在安装后自行修改默认密码。</p>
</blockquote>
<p>也可以使用快速登录,db+设置的端口号:</p>
<pre><code class="language-MYSQL">$ su mysql
$ db3306
(gip:3306)admin@localhost-14:42:33 [(none)]&gt;SELECT @@VERSION;
+-----------+
| @@VERSION |
+-----------+
| 8.0.32-27 |
+-----------+
1 row in set (0.00 sec)
</code></pre>
<p>检查下 MGR 情况:</p>
<pre><code class="language-mysql">-- PRIMARY 节点
(gip:3306)admin@localhost-14:41:39 [(none)]&gt;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)]&gt;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)]&gt;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)
</code></pre>
<h2 id="检查-mgr-动态读写-vip-功能">检查 MGR 动态读写 VIP 功能</h2>
<p>登入 PRIMARY 节点查看</p>
<pre><code class="language-bash">(gip:3306)admin@localhost-15:43:38 [(none)]&gt;SHOW GLOBAL VARIABLES LIKE "%vip%";
+---------------------------------------+------------------------------------------------------+
| Variable_name                         | Value                                                |
+---------------------------------------+------------------------------------------------------+
| greatdb_ha_enable_mgr_vip             | ON                                                   |
| greatdb_ha_force_change_mgr_vip       | OFF                                                |
| greatdb_ha_mgr_read_vip_floating_type | TO_PRIMARY                                           |
| greatdb_ha_mgr_read_vip_ips         |                                                      |
| greatdb_ha_mgr_vip_broad            | 255.255.255.255                                    |
| greatdb_ha_mgr_vip_ip               | 172.17.140.250                                       |
| greatdb_ha_mgr_vip_mask               | 255.255.255.255                                    |
| greatdb_ha_mgr_vip_nic                | ens3                                                 |
| greatdb_ha_vip_tope                   | 62ab3b6d-24cc-11f0-a65a-00163e85a203::172.17.140.250 |
+---------------------------------------+------------------------------------------------------+
9 rows in set
</code></pre>
<p>使用 VIP 链接,查看是否链接 PRIMARY 节点</p>
<pre><code class="language-bash">$ mysql -urepl -h172.17.140.250 -P3306 -pRepl@8888

greatsql&gt; SELECT uuid();
+--------------------------------------+
| uuid()                               |
+--------------------------------------+
| 8366c691-24cf-11f0-aa2b-00163e85a203 |
+--------------------------------------+
1 row in set (0.00 sec)
</code></pre>
<p>至此,麒麟系统下 GreatSQL MGR架构安装已顺利完成:D</p>
<hr>
<p>Enjoy GreatSQL 😃</p>
<h2 id="关于-greatsql">关于 GreatSQL</h2>
<p>GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。</p>
<p>相关链接:   GreatSQL社区        Gitee        GitHub        Bilibili</p>
<h2 id="greatsql社区">GreatSQL社区:</h2>
<blockquote>
<p>社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html</p>
</blockquote>
<p><img src="https://img2024.cnblogs.com/other/2630741/202506/2630741-20250611094624079-191321093.png"></p>
<h2 id="技术交流群">技术交流群:</h2>
<blockquote>
<p>微信:扫码添加<code>GreatSQL社区助手</code>微信好友,发送验证信息<code>加群</code>。</p>
</blockquote>
<p><img src="https://img2024.cnblogs.com/other/2630741/202506/2630741-20250611094624326-330657794.png"></p><br><br>
来源:https://www.cnblogs.com/greatsql/p/18923293
頁: [1]
查看完整版本: dbops 助力 GreatSQL MGR架构安装部署