目录

一、修改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/

请自行确认自己的系统

8集群 mysql mysql8集群搭建_8集群 mysql

解压tar包进行安装即可

8集群 mysql mysql8集群搭建_mysql_02

 为了方便我直接安装了所有包

[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/

8集群 mysql mysql8集群搭建_centos_03

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()

8集群 mysql mysql8集群搭建_服务器_04

退出myslsh为ctrl+z

3、重启mysql服务

[root@mysql1 opt]# systemctl restart mysqld

4、检查是否就绪

dba.checkInstanceConfiguration('root@mysql1:3306');

8集群 mysql mysql8集群搭建_8集群 mysql_05

 5、创建集群

注意:只需要在一台创建即可,本次使用mysql1(192.168.1.141)

MySQL  mysql1:3306 ssl  JS > var cluster = dba.createCluster('TestCluster');

8集群 mysql mysql8集群搭建_centos_06

 验证是否成功

8集群 mysql mysql8集群搭建_centos_07

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

8集群 mysql mysql8集群搭建_8集群 mysql_08

 

8集群 mysql mysql8集群搭建_centos_09

 使用cluster.status()查看状态,为online即添加成功。

8集群 mysql mysql8集群搭建_centos_10

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

MySQL  mysql3:3306 ssl  JS > var cluster = dba.getCluster()
MySQL  mysql3:3306 ssl  JS > cluster.status();

8集群 mysql mysql8集群搭建_centos_11

 至此处集群搭建成功

8、修改为多主模式

集群搭建后默认为单主模式(一主多从),此时只有主数据库可写入数据,其他为只读状态。

8集群 mysql mysql8集群搭建_服务器_12

 修改为多住模式:

MySQL  mysql1:3306 ssl  JS > cluster.switchToMultiPrimaryMode()

8集群 mysql mysql8集群搭建_8集群 mysql_13

8集群 mysql mysql8集群搭建_8集群 mysql_14

 已修改为多主模式

六、测试集群

在每一台服务器分别录入数据,在其他服务器查看是否有数据

1、在mysql1创建库

8集群 mysql mysql8集群搭建_8集群 mysql_15

 mysql2可以看到

8集群 mysql mysql8集群搭建_8集群 mysql_16

 2、mysql2创建表

8集群 mysql mysql8集群搭建_数据库_17

 mysql3可进行查看

8集群 mysql mysql8集群搭建_服务器_18

 3、mysql3插入数据

8集群 mysql mysql8集群搭建_服务器_19

 mysql1、mysql2可看到

8集群 mysql mysql8集群搭建_数据库_20

 七、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';

8集群 mysql mysql8集群搭建_8集群 mysql_21

 退出再次连接进行产看,连接的为mysql3

8集群 mysql mysql8集群搭建_服务器_22


 mysql2连接进行查看,连接的为 mysql1

8集群 mysql mysql8集群搭建_服务器_23

 mysql3不测试了,结论实现了轮询效果,下课。