InnoDB Cluster 8.4|部署ClusterSet

可以将其解释为整个集群的备份,提供了容灾的能力,如果主集群由于数据中心丢失或网络连接丢失而变得不可用,可以使副本集群处于活动状态以恢复服务的可用性

限制:

  • 正常的复制延迟或网络分区可能意味着在主集群遇到问题时,部分或全部副本集群与主集群不完全一致。在这些情况下,如果触发紧急故障转移,任何未复制或发散的事务都面临丢失的风险。如果不能容忍故障转移期间发生任何事务或数据丢失,请考虑使用单个 InnoDB Cluster 以及跨多个数据中心部署的成员服务器,而不是使用 InnoDB ClusterSet 作为解决方案
  • InnoDB ClusterSet仅支持异步复制,不能使用半同步复制
  • InnoDB ClusterSet 部署只能包含单个读写主集群

实验环境

主机名/IP角色
server01/192.168.1.201主集群-主
server02/192.168.1.202主集群-辅
server03/192.168.1.203主集群-辅
server04/192.168.1.204副本集群-主
server05/192.168.1.205副本集群-辅
server06/192.168.1.206副本集群-辅
server07/192.168.1.207mysqlrouter

ALL NODES(除server07)

添加映射

vim /etc/hosts
192.168.1.201 server01
192.168.1.202 server02
192.168.1.203 server03
192.168.1.204 server04
192.168.1.205 server05
192.168.1.206 server06
192.168.1.207 server07

安装mysql存储库

wget wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb
dpkg -i mysql-apt-config_0.8.32-1_all.deb 
apt update -y

安装mysql

apt install mysql-server -y

配置允许外部访问mysql

vim /etc/mysql/mysql.conf.d/mysql.conf
[mysqld]
bind-address=0.0.0.0

重启服务

systemctl restart mysql

安装mysql shell

apt install mysql-shell -y

创建集群服务配置账户

mysqlsh mysql://root@localhost:3306
\js
dba.configureInstance('root@localhost:3306',{clusterAdmin:"'clusteradmin'@'%'"});

检查实例是否符合集群要求

dba.checkInstanceConfiguration('clusteradmin@localhost:3306');

server01

创建一个名为testCluster的集群

mysqlsh -u clusteradmin -p
\js
var cluster = dba.createCluster('testCluster')

查看集群信息

cluster.status()

将两个实例添加到集群

cluster.addInstance('clusteradmin@192.168.1.202:3306')
cluster.addInstance('clusteradmin@192.168.1.203:3306')

从其他节点验证

mysqlsh -u root -p -h 192.168.1.202
\js
var cluster = dba.getCluster('testCluster')
cluster.status()

创建一个名为testclusterset的ClusterSet

myclusterset = cluster.createClusterSet('testclusterset')

创建副本集群

cluster2 = myclusterset.createReplicaCluster("clusteradmin@192.168.1.204:3306", "clustertwo", {recoveryProgress: 1, timeout: 10}) 

将两个实例添加进副本集群

cluster2.addInstance('clusteradmin@192.168.1.205:3306')
cluster2.addInstance('clusteradmin@192.168.1.206:3306')

查看ClusterSet状态

myclusterset.status()

查看更详细的状态信息

myclusterset.status({extended: 1})

查看拓扑

myclusterset.describe()

server07

添加映射

vim /etc/hosts
192.168.1.201 server01
192.168.1.202 server02
192.168.1.203 server03
192.168.1.204 server04
192.168.1.205 server05
192.168.1.206 server06
192.168.1.207 server07

安装mysql存储库

wget wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb
dpkg -i mysql-apt-config_0.8.32-1_all.deb 
apt update -y

安装mysqlrouter

apt-get install mysql-router-community

引导路由

mysqlrouter --bootstrap clusteradmin@192.168.1.201:3306 --account=router1 --account-create=always

成功引导后配置文件将会在/etc/mysqlrouter/mysqlrouter.conf,只需要保留

[routing:bootstrap_rw_split]
bind_address=0.0.0.0
bind_port=6450
destinations=metadata-cache://testclusterset/?role=PRIMARY_AND_SECONDARY
routing_strategy=round-robin
protocol=classic
connection_sharing=1
client_ssl_mode=PREFERRED
server_ssl_mode=PREFERRED
access_mode=auto

其他的诸如[routing:bootstrap_rw]、[routing:bootstrap_ro]、[routing:bootstrap_x_rw]、[routing:bootstrap_x_ro]都可以注释掉,这些都是使用不同端口进行读写分离的配置块

重启服务

systemctl restart mysqlrouter

查看路由信息

myclusterset.listRouters()
myclusterset.routingOptions()

拓展

切换主集群

var myclusterset=dba.getClusterSet()
myclusterset.setPrimaryCluster('clustertwo')

进行紧急故障转移,可以强制将副本集群指定为主集群

myclusterset.forcePrimaryCluster() 

停止向 ClusterSet 的主集群写入流量。副本集群不接受写入,因此此操作对它们没有影响

myclusterset.fenceWrites()

恢复写入流量

myclusterset.unfenceWrites()

隔离集群以及该集群中的所有只读副本,阻止所有流量

myclusterset.fenceAllTraffic()

如果您使用.fenceAllTraffic()隔离了集群的所有流量,则必须重新启动集群

dba.rebootClusterFromCompleteOutage()

移除ClusterSet

myclusterset.removeCluster('clusterone')

集群重新加入ClusterSet

myclusterset.rejoinCluster('clustertwo')

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!