uxmpp的作为UXDB的扩展插件,也可以实现高可用。
uxmpp的高可用是通过给master搭建主备流复制,分片使用uxmpp的副本的形式来实现的。
搭建uxmpp环境(包含一个master节点,至少两个worker节点,详细步骤请参考第?4.1?节)
搭建异步流复制环境,为master节点创建一个备服务器,详细步骤请参考《优炫数据库备份与还原手册 V2.1》中异步流复制章节。
master节点上的uxmpp集群修改配置参数
修改uxsinodb.conf:
max_connections = 1000 wal_level = replica hot_standby = on max_prepared_transactions = 2000
修改ux_hba.conf:
host replication all 0.0.0.0/0 md5
新建recovery.done:
vi recovery.done recovery_target_timeline = 'latest' standby_mode = on primary_conninfo = 'host=IP port=port user=username password=password'
(IP为master上uxmpp集群所在机器IP,port为master上uxmpp集群端口,username为master上uxmpp集群的用户名,password为master上uxmpp集群的用户密码。)
上述配置完成之后可以重启master节点上的uxmpp集群。
修改master节点的复制因子
登录master集群控制台执行:
alter system set uxmpp.shard_replication_factor TO 2;
重启集群使参数生效。
备节点上生成备库
备节点请参考《优炫数据库备份与还原手册 V2.1》。
在master备节点上的uxdb的bin目录下执行:
./ux_basebackup -D uxdbdata -F p -X stream -h masterIP -p 5432 -U uxdb
控制选项:
-D,--uxdata
指定把备份写到那个目录,如果这个目录或这个目录路径中的各级父目录不存在,则ux_basebackup就会自动创建这个目录,如果目录存在,但目录不为空,则会导致ux_basebackup执行失败。
-F,--format=p|t
指定输出格式:
p-原样输出,即把主数据库中的各个数据文件,配置文件、目录结构都完全一样的写到备份目录;
t-把输出的备份文件打包到一个tar文件中。
-X,--xlog(wal)-method=fetch|stream
指定WAL日志的存储方法。
连接选项:
-h,--host=HOSTNAME
指定需要连接的数据库所在地址。
-p,--port=PORT
指定需要连接的数据库的端口。
-U,--username=NAME--username=NAME
指定需要连接的数据库的用户名。
进入备库集群目录执行:
mv recovery.done recovery.conf
启动备库。
模拟故障
登录master主库创建测试表(分布式表),并插入数据。
模拟主库故障(停止主库)。
进入备库集群目录执行:mv recovery.conf recovery.done(重启备节点集群,备节点转为读写主节点)。
在备节点上对原数据进行读写。
模拟worker节点故障(停止一个worker)。
在备节点上对原表进行读操作。