当前位置:   article > 正文

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

mysql innodb cluster

c372890a2c7b9c481bade3e10d6aa7d3.png

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

测试机器

  1. hostname ip
  2. vm001 10.66.221.61
  3. vm002 10.80.232.249
  4. vm003 10.66.221.103

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

3605e0a997a5aa366bb9ae5310567dd4.png

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

机器参数配置

  1. 我们现在需要事先下载MySQL、MySQL shell、MySQL router。可以直接下载最新版本。
  1. // 添加mysql下载apt源:
  2. wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
  3. sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb
  4. // 出现选择之后,直接选择OK
  5. sudo apt-get update
  6. // 下载mysql
  7. sudo apt-get install mysql-server
  8. // 中间有要求选择加密方式,两种均可
  9. // 下载mysql-shell
  10. sudo apt-get install mysql-shell
  11. // 下载mysql-router
  12. sudo apt-get install mysql-router

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

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

  1. // 关闭 sql_log_bin,防止后面创建集群的时候出现事务不一致的情况。
  2. set sql_log_bin=OFF;
  3. // 允许远程服务器(另外一台服务器)连接当前数据库实例
  4. use mysql;
  5. update user set host = '%' where user = 'root';
  6. flush privileges;
  7. 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

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

  1. MySQL JS> shell.connect('root@vm001')
  2. MySQL JS> let cluster = dba.createCluster('testcluster')
  3. MySQL JS> cluster.addInstance('root@vm002')
  4. 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 部署中遇到的错误

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/1006130
推荐阅读
相关标签
  

闽ICP备14008679号