MySQL高可用解决方案(2)Xenon集群部署教程
一、Xenon介绍
Xenon是青云开源的一款MySQL高可用中间件,项目地址是https://github.com/radondb/xenon。Xenon包含了快速故障转移并且确保数据一致性、基于Xtrabackup快速重构从节点、便捷的节点管理等特性,并且使用的是tcp协议,可以在云环境中使用(Keepalived使用的是vrrp协议,已经被很多云厂商禁止),最后部署简单、便于运维。在部署Xenon前需确保满足以下条件:
· 所有节点安装GO
yum install golang #go版本需要>=1.8
· 所有节点安装好Xtrabackup
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y yum install percona-xtrabackup-24.x86_64 -y
· 所有节点为mysql用户配置SSH免密,并且增加sudo权限
visudo mysql ALL=(ALL) NOPASSWD: ALL
· MySQL复制架构必须为GTID模式
· MySQL需要用mysqld_safe启动,避免Xenon拉起mysql时发生冲突,或者先关闭mysql再用Xenon拉起mysql
· MySQL半同步插件需安装(仅安装即可,Xenon会自动配置半同步)
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
二、Xenon部署与配置
1、所有节点安装Xenon
wget https://github.com/radondb/xenon/archive/refs/tags/v1.1.4.tar.gz tar zxf xenon-1.1.4.tar.gz mv xenon-1.1.4 /usr/local/xenon cd /usr/local/xenon make build ls bin/ #在xenon/bin下如果创建出xenon、xenoncli命令代表安装成功 #方法2 yum install git git clone https://github.com/radondb/xenon.git cd xenon make build #安装完成后会生成bin/xenon和bin/xenoncli
2、所有节点修改xenon配置文件
cp /usr/local/xenon/conf/xenon-simple.conf.json /usr/local/xenon/conf/xenon.json echo "/usr/local/xenon/conf/xenon.json" > /usr/local/xenon/bin/config.path #该配置用于告诉xenoncli应该在哪里找配置文件 cat xenon.json { "server": { "endpoint":"172.22.1.171:8801" #填写节点自身IP }, "raft": { "meta-datadir":"raft.meta", "heartbeat-timeout":1000, "election-timeout":3000, "leader-start-command":"", #成为leader后需要执行的命令 "leader-stop-command":"" #非leader后需要执行的命令 }, "mysql": { "admin":"root", #mysql账号,因为会涉及change master等操作,需要给一个高权限用户 "passwd":"123456", "host":"172.22.1.171", #主库IP "port":3306, "basedir":"/usr/local/mysql", #数据库目录 "defaults-file":"/etc/my3306.cnf", #数据库配置文件 "ping-timeout":1000, "master-sysvars":"tokudb_fsync_log_period=default;sync_binlog=default;innodb_flush_log_at_trx_commit=default", #成为master后需要自动修改的数据库变量 "slave-sysvars": "tokudb_fsync_log_period=1000;sync_binlog=1000;innodb_flush_log_at_trx_commit=2" #成为slave后需要自动修改的数据库变量 }, "replication": #主从复制账号 { "user":"repl", "passwd":"repl" }, "backup": #xtrabackup备份和自动还原配置 { "ssh-host":"172.22.1.171", #每个节点的IP信息 "ssh-user":"mysql", #SSH用户 "ssh-passwd":"123456", #SSH密码,不过已经配置了免密这里不会生效 "ssh-port":22, "backupdir":"/data/mysql3306/data", #mysql datadir "xtrabackup-bindir":"/bin", #xtrabackup的路径 "backup-iops-limits":100000, "backup-use-memory": "1GB", "backup-parallel": 2 }, "rpc": { "request-timeout":500 }, "log": { "level":"INFO" } }
4、所有节点启动Xenon,,因为Xenon的raft节点间通信需要xenon进程启动,所以需要在三个节点上都执行。如果数据库没启动它会自动拉起来,注意启动Xenon的用户需要和启动MySQL的是同一个,比如都是mysql用户
nohup /usr/local/xenon/bin/xenon -c /usr/local/xenon/conf/xenon.json > /usr/local/xenon/xenon.log 2>&1 &
5、所有节点添加集群成员,因为Xenon的raft节点间通信需要xenon进程启动,所以需要在三个节点上都执行
xenoncli cluster add 172.20.1.172:8801,172.20.1.171:8801,172.20.1.184:8801 #这里的地址就是配置文件中endpoint的地址,多个成员用逗号分隔
6、查看集群状态,正常情况下会看到有一个LEADER节点且可写,其它为FOLLOWER节点且只读
/usr/local/xenon/bin/xenoncli cluster status
7、查看数据库状态也能看到三个节点的不同
xenoncli cluster mysql #查看节点角色、从库线程状态
xenoncli cluster gtid #查看各个节点GTID信息
8、关闭主库进行测试,可以看到Xenon做了主从切换动作
版权声明:本文章版权归数据库运维网(www.ywdba.cn)所有。如需引用本站内容,请注明来源及作者。
评论