• 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. DOM标签操作与事件与jQuery查找标签

    目录 DOM之操作标签 创建标签对象 标签对象的属性 innerText与innerHTML 标签内部追加内容 属性操作 事件 常用事件 事件绑定 事件案例 jQuery简介 查找标签 基本选择器 属 ...

  2. 每天一个 HTTP 状态码 100

    100 Continue 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分:指示客户端应该继续当前请求:如果请求已经完成,客户端可以忽略该响应. 常用于服务器已经接受了请求头,客户端应该继续 ...

  3. 看Spring源码不得不会的@Enable模块驱动实现原理讲解

    这篇文章我想和你聊一聊 spring的@Enable模块驱动的实现原理. 在我们平时使用spring的过程中,如果想要加个定时任务的功能,那么就需要加注解@EnableScheduling,如果想使用 ...

  4. [CSP-S 2019 Day2]Emiya家今天的饭

    思路: 这种题目就考我们首先想到一个性质.这题其实容易想到:超限的菜最多只有一个,再加上这题有容斥那味,就枚举超限的菜然后dp就做完了. 推式子能力还是不行,要看题解. 式子还需要一个优化,就是废除冗 ...

  5. 我熬夜读完这份“高分宝典”,竟4面拿下字节跳动offer

    前言 怎样的契机? 实际上,目前毕业已经两年时间了,在大学时就已经开始关注字节跳动的发展.一开始,我是电气自动化专业的,大二清楚目标之后就转计算机了,大四进了一家小型的互联网公司实习,具体就不说哪家了 ...

  6. (十二).NET6 + React :升级!升级!还是***升级!!!+ IdentityServer4实战

    一.前言 此篇内容较多,我是一步一个脚印(坑),以至于写了好久,主要是这几部分:后台升级 .NET6  VS2022.前台升级Ant Design Pro V5 .前后台联调 IdentityServ ...

  7. DS18B20数字温度计 (三) 1-WIRE总线 ROM搜索算法和实际测试

    目录 DS18B20数字温度计 (一) 电气特性, 寄生供电模式和远距离接线 DS18B20数字温度计 (二) 测温, ROM和CRC算法 DS18B20数字温度计 (三) 1-WIRE总线 ROM搜 ...

  8. 一款超级好用的3Dmax模型插件 支持模型多格式批量转换

    对于模型设计师来说模型格式转换是最常见的事,但是每一款建模软件所支持的格式各有不同,模型互导操作太麻烦 为了解决这个难题,老子云平台研发了一款基于3dmax软件的模型格式转换插件,支持多种模型格式想换 ...

  9. WPF开发随笔收录-DataAnnotations实现数据校验(MVVM架构下)

    一.前言 在自己的项目中挺多地方需要涉及到数据验证的,初期的实现方式都是通过点击确定后再逐个验证数据是否符合要求,但这种方式会让后台代码变得很多很乱.于是就开始在网上需求好的解决方式,刚好看到了一个大 ...

  10. 好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

    前言(废话) 本来打算在公司偷偷摸摸给星球的用户写一篇编程喵整合 MongoDB 的文章,结果在通过 brew 安装 MongoDB 的时候竟然报错了.原因很简单,公司这台 Mac 上的 homebr ...