基于MySQL 8.0搭建InnoDB Cluster集群

基于MySQL 8.0搭建InnoDB Cluster集群

说明:

1)主机规划(IP+主机名):

172.17.0.35 node01

172.17.0.29 node02

172.17.0.56 node03

2)软件版本

操作系统版本:CentOS 7.6

MySQL Server版本:8.0.32

MySQL Server安装目录:/app/

MySQL Data目录:/data/mysqldb/data

MySQL Shell版本:8.0.32

MySQL Shell安装目录:/app/

MySQL Router版本:8.0.32

MySQL Router安装目录:/app/

MySQL Router配置目录:/data/myrouter/6446

一、下载对应的软件包

cd /app

wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.32-linux-glibc2.12-x86_64.tar

wget https://cdn.mysql.com/archives/mysql-router/mysql-router-8.0.32-linux-glibc2.12-x86_64.tar.xz

wget https://cdn.mysql.com/archives/mysql-shell/mysql-shell-8.0.32-linux-glibc2.12-x86-64bit.tar.gz

一、系统准备

以下 6 小节操作需要在三台主机执行。

1、centos7 关闭防火墙

systemctl stop firewalld.service 或者 systemctl stop firewalld

systemctl disable firewalld.service 或者 systemctl disable firewalld

systemctl status firewalld

2、关闭 selinux

getenforce

setenforce 0

vim /etc/selinux/config

SELINUX=disabled

3、绑定 /etc/hosts 解析(示例如下)

vim /etc/hosts

172.17.0.35 node1

172.17.0.29 node2

172.17.0.30 node3

4、安装 yum 包

yum -y groupinstall “DeveLopment tools”

yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make

5、清理系统自带 MariaDB 环境

CentOS 7 版本的系统默认自带安装了 MariaDB,需要先清理。

查询已安装的mariadb

rpm -qa |grep mariadb

yum list installed | grep mariadb

卸载 mariadb 包,文件名为上述命令查询出来的文件

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

yum -y remove mariadb-libs.x86_64

6、内核参数修改

[root@node1 ~]# cat>>/etc/sysctl.conf /etc/security/limits.conf /etc/pam.d/login /etc/profile 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 | 6eb9cce5-bb4a-11ee-afd3-fa163e8cdb46 | 172.17.0.35 | 3306 | ONLINE | PRIMARY | 8.0.32 | XCom | |

±--------------------------±-------------------------------------±------------±------------±-------------±------------±---------------±---------------------------+

4、其他节点加入组复制(其他节点执行)

Node2 和 Node3 执行

mysql -uroot -proot123 -P 3306 -S /data/mysqldb/socket/mysql.sock

先执行 reset master;

SET SQL_LOG_BIN=0;

CREATE USER repl@’%’ IDENTIFIED BY ‘repl’;

GRANT REPLICATION SLAVE ON . TO repl@’%’;

SET SQL_LOG_BIN=1;

CHANGE MASTER TO MASTER_USER=‘repl’, MASTER_PASSWORD=‘repl’ FOR CHANNEL ‘group_replication_recovery’;

START GROUP_REPLICATION;

5、启动完成之后在看 Group 信息

SELECT * FROM performance_schema.replication_group_members;

mysql> SELECT * FROM performance_schema.replication_group_members;

mysql> select * from performance_schema.replication_group_member_stats\G;

mysql> 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 | 67696d2d-bb4b-11ee-b0bd-fa163ecc23fa | 172.17.0.29 | 3306 | ONLINE | SECONDARY | 8.0.32 | XCom |

| group_replication_applier | 6eb9cce5-bb4a-11ee-afd3-fa163e8cdb46 | 172.17.0.35 | 3306 | ONLINE | PRIMARY | 8.0.32 | XCom |

| group_replication_applier | d6513ad2-bb4f-11ee-8690-fa163ea1efcc | 172.17.0.30 | 3306 | ONLINE | SECONDARY | 8.0.32 | XCom |

±--------------------------±-------------------------------------±------------±------------±-------------±------------±---------------±---------------------------+

3 rows in set (0.00 sec)

6、连接 Node1 主库创建 root@’%’ 用户

节点1

mysql -uroot -proot123 -P 3306 -S /data/mysqldb/socket/mysql.sock

create user root@’%’ identified by ‘root@123’;

grant all privileges on . to root@’%’ with grant option;

flush privileges;

===================================

部署多实例需要添加如下两个参数(否则端口冲突)

mysqlx_port

mysqlx_socket

节点加入集群报错时,节点需要设置如下参数(使用默认密码插件时需要执行)

set global group_replication_recovery_get_public_key=on;

===========================

四、安装 MySQL Shell

初始化实例及创建纳管库,库名 mysql_innodb_cluster_metadata,只需要在一台中间件服务器安装即可,这里选择 Node3。

1、root 用户安装 MySQL Shell

rpm -ivh mysql-shell-8.0.32-1.el7.x86_64.rpm