使用mysqlsh搭建mysql8.0集群,并使用mysql-ruter实现负载均衡

目录

一、修改hosts文件

二、卸载系统自带mariadb数据库服务器

三、安装mysql数据库

 四、初始化数据库

1、启动数据库,设为开机自启

2、修改初始密码

3、创建远程管理用户并授权

五、使用mysqlshell配置集群

1、安装mysqlshell

2、分别在3台服务器运行mysqlshell,以141服务器为例

3、重启mysql服务

4、检查是否就绪

 5、创建集群

 6、将其他两台mysql添加到集群中

 7、关机、退出mysqlsh或其他服务器获取集群信息

8、修改为多主模式

六、测试集群

1、在mysql1创建库

 2、mysql2创建表​

 3、mysql3插入数据

 七、mysql-router的安装使用

1、安装mysql-router

2、修改配置文件

3、启动mysql-router


一、修改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/u013415591/article/details/84791196?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162605828516780274141319%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162605828516780274141319&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-84791196.first_rank_v2_pc_rank_v29&utm_term=mysql8%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA&spm=1018.2226.3001.4187

https://blog.csdn.net/weixin_32298151/article/details/113207902

https://blog.csdn.net/weixin_43945743/article/details/85116647

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值