目录
2、分别在3台服务器运行mysqlshell,以141服务器为例
一、修改hosts文件
个人喜欢修改后方便访问,也可不做修改,本次使用3台虚拟机,ip分别为192.168.1.141~143,3台虚拟机都进行修改。
[root@mysql1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.141 mysql1
192.168.1.142 mysql2
192.168.1.143 mysql3
二、卸载系统自带mariadb数据库服务器
3台都需要卸载。
[root@mysql1 ~]# yum -y remove mariadb-libs.x86_64
三、安装mysql数据库
我是通过下载MySQL8.0得tar包后进行安装的,下载地址:https://dev.mysql.com/downloads/mysql/
请自行确认自己的系统
解压tar包进行安装即可
为了方便我直接安装了所有包
[root@mysql1 mysql8.0]# yum -y install ./mysql-community-*
注意:mysql8.0部分配置须在首次启动数据库前进行修改配置文件,例如忽略表名大小写lower_case_table_names = 1
本次添加该选项,构架集群的服务器配置文件应该相同
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
lower_case_table_names = 1
四、初始化数据库
1、启动数据库,设为开机自启
[root@mysql1 mysql8.0]# systemctl start mysqld
[root@mysql1 mysql8.0]# systemctl enable mysqld
2、修改初始密码
[root@mysql1 mysql8.0]# grep pass /var/log/mysqld.log
2021-07-13T07:50:38.858178Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: XSXaaY5w/Eg2
[root@mysql1 mysql8.0]# mysql -uroot -pXSXaaY5w/Eg2
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.25
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> alter user root@'localhost' identified by 'Testpasswd1.';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
3、创建远程管理用户并授权
mysql> create user root@'%' identified by 'Testpasswd1.';
mysql> grant all privileges on *.* to root@'%' with grant option;
五、使用mysqlshell配置集群
1、安装mysqlshell
mysqlshell下载地址:https://dev.mysql.com/downloads/shell/
2、分别在3台服务器运行mysqlshell,以141服务器为例
[root@mysql1 opt]# mysqlsh --uri root@mysql1:3306
Please provide the password for 'root@mysql1:3306': ************
Save password for 'root@mysql1:3306'? [Y]es/[N]o/Ne[v]er (default No): y
MySQL mysql2:3306 ssl JS > dba.configureLocalInstance()
退出myslsh为ctrl+z
3、重启mysql服务
[root@mysql1 opt]# systemctl restart mysqld
4、检查是否就绪
dba.checkInstanceConfiguration('root@mysql1:3306');
5、创建集群
注意:只需要在一台创建即可,本次使用mysql1(192.168.1.141)
MySQL mysql1:3306 ssl JS > var cluster = dba.createCluster('TestCluster');
验证是否成功
6、将其他两台mysql添加到集群中
使用cluster.status()查看状态,为online即添加成功。
7、关机、退出mysqlsh或其他服务器获取集群信息
MySQL mysql3:3306 ssl JS > var cluster = dba.getCluster()
MySQL mysql3:3306 ssl JS > cluster.status();
至此处集群搭建成功
8、修改为多主模式
集群搭建后默认为单主模式(一主多从),此时只有主数据库可写入数据,其他为只读状态。
修改为多住模式:
MySQL mysql1:3306 ssl JS > cluster.switchToMultiPrimaryMode()
已修改为多主模式
六、测试集群
在每一台服务器分别录入数据,在其他服务器查看是否有数据
1、在mysql1创建库
mysql2可以看到
2、mysql2创建表
mysql3可进行查看
3、mysql3插入数据
mysql1、mysql2可看到
七、mysql-router的安装使用
1、安装mysql-router
下载地址:https://dev.mysql.com/downloads/router/
[root@mysql1 opt]# yum -y install mysql-router-community-8.0.24-1.el7.x86_64.rpm
2、修改配置文件
增加一下配置
vim /etc/mysqlrouter/mysqlrouter.conf
[routing:read_writer]
bind_address = 192.168.1.141
bind_port = 7001
mode = read-write
destinations = mysql1:3306,mysql2:3306,mysql3:3306
max_connections = 1024
protocol = classic
routing_strategy = round-robin
#轮询算法,round-robin好像是默认值。
[routing:read_only]
bind_address = 192.168.1.141
bind_port = 7002
mode = read-only
destinations = mysql1:3306,mysql2:3306,mysql3:3306
max_connections = 1024
protocol = classic
routing_strategy = round-robin
当写如数据是转发到[routing:read_writer]指定的服务器中,当读取读取数据时转发带[routing:read_only]中
3、启动mysql-router
[root@mysql1 opt]# systemctl start mysqlrouter.service
mysql1连接mysql—roter,查看连接的服务器为mysql2.
show global variables like 'hostname';
退出再次连接进行产看,连接的为mysql3
mysql2连接进行查看,连接的为 mysql1
mysql3不测试了,结论实现了轮询效果,下课。
参考文献:
https://www.cnblogs.com/LOVE0612/p/12589669.html
https://blog.csdn.net/weixin_32298151/article/details/113207902
https://blog.csdn.net/weixin_43945743/article/details/85116647