基于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