• GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

利用ansible一键安装GreatSQL并完成MGR部署。

本次介绍如何利用ansible一键安装GreatSQL并完成MGR部署。

本文介绍的运行环境是CentOS 7.9:

[root@greatsql ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core) [root@greatsql ~]# uname -a
Linux greatsql 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

1. 安装ansbile

直接用yum安装ansible即可:

[root@greatsql ~]# yum install -y ansible

查看版本号,确认安装成功:

[root@greatsql ~]# ansible --version
ansible 2.9.21
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Apr 2 2020, 13:16:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

这就OK了。

2. 配置ansible

修改 /etc/ansible/hosts 文件,把要安装GreatSQL的服务器IP加进去,例如:

[greatsql_dbs:children]
greatsql_mgr_primary
greatsql_mgr_secondary [greatsql_mgr_primary]
172.16.16.10
[greatsql_mgr_secondary]
172.16.16.11
172.16.16.12

如果是在本机安装,直接填写本机的内网IP地址或回环地址(127.0.0.1)均可。

上面这个主机列表,分为两个组,一个是选择作为MGR PRIMARY节点的组 greatsql_mgr_primary,只有一个主机。

另一组选择作为SECONDARY节点 greatsql_mgr_secondary,有两个主机。

两个组也可以合并一起,成为一个新的组 greatsql_dbs。

3. 建立ssh信任

为了简单起见,直接建立ssh信任,方便ansible一键安装。

首先生成ssh key:

[root@greatsql ~]# ssh-keygen

使用缺省值,提示输入passphrase时,敲回车使用空的passphrase。

将ssh key复制到目标服务器上:

[root@greatsql ~]# ssh-copy-id root@172.16.16.10

按提示输入口令,完成后测试使用ssh登录不再提示输入口令。如果是在本机安装,那么ssh-copy-id也要对本机执行一遍。

或者手动将ssh key复制到远程主机上,写到 ~/.ssh/authorized_keys 文件中(注意不要折行、断行)。

4. 测试ansible

随意执行一个指令,测试ansibile可连接远程主机:

[root@greatsql ~]# ansible greatsql_dbs -a "uptime"
172.16.16.10 | CHANGED | rc=0 >>
15:29:46 up 250 days, 19:40, 2 users, load average: 0.04, 0.08, 0.07
172.16.16.11 | CHANGED | rc=0 >>
15:29:46 up 303 days, 17:57, 3 users, load average: 0.10, 0.13, 0.13
172.16.16.12 | CHANGED | rc=0 >>
15:29:47 up 194 days, 18:08, 2 users, load average: 0.07, 0.13, 0.10

这就表示可以正常运行了。

5. 使用ansible自动安装GreatSQL

5.1 修改 /etc/hosts 设置正确的主机名

修改几个服务器上的 /etc/hosts 文件,加入正确的主机名配置:

[root@greatsql ~]# cat /etc/hosts

172.16.16.10 mgr1
172.16.16.11 mgr2
172.16.16.12 mgr3

5.2 下载GreatSQL-ansible安装包并解压缩

打开GreatSQL-Ansible项目主页:https://gitee.com/GreatSQL/GreatSQL-Ansible

找到页面右侧“发行版”,进入,选择 " GreatSQL-8.0.23-14-Linux.x86_64-ansible-v0.1-alpha.tar.xz" 这个二进制包下载到服务器上:

[root@greatsql ~]# cd /opt/greatsql/; wget -c "https://gitee.com/xxx/GreatSQL-8.0.23-14-Linux.x86_64-ansible-v0.1-alpha.tar.xz"

[root@greatsql ~]# tar zxf GreatSQL-8.0.23-14-Linux.x86_64-ansible-v0.1-alpha.tar.xz

特别提醒:上述安装包是我的内部测试版本,不是正式发布的版本。

解压缩后,能看到除了 GreatSQL-8.0.23-14-Linux.x86_64.tar.xz 安装包之外,还有GreatSQL-ansible一键安装相关文件:

[root@greatsql ~]# ls -la
-rw-r--r-- 1 root root 327 Jul 13 11:26 check_mysql.yml
-rw-r--r-- 1 root root 15431496 Jul 13 12:00 GreatSQL-8.0.23-14-Linux.x86_64-ansible-v0.1-alpha.tar.xz
-rw-r--r-- 1 root root 15428212 Jul 7 12:43 GreatSQL-8.0.23-14-Linux.x86_64.tar.xz
-rw-r--r-- 1 root root 4393 Jul 7 15:33 greatsql.yml
-rw-r--r-- 1 root root 357 Jul 7 15:08 vars.yml

几个文件作用分别介绍下:

  • GreatSQL-8.0.23-14-Linux.x86_64.tar.xz,GreatSQL二进制安装包。
  • greatsql.yml,ansible一键安装脚本。
  • check_mysql.yml,MySQL进程、端口预检查脚本。
  • vars.yml,定义一些变量的脚本,里面的变量名有些需要修改以适应各自不同的安装环境。

5.3 利用ansible安装GreatSQL

开始执行前,需要确认 vars.yml 文件中下面这些相关参数是否要调整:

work_dir: /opt/greatsql
extract_dir: /usr/local
data_dir: /data/GreatSQL
file_name: GreatSQL-8.0.23-14-Linux.x86_64.tar.xz
base_dir: /usr/local/GreatSQL-8.0.23-14-Linux.x86_64
my_cnf: /etc/my.cnf
mysql_user: mysql
mysql_port: 3306
mgr_user: repl
mgr_user_pwd: repl4MGR
mgr_seeds: '172.16.16.7:33061,172.16.16.10:33061,172.16.16.16:33061'
wait_for_start: 60

下面是关于这些参数的解释:

执行下面的命令一键完成GreatSQL的安装、初始化,加入systemd服务、以及MGR初始化等所有工作:

[root@greatsql ~]# ansible-playbook ./greatsql.yml

5.4 检查运行过程输出

安装时会先行检查是否已有mysqld进程在运行,或者3306端口上是否已有其他服务。

如果是的话,则输出内容可能会是这样的:

PLAY [install GreatSQL] *****************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************
ok: [172.16.16.10]
ok: [172.16.16.11]
ok: [172.16.16.12] TASK [check mysql port] *****************************************************************************************************************************
changed: [172.16.16.10]
changed: [172.16.16.11]
changed: [172.16.16.12] TASK [check mysql processor] ************************************************************************************************************************
changed: [172.16.16.10]
changed: [172.16.16.11]
changed: [172.16.16.12] TASK [modify selinux config file] *******************************************************************************************************************
skipping: [172.16.16.10]
skipping: [172.16.16.11]
skipping: [172.16.16.12]

看到有 skipping 以及 skipped=N 字样。而如果是正常安装,则会输出类似下面的内容:

PLAY [install GreatSQL] *****************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************
ok: [172.16.16.10]
ok: [172.16.16.11]
ok: [172.16.16.12] TASK [check mysql port] *****************************************************************************************************************************
changed: [172.16.16.10]
changed: [172.16.16.11]
changed: [172.16.16.12]
...
PLAY RECAP ******************************************************************************************************************************************
172.16.16.10 : ok=26 changed=13 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.16.11 : ok=26 changed=13 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.16.12 : ok=26 changed=13 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

5.5 检查安装结果

有 ok 以及 skipped=0 字样,这就表示都被正常被执行了,此时应该已经安装成功了,检查一下:

[root@greatsql ~]# systemctl status greatsql
● greatsql.service - GreatSQL Server
Loaded: loaded (/usr/lib/systemd/system/greatsql.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2021-07-06 20:55:33 CST; 45s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 31320 ExecStartPre=/usr/local/GreatSQL-8.0.23-14-Linux.x86_64/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 31348 (mysqld)
Status: "Server is operational"
CGroup: /system.slice/greatsql.service
└─31348 /usr/local/GreatSQL-8.0.23-14-Linux.x86_64/bin/mysqld Jul 06 20:55:31 greatsql systemd[1]: Starting GreatSQL Server...
Jul 06 20:55:33 greatsql systemd[1]: Started GreatSQL Server.

检查MGR服务运行状态:

[root@GreatSQL][(none)]> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | ac24eab8-def4-11eb-a5e8-525400e802e2 | mgr3 | 3306 | ONLINE | SECONDARY | 8.0.23 |
| group_replication_applier | ac275d97-def4-11eb-9e49-525400fb993a | mgr2 | 3306 | ONLINE | SECONDARY | 8.0.23 |
| group_replication_applier | ac383458-def4-11eb-bf1a-5254002eb6d6 | mgr1 | 3306 | ONLINE | PRIMARY | 8.0.23 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+

以上ansible脚本已上传到gitee仓库中,详见:https://gitee.com/GreatSQL/GreatSQL-Ansible。

相应的测试版二进制包也可以在这里下载:https://gitee.com/GreatSQL/GreatSQL-Ansible/releases。

搞定,收工。

水平有限,也请各位读者大人帮忙看看ansible安装脚本里有哪些可以优化的地方,感谢。

Enjoy GreatSQL & Ansible

文章推荐:

GreatSQL MGR FAQ

https://mp.weixin.qq.com/s/J6wkUpGXw3YkyEUJXiZ9xA

万答#12,MGR整个集群挂掉后,如何才能自动选主,不用手动干预

https://mp.weixin.qq.com/s/07o1poO44zwQIvaJNKEoPA

『2021数据技术嘉年华·ON LINE』:《MySQL高可用架构演进及实践》

https://mp.weixin.qq.com/s/u7k99y6i7riq7ScYs7ySnA

一条sql语句慢在哪之抓包分析

https://mp.weixin.qq.com/s/AYibbzl860D90rOeyjB6IQ

万答#15,都有哪些情况可能导致MGR服务无法启动

https://mp.weixin.qq.com/s/inSGpd0Q_XIl2Mb-VsvNsA

技术分享 | 为什么MGR一致性模式不推荐AFTER

https://mp.weixin.qq.com/s/rNeq479RNsklY1BlfKOsYg

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee:

https://gitee.com/GreatSQL/GreatSQL

GitHub:

https://github.com/GreatSQL/GreatSQL

Bilibili:

https://space.bilibili.com/1363850082/video

微信&QQ群:

可搜索添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群

QQ群:533341697

微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 发布!

ansible一键安装GreatSQL并构建MGR集群的更多相关文章

  1. ​在Docker中部署GreatSQL并构建MGR集群

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 为了方面社区用户体验GreatSQL,我们同时还提供Docker镜像,本文详细介绍如何在Docker中部署GreatSQL ...

  2. 4. 利用MySQL Shell安装部署MGR集群 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 安装准备 2. 利用MySQL Shell构建MGR集群 3. MySQL Shell接管现存的MGR集群 4 ...

  3. 利用ansible进行自动化构建etcd集群

    上一篇进行了手动安装etcd集群,此篇利用自动化工具ansible为三个节点构建etcd集群 环境: master:192.168.101.14,node1:192.168.101.15,node2: ...

  4. MySQL Shell无法拉起MGR集群解决办法

    MySQL Shell无法拉起MGR集群解决办法 用MySQL Shell要重新拉起一个MGR集群时,可能会提示下面的错误信息: Dba.rebootClusterFromCompleteOutage ...

  5. 3. 安装部署MGR集群 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 安装准备 2. 初始化MySQL Server 3. 初始化MGR第一个节点 4. 继续设置另外两个节点 5. ...

  6. 利用MySQL Router构建读写分离MGR集群

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 部署MySQL Router 2. 启动mysqlrouter服务 3. 确认读写分离效果 4. 确认只读负载 ...

  7. 利用ansible来做kubernetes 1.10.3集群高可用的一键部署

    请读者务必保持环境一致 安装过程中需要下载所需系统包,请务必使所有节点连上互联网. 本次安装的集群节点信息 实验环境:VMware的虚拟机 IP地址 主机名 CPU 内存 192.168.77.133 ...

  8. 使用 Docker Compose 快速构建 TiDB 集群

    本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...

  9. 离线安装 Rancher2.2.4 HA 集群

    一.先决条件(所有主机执行) 1.1 基础设置 1.安装基础软件 yum install -y vim net-tools wget lrzsz 2.防火墙 sed -i 's/SELINUX=enf ...

随机推荐

  1. 219. Contains Duplicate II - LeetCode

    Question 219. Contains Duplicate II Solution 题目大意:数组中两个相同元素的坐标之差小于给定的k,返回true,否则返回false 思路:用一个map记录每 ...

  2. QTP——功能测试

    一.前言(课设目的及内容) QTP是quicktest Professional的简称,是一种自动测试工具.使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本.因此 ...

  3. 这篇 DNS ,写的挺水的。

    试想一个问题,我们人类可以有多少种识别自己的方式?可以通过身份证来识别,可以通过社保卡号来识别,也可以通过驾驶证来识别,尽管有多种识别方式,但在特定的环境下,某种识别方法会比其他方法更为适合.因特网上 ...

  4. Go微服务框架go-kratos实战02:proto 代码生成和编码实现步骤

    在上一篇 kratos quickstart 文章中,我们直接用 kratos new 命令生成了一个项目. 这一篇来看看 kratos API 的定义和使用. 一.kratos 中 API 简介 1 ...

  5. pandas:多层索引

    多层索引是指在行或者列轴上有两个及以上级别的索引,一般表示一个数据的几个分项. 1.创建多层索引 1.1通过分组产生多层索引 1.2由序列创建 1.3由元组创建 1.4可迭代对象的笛卡尔积 1.5将D ...

  6. CabloyJS一站式助力微信、企业微信、钉钉开发 - 微信篇

    前言 现在软件开发不仅要面对前端碎片化,还要面对后端碎片化.针对前端碎片化,CabloyJS提供了pc=mobile+pad的跨端自适应方案,参见:自适应布局:pc = mobile + pad 在这 ...

  7. Linux系统安装ActiveMQ

    下载安装包 https://activemq.apache.org/components/classic/download/ 上传至服务器并解压 [root@localhost activemq]# ...

  8. 使用FileSystemWatcher监听文件状态

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年7月2日. 一.FileSystemWatcher类型介绍 在.NET中使用 FileSystemWatcher 类型可以进行监视指定 ...

  9. 建立QT工程的规范型,以及重要性

    当前管理开发多个项目,故名Projects 下一级目录,具体项目,故示例Project,根据实际情况自行取名 再下一级目录,有三个子目录 bin:生成的可执行文件或者动态链接库,build:编译源码时 ...

  10. 搭建uipath

    我对windows也不太熟,也是第一次安装Uipath Orchestrator,希望有问题指出一起交流,可以留言,Uipath中文qq交流群:4656303241. 下载镜像 windows ser ...