本次介绍如何利用ansible快速安装GreatSQL并构建包含仲裁节点的MGR集群。
1. 安装准备
1.1 安装ansible
首先利用dnf/yum安装ansible:
yum install -y ansible
1. 2 配置ansible
修改
/etc/ansible/hosts 文件,把要安装GreatSQL的服务器IP加进去,例如:
cat /etc/ansible/hosts [greatsql_dbs:children] greatsql_mgr_primary greatsql_mgr_secondary [greatsql_mgr_primary] 172.26.170.13 [greatsql_mgr_secondary] 172.26.170.14 172.26.170.15
上面这个主机列表,分为两个组,一个是选择作为MGR PRIMARY节点(或在多主模式中第一个需要初始化引导的节点)的组 greatsql_mgr_primary,只有一个主机。另一组选择作为SECONDARY节点 greatsql_mgr_secondary,有两个主机。两个组也可以合并一起,成为一个新的组 greatsql_dbs。
1.3 建立ssh信任
为了简单起见,直接建立ssh信任,方便ansible一键安装。
首先生成ssh key
$ ssh-keygen
使用缺省值,提示输入passphrase时,敲回车使用空的passphrase。
将ssh key复制到目标服务器上:
$ ssh-copy-id root@172.26.170.13
按提示输入口令,完成后测试使用ssh登录不再提示输入口令。如果是在本机安装,那么ssh-copy-id也要对本机执行一遍。或者手动将ssh key复制到远程主机上,写到 ~/.ssh/authorized_keys 文件中(注意不要折行、断行)。
1.4 测试ansible
随意执行一个指令,测试ansibile可连接远程主机:
a nsible greatsql_dbs -a "uptime"

1.5 下载GreatSQL-Ansible安装包
打开GreatSQL-Ansible项目主页:
找到页面右侧“发行版”,进入,选择 " GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64-minimal-ansible.tar.xz " 这个二进制包下载到服务器上:
$ cd /opt/greatsql/; wget -c " $ tar zxf GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64-minimal-ansible.tar.xz
解压缩后,能看到除了 GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64-minimal.tar.xz 安装包之外,还有GreatSQL-ansible一键安装相关文件:
# ls -l 总用量 45268 -rw-r--r-- 1 root root 333 8月 8 11:04 check_mysql.yml -rw-r--r-- 1 root root 46324036 8月 8 11:09 GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64-minimal.tar.xz -rwxr-xr-x 1 root root 8920 8月 8 12:41 greatsql.yml drwxr-xr-x 3 root root 103 8月 8 11:07 mysql-support-files -rw-r--r-- 1 root root 869 8月 8 11:04 README.en.md -rw-r--r-- 1 root root 795 8月 8 11:04 README.md -rw-r--r-- 1 root root 474 8月 19 11:50 vars.yml
几个文件作用分别介绍下:
GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64-minimal.tar.xz,GreatSQL二进制minimal安装包。
greatsql.yml,ansible一键安装脚本。
check_mysql.yml,MySQL进程、端口预检查脚本。
vars.yml,定义一些变量的脚本,里面的变量名有些需要修改以适应各自不同的安装环境。
2. 安装GreatSQL并构建MGR集群
2.1 配置Ansible安装剧本
在开始安装前,要先修改
vars.yml 这个Ansbile安装剧本中的几个配置选项:
cat vars.yml work_dir: /opt/greatsql/GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64-minimal-ansible extract_dir: /usr/local data_dir: /data/GreatSQL file_name: GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64-minimal.tar.xz base_dir: /usr/local/GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64-minimal my_cnf: /etc/my.cnf mysql_user: mysql mysql_port: 3306 mgr_user: repl mgr_user_pwd: repl4MGR mgr_seeds: '172.26.170.13:33061,172.26.170.14:33061,172.26.170.15:33061' mgr_single_mode: 1 wait_for_start: 60
提醒:
-
除了修改work_dir和mgr_seeds参数外,其他的都请谨慎修改,否则可能会提示找不到文件目录等错误。
-
如果是要采用多主模式,在
/etc/ansible/hosts 文件中,把第一个需要初始化引导的节点放在 greatsql_mgr_primary 组里,其他节点照常放在 greatsql_mgr_secondary 组里。
2.2 开始ansible安装
执行下面的命令一键完成GreatSQL的安装、初始化,加入systemd服务、以及MGR初始化等所有工作:
$ cd /opt/greatsql/GreatSQL-8.0.32-24-Linux-glibc2.17-x86_64-minimal-ansible $ ansible-playbook ./greatsql.yml
2.3 检查ansible执行过程输出
安装时会先行检查是否已有mysqld进程在运行,或者3306端口上是否已有其他服务,如果存在的话,跳过安装,会 看到有 skipping 以及 skipped=N 字样。而如果是正常安装,则会输出类似下面的内容:

有 ok 以及 skipped=0 字样,这就表示都被正常被执行了,此时应该已经安装成功了,检查一下:
检查MGR服务运行状态:
select * from performance_schema.replication_group_members;

参考:
%E9%97%AE%E9%A2%98%E5%8F%8D%E9%A6%88
