mysql集群搭建_MySQL InnoDB cluster 搭建教程

c372890a2c7b9c481bade3e10d6aa7d3.png

今天在测试机器上搭建MySQL InnoDB cluster,汇总一下,说明一下如何搭建一个MySQL InnoDB cluster。

测试机器

hostname ip
vm001    10.66.221.61
vm002    10.80.232.249
vm003    10.66.221.103

为了方便后面操作,我们讲上面的hostname与ip的映射写到每台服务器上的hosts文件中去。
并且将每台的服务器的默认hostname修改我们上面的hostname,对应文件为/etc/hostname,每一台服务器的/etc/hosts 与 /etc/hostname均需要修改

3605e0a997a5aa366bb9ae5310567dd4.png

配置好后需要重启服务器。

机器参数配置

  1. 我们现在需要事先下载MySQL、MySQL shell、MySQL router。可以直接下载最新版本。
// 添加mysql下载apt源:
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb
// 出现选择之后,直接选择OK
sudo apt-get update

// 下载mysql
sudo apt-get install mysql-server
// 中间有要求选择加密方式,两种均可

// 下载mysql-shell
sudo apt-get install mysql-shell

// 下载mysql-router
sudo apt-get install mysql-router

下载完成之后,这个时候mysql已经默认启动了。但是这个时候还需要再做一些配置工作。

下载安装好MySQL之后,因为这个时候mysql仅允许本地连接,所以这个时候我们要从本地连接数据库,修改对应的权限,以允许远程连接。

// 关闭 sql_log_bin,防止后面创建集群的时候出现事务不一致的情况。
set sql_log_bin=OFF;
// 允许远程服务器(另外一台服务器)连接当前数据库实例
use mysql;
update user set host = '%' where user = 'root';
flush privileges;
set sql_log_bin=ON;

612b1d8752899d9692677473d984b1cb.png

现在我们的配置就已经基本做好了。下一步使用MySQL shell。

MySQL shell 为了封装了大量的底层配置操作,让我们不用手动去配置Group Replication。所以这个时候我们使用MySQL shell来配置InnoDB cluster。

在vm001上或者vm002, vm003上执行以下命令:

shell> mysqlsh --log-level=DEBUG
// vm001 10.66.221.61
MySQL JS > dba.checkInstanceConfiguration('root@10.66.221.61')

c84e7fcdcccbd5c711ff819d45fe262d.png
检查vm001配置是否符合集群配置要求

此处由输出课之配置项由4项不符合集群基本配置需求。我们使用下面的API继续配置:

// vm001 10.66.221.61
MySQL JS> dba.configureInstance('root@10.66.221.61')

408b8a841f671b93b8b7f7dc1e223d24.png
配置vm000

我们发现出现缺少权限的问题,那我们在相应的数据库添加权限即可,因为此处我们使用的是root用户(root@10.66.221.61 指的是"数据库用户"@"ip或者hostname"),所以我们为MySQL 中的root用户添加权限。

shell> mysql -uroot -p
mysql> set sql_log_bin=OFF;
mysql> grant SYSTEM_VARIABLES_ADMIN, PERSIST_RO_VARIABLES_ADMIN on *.* to "root"@"%" with grant option;
mysql> flush privileges;
mysql> set sql_log_bin=ON;

之后我们再次执行

// vm001 10.66.221.61
dba.configureInstance('root@10.66.221.61')

c55541cbbc6de3fa23e0226965a7e05f.png
vm001配置成功

我们先在vm002, vm003上为数据库的root用户添加权限。

shell> mysql -uroot -p
mysql> set sql_log_bin=OFF;
mysql> grant SYSTEM_VARIABLES_ADMIN, PERSIST_RO_VARIABLES_ADMIN on *.* to "root"@"%" with grant option;
mysql> flush privileges;
mysql> set sql_log_bin=ON;

继续在vm001上的继续执行以下命令:

// vm002 10.80.232.249, 因为我们上面已经配置hosts文件,我们直接使用hostname
dba.checkInstanceConfiguration('root@vm002')
dba.configureInstance('root@vm002')
//vm003 10.66.221.103
dba.checkInstanceConfiguration('root@vm003')
dba.configureInstance('root@vm003')

配置好后,我们再次确认是否配置成功,从截图可看出我们已经配置成功了。

61988e8670380d621ad1d5118dc6b6a0.png

配置结束后,我们开始搭建集群。

MySQL JS> shell.connect('root@vm001')
MySQL JS> let cluster = dba.createCluster('testcluster')
MySQL JS> cluster.addInstance('root@vm002')
MySQL JS> cluster.addInstance('root@vm003')

cb6acf08cdfb57ed53049fd809ecadbd.png
添加vm003

因为我购买阿里云服务器3台没有在同一个内网内,导致vm002加入失败。不过这个影响不大,我们现在看一下集群状态:

74c7986443032962e58f18436b75a753.png

这样一个集群就基本搭建完了,大家可以在一台服务器中写入,另外一台服务器中去校验是否同步。

8754c6518dd7056e563b93ea4f7df667.png
vm001中插入

fc3ceb01febe7ce662f52ea9b45d6a80.png
vm003中验证

下面是两个参考的链接:
洪斌:从零搭建MySQL InnoDB Cluster

MySQL Group Replication 部署中遇到的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值