赞
踩
今天在测试机器上搭建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均需要修改
配置好后需要重启服务器。
- // 添加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;
现在我们的配置就已经基本做好了。下一步使用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')
此处由输出课之配置项由4项不符合集群基本配置需求。我们使用下面的API继续配置:
// vm001 10.66.221.61
MySQL JS> dba.configureInstance('root@10.66.221.61')
我们发现出现缺少权限的问题,那我们在相应的数据库添加权限即可,因为此处我们使用的是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')
我们先在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')
配置好后,我们再次确认是否配置成功,从截图可看出我们已经配置成功了。
配置结束后,我们开始搭建集群。
- 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')
因为我购买阿里云服务器3台没有在同一个内网内,导致vm002加入失败。不过这个影响不大,我们现在看一下集群状态:
这样一个集群就基本搭建完了,大家可以在一台服务器中写入,另外一台服务器中去校验是否同步。
下面是两个参考的链接:
洪斌:从零搭建MySQL InnoDB Cluster
MySQL Group Replication 部署中遇到的错误
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。