mysql8.0.11高可用_MySQL8.0 MIC高可用集群搭建

mysql8.0带来的新特性,结合MySQLshell,不需要第三方中间件,自动构建高可用集群。

mysql8.0作为一款新产品,其内置的mysq-innodb-cluster(MIC)高可用集群的技术确实惊艳,结合MySQLshell能够实施集群的快速部署,MySQL-route能够实现灾备快速切换,内置读写分离技术,负载均衡技术。结合但实际效果如何,还需验证。

一,集群部署

1.1 安装环境;

操作系统:Linux,版本:CentOS-7-x86

介质准备:无

环境清理

释放yum进程

[root@bug ~]# ps -ef|grep yum

root

22481

1694

5

17

:

23

?

00

:

00

:

03

/usr/bin/python /usr/share/PackageKit/helpers/yum/yumBackend.py

get

-updates none

root

22591

22507

1

17

:

24

pts/

00

:

00

:

00

grep --color=auto yum

[root@bug ~]# kill -

9

22481

查看是否有多余系统,有则卸载

1

2

[root@bug ~]# rpm -qa|grep mairadb

[root@bug ~]# rpm -qa|grep mysql

关闭防火墙

1

2

3

4

[root@bug ~]# systemctl status firewalld.service

● firewalld.service - firewalld - dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)

Active: inactive (dead)

关闭selinux,重启系统后生效

[root@bug selinux]# vi /etc/selinux/config

SELINUX=

disabled

[root@bug selinux]# reboot

1.2 安装MySQL8.0

1

2

3

[root@bug ~]# yum install -y wget https:

//repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

[root@bug ~]# yum list|grep mysql

[root@bug ~]# yum install -y mysql-community-client.x86_64 mysql-router.x86_64 mysql-shell.x86_64

采用YUM源安装方式,总下载量约400M,

1.3自动集群部署

部署节点1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

[root@bug ~]# mysqlsh

MySQL  JS >  dba.deploySandboxInstance(3310);

A

new

MySQL sandbox instance will be created

on

this

host

in

/root/mysql-sandboxes/3310

Warning: Sandbox instances are only suitable

for

deploying and

running

on

your local machine

for

testing purposes and are not

accessible

from

external networks.

Please enter a MySQL root password

for

the

new

instance: ******

Deploying

new

MySQL instance...

Instance localhost:3310 successfully deployed and started.

Use shell.connect(

'root@localhost:3310'

); to connect to the instance.

第一个节点部署完毕,端口设置为3310,登陆账号为root@localhost,密码

******

使用本地认证的方式, 登陆数据库实例,进行验证。

1

2

3

[root@bug ~]# mysql -uroot -porange -S /root/mysql-sandboxes/3310/sandboxdata/mysqld.sock

mysql: [Warning] Using a password

on

the command line

interface

can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

同样的方法,部署节点2,节点3。

1

2

3

MySQL  JS >  dba.deploySandboxInstance(3320);

MySQL  JS > dba.deploySandboxInstance(3330);

1.4创建集群

此实验采用简单的创建本地集群。

1

2

3

4

5

6

7

8

9

10

11

12

MySQL  JS >  \connect root@localhost:3310

Creating a session to

'root@localhost:3310'

*****************************************************

MySQL  localhost:3310 ssl  JS >

var

cluster=dba.createCluster(

'test'

)

A

new

InnoDB cluster will be created

on

instance

'root@localhost:3310'

.

*********************************************************

Cluster successfully created. Use Cluster.addInstance() to add MySQL instances.

At least 3 instances are needed

for

the cluster to be able to withstand up to

one server failure.

集群系统已经创建成功,最后一行:At least 3 instances are needed for the cluster to be able to withstand up to one server failure.提示需要至少三个实例,才能保证灾备,所以接下来,将节点2,3添加进集群。

1

2

3

4

5

6

7

8

MySQL  localhost:3310 ssl  JS > cluster.addInstance(

'root@localhost:3320'

)

The instance

'root@localhost:3320'

was successfully added to the cluster.

MySQL  localhost:3310 ssl  JS > cluster.addInstance(

'root@localhost:3330'

)

The instance

'root@localhost:3330'

was successfully added to the cluster.

查看集群状态

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

MySQL  localhost:3310 ssl  JS > dba.getCluster().status()

{

"clusterName"

:

"test"

,

"defaultReplicaSet"

: {

"name"

:

"default"

,

"primary"

:

"localhost:3310"

,

"ssl"

:

"REQUIRED"

,

"status"

:

"OK"

,

"statusText"

:

"Cluster is ONLINE and can tolerate up to ONE failure."

,

"topology"

: {

"localhost:3310"

: {

"address"

:

"localhost:3310"

,

"mode"

:

"R/W"

,

"readReplicas"

: {},

"role"

:

"HA"

,

"status"

:

"ONLINE"

},

"localhost:3320"

: {

"address"

:

"localhost:3320"

,

"mode"

:

"R/O"

,

"readReplicas"

: {},

"role"

:

"HA"

,

"status"

:

"ONLINE"

},

"localhost:3330"

: {

"address"

:

"localhost:3330"

,

"mode"

:

"R/O"

,

"readReplicas"

: {},

"role"

:

"HA"

,

"status"

:

"ONLINE"

}

}

},

"groupInformationSourceMember"

:

"mysql://root@localhost:3310"

}

一个简单的包含三个节点的集群已经创建完成。可以完成数据同步,读写分离等功能,比如此刻3310端口的状态是"R/W",同时read与write,3320与3330的状态是"R/O",只读模式。

1.5配置中间件

此时的集群的高可用性还不完整,需要MySQL-router来完成集群与外部的对接,实现自动切换,故障转移等功能。

MySQL-router的作用类似keepalived 类的中间件。当主机发生故障后,自动将应用切换到其他实例。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

[root@bug ~]#  mysqlrouter --bootstrap root@localhost:3310 --user=mysqlrouter

Please enter MySQL password

for

root: *****

Bootstrapping system MySQL Router instance...

Checking

for

old Router accounts

Creating account mysql_router2_j05xzi45m81x@

'%'

MySQL Router  has now been configured

for

the InnoDB cluster

'test'

.

The following connection information can be used to connect to the cluster.

Classic MySQL protocol connections to cluster

'test'

:

- Read/Write Connections: localhost:6446

- Read/Only Connections: localhost:6447

X protocol connections to cluster

'test'

:

- Read/Write Connections: localhost:64460

- Read/Only Connections: localhost:64470

Existing configurations backed up to

'/etc/mysqlrouter/mysqlrouter.conf.bak'

[root@bug ~]# mysqlrouter&

[1] 25602

[root@bug ~]#  ps -ef|grep router

mysqlro+ 25602 22507  8 19:35 pts/0    00:00:01 mysqlrouter

root     25619 22507  0 19:36 pts/0    00:00:00 grep --color=auto router

验证MySQL-router安装效果

在MySQL-router默认配置下,

主机端口:6446

从库端口:6447

1

2

3

4

5

[root@bug ~]#  mysql -uroot -h 127.0.0.1 -P 6446 -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

********************************************************8

mysql>

证明MySQL-router配置完成可用。

1.6验证集群效果

1,通过router同时登陆三个节点,查看端口号。

2,在节点1构造数据,在节点2,3差看状态,验证数据同步性。

3,节点1(主机)离线,查看集群状态与节点2,节点3状态,验证灾备能力。

你可能感兴趣的:(mysql8.0.11高可用)