感觉有点不够成熟的样子 而且在测试中还存在单点故障 在生产环境谨慎使用
1. 程序必须通过Fabric-aware connectors来连接mysql实现路由,目前只支持PHP,Python 和Java;
2. fabric state store和fabric note当前是单点,虽然fabric-aware连接器可以缓存路由信息(可以配置ttl值);
文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
3. fabric state store(backing store)和fabric note当前是单点,mysqlfabric进程本身不提供容错,出现故障时需要重启,当mysql fabric不可用时,fabric-aware连接器能够通过本地的cache继续路由操作(配置ttl值);-- 在测试过程中 backing store挂了 是致命伤(如果能在非常短时间内恢复则没有问题) 即使backint store恢复 也不能正常插入 不知到是脚本问题 还是确实如此文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
4. mysql实例进行恢复后,fabric不会自动改变实例的状态,需要手工修改;
文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
5. 自动把slaves都设置为read_only 这点值得表扬。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
6. 基于GTID的复制本身存在一些限制。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
7. 使用fabric不需要对slave配置vip,不像MHA和MMM等需要对vip进行管理;
文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
8. 使用fabric实现mysql复制高可用,以组为单位对mysql实例进行管理,可以管理多个HA组;
文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
9. mysql实例需要指出gtid,也是就要升级到mysql 5.6.10以上版本;
文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
查看mysqlfabric命令帮助:
mysqlfabric help:显示简短的语法信息和帮忙命令文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabric help commands: 列出所有可用命令和描述文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabric help groups: 列出可用命令组文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabric help [group] [command]: 提供命令的详细帮助信息文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
常用相关命令
mysqlfabricgroup create my_group #创建HA组文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabricgroup destroy my_group #删除HA组文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabricgroup add my_group 10.1.1.208:3306 #添加组成员文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabricgroup remove my_group c505ce10-9bc0-11e4-bfd4-000c290e7abe #移出组成员文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabricgroup lookup_servers m_ygroup #查看组成员文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabricgroup promote my_group --slaves=10.1.1.207:3306 #选举master文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabric group demote my_group #降级在组中的任何primary,不会重新选取一个新master,千万不能在业务进行期间做此操作,同时也不会关闭故障检测。
文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabric groupactivate my_group #激活自动故障转移文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlfabric-ha-split-rw/
mysqlfabric group deactivate my_group #禁用自动故障转移
mysqlfabric server set_status server_uuid status #变更服务器状态
mysqlfabrichelp manage #manage命令帮助
mysqlfabrichelp group #group命令帮助
mysqlfabrichelp server #server命令帮助
架构图
10.1.1.206 mysql master
10.1.1.207 mysql slave
10.1.1.208 mysql slave
10.1.1.210 mysqlfabric backingstore(mysql实例) + node(指fabric服务) -- backingstore是一个mysql实例 用于存储管理的mysql实例的角色和状态 版本必须与其他实例的mysql版本一直 而且必须高于5.6.10

mysql-fabric
配置受管理的mysqld实例 -- 206,207,208
-- 给所有受管理的mysql实例安装半同步 206,207,208
mysql> install plugin rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';
-- Mysql安装好后,每个fabric管理的实例需要开启gtid、二进制日志(不需要启动复制,由fabric完成),将以下配置放到[mysqld]段下面:
-------- GTIDs主从 ----------------
log_bin
log_slave_updates
gtid_mode=on
enforce_gtid_consistency
-------- semi 半同步 --------------
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
rpl_semi_sync_slave_enabled=1
-------- 把master_info 和 relay_log记录在表-------------
master_info_repository=TABLE
relay_log_info_repository=TABLE
配置Mysql Fabric
1. -- 在backing store节点给fabric node节点授权 必须对fabric库有完全权限 -- 在210上操作
mysql
mysql> grant all on fabric.* to fabric@'10.1.1.210' identified by 'fabric';
2. -- 在所有受管理的mysql节点给fabric node节点授权 需要对所有数据库拥有完全权限 -- 在206,207,208上操作
mysql
mysql> grant all on *.* to fabric@'10.1.1.210' identified by 'fabric';
3. -- 修改fabric配置文件
# vim /etc/mysql/fabric.cfg
修改以下内容
[storage]
address = 10.1.1.210:3306 -- backingstore (mysql实例) 的地址
password = fabric -- 在backingstore授权的密码
[servers]
password = fabric -- 在受管理的mysql上授权的密码
[protocol.xmlrpc]
address = 0.0.0.0:32274 -- 修改监听地址
-- 其他参数解释 请查看/mysql/MySQL Utilities/mysqlFabric/fabric.cfg 配置文件详解
4. -- 给backingstore 初始化fabric数据库 -- 在210上操作
# mysqlfabric manage setup --param=storage.user=fabric --param=storage.password=fabric
-------------------------------------------- 命令执行后的输出--------------------------------------
[INFO] 1450940601.418141 - MainThread - Initializing persister: user (fabric), server (10.1.1.210:3306), database (fabric).
Finishing initial setup -- 表示完成初始化fabric数据库
=======================
Password for admin user is not yet set.
Password for admin/xmlrpc: -- 这里表示要给 admin 设置一个密码 我这里填了fabric
Repeat Password: -- 再次输入 fabric
Password set.
Password set.
-----------------------------------------------------------------------------------------------------
运行fabric
mysqlfabric manage start
-- 如运行上述命令没有提示错误 则使用以下命令把fabric以服务模式运行 日志信息便会输出到日志文件 /var/log/fabric.log
mysqlfabric manage start --daemonize
-- 关闭命令
mysqlfabric manage stop -- 关闭fabric
Password for admin: -- 输入刚刚初始化fabric数据库时设置的密码 fabric
-- 查看监听端口
netstat -tnlp | grep python
tcp 0 0 0.0.0.0:32274 0.0.0.0:* LISTEN 30937/python
tcp 0 0 127.0.0.1:32275 0.0.0.0:* LISTEN 30937/python
使用fabric创建mysql复制高可用组
-- 创建组 在fabric node 210上操作
mysqlfabric group create my_group -- 创建组 名称叫my_group
Password for admin: -- 输入admin密码 fabric 也可以把密码写在fabric的配置文件 便不需要每次输入密码 但这里建议每次输入密码 防误操作
------------------------------------------ 创建成功输出 ----------------------------------
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid finished success result
------------------------------------ -------- ------- ------
12243c47-bd5c-4695-a9f5-29bbeda5618e 1 1 1
state success when description
----- ------- ------------- ------------------------------------------------------------
3 2 1.45094e+09 Triggered by <mysql.fabric.events.Event object at 0xf57c50>.
4 2 1.45094e+09 Executing action (_create_group).
5 2 1.45094e+09 Executed action (_create_group).
----------------------------------------------------------------------------------------------
-- 把受管理的mysql实例(206,207,208)添加到组 此操作还不会导致配置主从和failover 在fabric node 210上操作
mysqlfabric group add my_group 10.1.1.206:3306 -- 添加206
Password for admin: -- 输入admin密码 fabric
mysqlfabric group add my_group 10.1.1.207:3306 -- 添加207
mysqlfabric group add my_group 10.1.1.208:3306 -- 添加208
查看组信息
-- 查看状态
mysqlfabric group lookup_servers my_group
------------------------ 输出如下 -----------------------------------------
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
------------------------------------ --------------- --------- --------- ------
9507aa71-9280-11e5-88d8-525400ef6331 10.1.1.207:3306 SECONDARY READ_ONLY 1.0
e0424b22-9ee9-11e5-99c6-52540082b02e 10.1.1.208:3306 SECONDARY READ_ONLY 1.0
f9d3f20e-9ee8-11e5-99c0-525400b3b967 10.1.1.206:3306 SECONDARY READ_ONLY 1.0
解释
server_uuid -- mysql实例的uuid
address -- 实例地址
status -- 实例状态 primary 表示为主 secondary 表示为从 spare 表示为备用(不能被读写的意思) faulty 表示故障
-----------------------------------------------------------------------------
-- 查看健康情况
mysqlfabric group health my_group
------------------------- 输出如下 -----------------------------------------
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid is_alive status is_not_running is_not_configured io_not_running sql_not_running io_error sql_error
------------------------------------ -------- --------- -------------- ----------------- -------------- --------------- -------- ---------
9507aa71-9280-11e5-88d8-525400ef6331 1 SECONDARY 0 1 0 0 False False
e0424b22-9ee9-11e5-99c6-52540082b02e 1 SECONDARY 0 1 0 0 False False
f9d3f20e-9ee8-11e5-99c0-525400b3b967 1 SECONDARY 0 1 0 0 False False
issue
-----
解释
1为是 0为不是
------------------------------------------------------------------------------
配置主从用户
-- fabric默认用其连接受管理mysql实例的用户配置slave 而且每个slave都有可能成为master 所以要在所有实例上配置 -- 在206,207,208上操作
mysql> grant replication slave on *.* to fabric@'10.1.1.206' identified by 'fabric';
mysql> grant replication slave on *.* to fabric@'10.1.1.207' identified by 'fabric';
mysql> grant replication slave on *.* to fabric@'10.1.1.208' identified by 'fabric';
mysql> reset slave;
mysql> reset master; -- 由于GTIDs的主从是自动position 所以刚刚的授权会在建立主从后 在从再运行一次 这样会导致错误
选出master
-- 因为创建高可用组后,fabric没有意识到任何复制拓扑。需要提升一个为primary,降级剩余的服务器自动为secondaries(slaves)。
mysqlfabric group promote my_group --slave_id=10.1.1.206:3306 -- 指定10.1.1.206:3306提升为master
------------------- 命令解释 -------------------------------------
# mysqlfabric help group promote
group promote group_id [--slave_id=NONE] [--update_only] [--synchronous]
-- 如果只是想更新state store,跳过复制配置,使用--update_only参数。
-- 如果slave没有提供,将选择一个最好的候选者,候选者必须开启二进制日志,同时跟master属于同一个组,跟master延时小。进行故障切换操作,选择这个候选者,同时将其他slave指向到新的master,同时更新state store。
-- 执行同样的命名将设置不同的服务器为primary,同时降级当前primary并选取一个新的。如果当前primary错误,执行同样的命令能手动触发选取一个新的primary。
------------------ 把primary降级--------------------------------
mysqlfabric group demote my_group
-- 使用group demote降级在组中的任何primary,不会重新选取一个新master,千万不能在业务进行期间做此操作,同时也不会关闭故障检测。
--------------------------------------------------------------------
-- 查看提升情况
mysqlfabric group lookup_servers my_group
------------------------------------------------- 输出 ---------------------------------------------
9507aa71-9280-11e5-88d8-525400ef6331 10.1.1.207:3306 SECONDARY READ_ONLY 1.0
e0424b22-9ee9-11e5-99c6-52540082b02e 10.1.1.208:3306 SECONDARY READ_ONLY 1.0
f9d3f20e-9ee8-11e5-99c0-525400b3b967 10.1.1.206:3306 PRIMARY READ_WRITE 1.0 -- 状态已变为 PRIMARY 表示主
-----------------------------------------------------------------------------------------------------
-- 查看slave的读写状态 在207 208上操作
show variables like 'read_only';
| read_only | ON | -- fabric 会自动把slave设置为只读 这点非常好
show slave status\G; -- 查看从的情况 没有error则表示成功
-- 查看半同步状态
show status like '%semi_sync%';
Rpl_semi_sync_master_status | ON -- 在206上此值为ON
Rpl_semi_sync_slave_status | ON -- 在207上此值为ON
-- 表示206和207之间的半同步已成功启用
启用故障检测( failover )
mysqlfabric group activate my_group
-- mysqlfabric group deactivate my_group #禁用自动故障转移
模拟故障
-- 把master关闭
mysqladmin -predhat shutdown
-- 查看fabricHA组的角色状态
mysqlfabric group lookup_servers my_group
--------------- 输出如下 -------------------------------------
server_uuid address status mode weight
------------------------------------ --------------- --------- ---------- ------
9507aa71-9280-11e5-88d8-525400ef6331 10.1.1.207:3306 SECONDARY READ_ONLY 1.0
e0424b22-9ee9-11e5-99c6-52540082b02e 10.1.1.208:3306 PRIMARY READ_WRITE 1.0 -- 自动把208提升为新主
f9d3f20e-9ee8-11e5-99c0-525400b3b967 10.1.1.206:3306 FAULTY READ_WRITE 1.0 -- 关掉的master状态已变为FAULTY
----------------------------------------------------------------
-- 查看slave 207的情况
show slave status\G;
-- master指向新主208 而且没有任何error 则表示切换成功
-- 把原master 206恢复
service mysqld start
-- 此时虽然原master已经起来 但是fabric并没有把他自动恢复到主从里面 继续下面来验证
-- 查看原master恢复后的fabricHA组的角色状态
mysqlfabric group lookup_servers my_group
----------------------------- 输出如下 ----------------------------------------------
server_uuid address status mode weight
------------------------------------ --------------- --------- ---------- ------
9507aa71-9280-11e5-88d8-525400ef6331 10.1.1.207:3306 SECONDARY READ_ONLY 1.0
e0424b22-9ee9-11e5-99c6-52540082b02e 10.1.1.208:3306 PRIMARY READ_WRITE 1.0
f9d3f20e-9ee8-11e5-99c0-525400b3b967 10.1.1.206:3306 FAULTY READ_WRITE 1.0 -- 原master状态依旧为FAULTY
---------------------------------------------------------------------------------------
-- 把原master恢复到集群里面
-- 一个标记位"faulty"状态的服务器不能提升为secondary或primary,需要先转换成"spare"状态。使用命令mysqlfabric server set_status <server-address> spare
---------------------相关命令 ----------------------------------------------
# mysqlfabric help server set_status
server set_status server_id status [--update_only] [--synchronous]
Set a server's status.
支持的状态值为primary,secondary,spare,faulty。
--------------------------------------------------------------------------------
-- 切换到spare
mysqlfabric server set_status f9d3f20e-9ee8-11e5-99c0-525400b3b967 spare -- 把206切换成spare角色,改变到spare,避免写和读访问,同时保证当故障切换时不会被选取。这里需要用206对应的uuid表示 注意要看清楚有没有搞错uuid 当然也可以使用10.1.1.206:3306 这样代替
------------------------------- mysqlfabric group lookup_servers my_group 查看角色状态 ---------------------
f9d3f20e-9ee8-11e5-99c0-525400b3b967 10.1.1.206:3306 SPARE OFFLINE 1.0 -- 角色已变为SPARE 而且模式为OFFLINE 表示不会被应用访问到
---------------------------------------------------------------------------------------------------------------------------
-- 切换到secondary
mysqlfabric server set_status f9d3f20e-9ee8-11e5-99c0-525400b3b967 secondary -- 把206切换成 secondary 角色 成功加入服务
----------------- mysqlfabric group lookup_servers my_group 查看角色状态 ---------
f9d3f20e-9ee8-11e5-99c0-525400b3b967 10.1.1.206:3306 SECONDARY READ_ONLY 1.0 -- 角色已变为SECONDARY 模式为READ_ONLY
-----------------------------------------------------------------------------
使用python 测试连接数据库和插入数据时故障切换
-- 应用程序通过fabric-aware连接器连接到fabric,获取服务器、组信息。
-- 创建数据库和表和授权用户 -- 在master 206上操作
create database db01;
create table t1(id int,name char(3));
-- 给执行python的机器赋予mysqld权限
grant all on db01.* to user_db01@'10.1.1.210' identified by 'redhat';
-- 在210上编写脚本
-- 脚本达到无限插入数据并插入失败重新提交
#!/usr/bin/env python
#coding:utf-8
import sys
import time
import mysql.connector
from mysql.connector import fabric
def main():
try:
conn = mysql.connector.connect(
fabric = {"host":"10.1.1.210","port":32274,"username":"admin",
"password":"fabric"}, #指定使用xml-rpc连接fabric的用户名和密码
user="user_db01",database="db01",password="redhat",autocommit=True #指定访问受管理mysql实例的用户名和密码
)
f = open('/tmp/python_insert','a+') #日志文件路径
flag = 1
while 1 < 10: #死循环
try:
time.sleep(0.01)
print >> f,'INSERT INTO t1 VALUES (%s,"a")'%flag
conn.set_property(group="my_group",mode=fabric.MODE_READWRITE) #连接到此HA组 并且指定模式为READ_WRITE 写在循环体里面是因为如果不重新拿状态 failover是不会响应的
cur = conn.cursor()
cur.execute('INSERT INTO t1 VALUES (%s,"a")'%flag) #只有这句话有可能抛出错误 如果抛出错误 这句话以下的语句则不会执行
print >> f,'insert ok' #如果没有错误 则往文件输出 ok
f.flush()
flag += 1
except Exception,e:
print >> f,e #如果抛出错误 则把错误写到日志文件
f.flush()
except Exception,e:
print >> f,e
f.flush()
finally:
f.close()
conn.close()
if __name__ == '__main__':
main()
-- 执行脚本
# python /tmp/fabric_test.py
模拟故障
-- 在脚本执行期间 模拟故障 把master关掉
# mysqladmin -predhat shutdown
-- 查看组状态
# mysqlfabric group lookup_servers my_group
---------------------------------- 输出如下 -----------------------
9507aa71-9280-11e5-88d8-525400ef6331 10.1.1.207:3306 SECONDARY READ_ONLY 1.0
e0424b22-9ee9-11e5-99c6-52540082b02e 10.1.1.208:3306 PRIMARY READ_WRITE 1.0
f9d3f20e-9ee8-11e5-99c0-525400b3b967 10.1.1.206:3306 FAULTY READ_ONLY 1.0
------------------------------------------------------------------------
-- 查看日志文件
--------------------- 截取日志重点如下--------------------------
INSERT INTO t1 VALUES (172,"a")
insert ok -- 172插入成功
INSERT INTO t1 VALUES (173,"a")
Reported faulty server to Fabric (2003: Can't connect to MySQL server on '10.1.1.208:3306' (111 Connection refused)) -- 173插入失败 因为master关掉了
INSERT INTO t1 VALUES (173,"a")
Reported faulty server to Fabric (2003: Can't connect to MySQL server on '10.1.1.208:3306' (111 Connection refused))
INSERT INTO t1 VALUES (173,"a")
Reported faulty server to Fabric (2003: Can't connect to MySQL server on '10.1.1.208:3306' (111 Connection refused))
INSERT INTO t1 VALUES (173,"a")
Error getting connection: No MySQL server available for group 'my_group' mode=3 -- 可能正在failover 所以获取错误
INSERT INTO t1 VALUES (173,"a")
insert ok -- 插入成功 仍然插入173 证明没有丢失数据
INSERT INTO t1 VALUES (174,"a")
insert ok
INSERT INTO t1 VALUES (175,"a")
--------------------------------------------------------------------
模拟mysqlfabric故障
-- 由于fabric state store和fabric note当前是单点,虽然fabric-aware连接器可以缓存路由信息(可以配置ttl值);
-- 模拟backing store 的mysqld故障
-- 先把HA组的所有mysqld恢复正常并正常建立主从关系
-- 执行脚本
-- 把backing store关掉 --210上的mysqld
-- 查看日志
--------------------------- 日志输出 -------------------------------------------
INSERT INTO t1 VALUES (274,"a")
insert ok -- 把mysqld关掉后一段时间还是能正常插入 估计是TTL时间的设置
INSERT INTO t1 VALUES (275,"a")
Error getting connection: Connection with Fabric failed: <urlopen error [Errno 104] Connection reset by peer> -- 然后就出错了 而且是即时把mysqld恢复 这里也没有恢复正常
INSERT INTO t1 VALUES (275,"a")
Error getting connection: Connection with Fabric failed: <urlopen error [Errno 104] Connection reset by peer>
------------------------------------------------------------------------------------
-- 但把python脚本关掉 重新跑 又可以了 其中的原因 暂时还不得知
-- 模拟fabric node( fabric进程 )故障
-- 先把HA组的所有mysqld恢复正常并正常建立主从关系
# mysqlfabric manage stop
-- 查看日志
--------------------------- 日志输出 -----------------------------------------------
INSERT INTO t1 VALUES (270,"a")
insert ok -- 也是能正常插入一段时间
INSERT INTO t1 VALUES (271,"a")
Error getting connection: Connection with Fabric failed: <urlopen error [Errno 111] Connection refused> -- 然后就报错了 因为把fabric进程关了
INSERT INTO t1 VALUES (271,"a")
Error getting connection: Connection with Fabric failed: <urlopen error [Errno 111] Connection refused>
INSERT INTO t1 VALUES (271,"a")
insert ok
-- 把fabric重新启动之后 插入又正常了
--------------------------------------------------------------------------------------
测试总结:
-- 在测试过程中 backing store挂了 是致命伤(如果能在非常短时间内恢复则没有问题) 即使backint store恢复 也不能正常插入 不知到是脚本问题 还是确实如此
-- fabric进程挂了 在进程恢复后 就能恢复正常
-- 在backing store挂的期间 如果master也挂了 fabric也能正常处理failover
-- 在fabric进程挂了期间 (他压根不工作好吧 还怎么failover呢)
-- 调大TTL值
vim /etc/mysql/fabric.cfg
修改以下内容
ttl = 999999999 -- 随便调大测试
mysqlfabric manage stop -- 重启mysqlfabric 使配置生效
mysqlfabric manage start --daemon
-- 结果一模一样 压根不是调大TTL值就能解决的 致命伤啊
组维护
1、找出哪些服务器在组中,查看组状态
# mysqlfabric group lookup_servers my_group
2、从组中移除mysql实例
-- 有时需要将secondaries离线进行维护,在停止服务之前,需要先从组中移除它,避免fabric错误检查触发任何动作:
---------------------- 命令介绍 -----------------------------------------------
# mysqlfabric help group remove
group remove group_id server_id [--synchronous]
Remove a server from a group.
----------------------------------------------------
-- 如从my_group组中移除server_uuid为7bd52611-2d44-11e4-af5f-3ecad7c2f82a的实例:
# mysqlfabric group remove my_group 7bd52611-2d44-11e4-af5f-3ecad7c2f82a
-- 然后可以重新添加到组,将自动开启复制:
# mysqlfabric group add my_group 10.1.1.206:3306
3、添加一个全新的Mysql实例(实例IP为172.17.0.51)到HA group组
-- 查看前面的创建过程即可
4、降级primary
-- primary不能从组中移除,使用group demote关闭在组中的任何primary,不会重新选取一个新master,同时也不会关闭故障检测。
# mysqlfabric group demote my_group
5、手动提升一个服务组,选取一个master
# mysqlfabric group promote my_group
6、移除组(使用group destroy)
-- 如果组没有服务器,是空的,能移除组
# mysqlfabric group destroy my_test
-- 也能强制的移除非空的组(使用--force):
# mysqlfabric group destroy my_test --force
评论