环境介绍:
10.10.10.65 MySQL router 路由节点
10.10.10.205 MGR节点
10.10.10.206 MGR节点
10.10.10.207 MGR节点
三台服务器添加/etc/hosts 对IP的映射
10.10.10.205 testdb205
10.10.10.206 testdb206
10.10.10.207 testdb207
安装MySQL Shell
使用root用户进行安装,需要在所有节点执行
rpm -ivh MySQL-shell-8.0.18-1.el8.x86_64.rpm
通过MySQL Shell 连接MySQL节点
在各主机上分别用MySQL Shell 登录,并创建管理用户
# 在 10.10.10.205
mysqlsh root@"10.10.10.205:3306"
JS> dba.configureInstance('root@10.10.10.205:3306',{clusterAdmin:"'clusteruser'@'%'",clusterAdminPassword:"Jimstars"})
# 在 10.10.10.206
mysqlsh root@"10.10.10.206:3306"
JS> dba.configureInstance('root@10.10.10.206:3306',{clusterAdmin:"'clusteruser'@'%'",clusterAdminPassword:"Jimstars"})
# 在 10.10.10.207
mysqlsh root@"10.10.10.207:3306"
JS> dba.configureInstance('root@10.10.10.207:3306',{clusterAdmin:"'clusteruser'@'%'",clusterAdminPassword:"Jimstars"})
创建集群
在任一节点执行创建cluster操作(建议在主节点执行,这里的节点为10.10.10.82),集群内节点离线自动尝试加入次数,每五分钟加入一次。
JS > var cluster = dba.createCluster('mycluster',{autoRejoinTries:10,expelTimeout:5})
添加另外两个节点
只用在一个节点执行,可以直接在上面使用的节点执行,需要添加的节点地址可修改的部分:clusteruser@10.10.10.206:3306
JS > cluster.addInstance('clusteruser@10.10.10.206:3306');
Please select a recovery method [C]lone/[I]ncremental recovery/[A]bort (default Clone): C
A]bort (default Clone): C
JS > cluster.addInstance('clusteruser@10.10.10.207:3306');
Please select a recovery method [C]lone/[I]ncremental recovery/[A]bort (default Clone): C
A]bort (default Clone): C
添加完成后可以查看集群状态,执行下面操作
JS > cluster.status()
安装MySQL Router
rpm -ivh mysql-router-community-8.0.22-1.el7.x86_64.rpm
创建MySQL Router目录
mkdir -p /mysqlrouter
chown -R mysqlrouter:mysqlrouter /mysqlrouter
生成MySQL Router 配置文件
cd /mysqlrouter
mysqlrouter --bootstrap clusteruser@10.10.10.205:3306 --directory /mysqlrouter --user=mysqlrouter --conf-use-sockets
配置MySQL Router服务和自启动
vi /usr/lib/systemd/system/mysql-router.service
[Unit]
Description=MySQL Router Service
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysqlrouter
Group=mysqlrouter
Type=forking
#Remove pid File before start. Ignore the return value
ExecStartPre=-/usr/bin/rm /mysqlrouter/mysqlrouter.pid
#Service Start
ExecStart=/mysqlrouter/start.sh
#Service Stop
ExecStop=/mysqlrouter/stop.sh
#Service Restart On Failure
Restart=on-failure
#Service Restart Retries after 5s wait
RestartSec=5s
LimitNOFILE=65535
修改后重载配置生效
systemctl daemon-reload
使用root用户运行命令,使服务注册
systemctl enable mysql-router.service
使用root用户启动服务
systemctl start mysql-router.service