MySQL高可用解决方案(2)Xenon集群部署教程

TangLu 52 2021-10-09

一、Xenon介绍

Xenon是青云开源的一款MySQL高可用中间件,项目地址是https://github.com/radondb/xenon。Xenon包含了快速故障转移并且确保数据一致性、基于Xtrabackup快速重构从节点、便捷的节点管理等特性,并且使用的是tcp协议,可以在云环境中使用(Keepalived使用的是vrrp协议,已经被很多云厂商禁止),最后部署简单、便于运维。

在部署Xenon前需确保满足以下条件:

· 所有节点安装GO和GIT环境

yum install go 
yum install git


· 所有节点安装好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(所有节点)

wget https://github.com/radondb/xenon/archive/refs/tags/v1.1.4.tar.gz  
tar zxf xenon-1.1.4.tar.gz
cd xenon-1.1.4
make build
ls bin/  #在xenon/bin下如果创建出xenon、xenoncli命令代表安装成功


三、配置Xenon

1、创建Xenon目录,拷贝脚本和配置文件到该目录,便于管理

mkdir /usr/local/xenon/
cp -a /usr/local/src/xenon-1.1.4/conf /usr/local/xenon/
cp -a /usr/local/src/xenon-1.1.4/bin  /usr/local/xenon/


2、修改配置文件

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/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"
	}
}


3、所有节点启动Xenon,如果数据库没启动它会自动拉起来,注意启动Xenon的用户需要和启动MySQL的是同一个,比如都是mysql用户

nohup /usr/local/xenon/bin/xenon -c /usr/local/xenon/conf/xenon.json > /usr/local/xenon/xenon.log 2>&1 &


4、所有节点添加集群成员

xenoncli cluster add 172.20.1.172:8801,172.20.1.171:8801,172.20.1.184:8801    #这里的地址就是配置文件中endpoint的地址,多个成员用逗号分隔


5、查看集群状态,正常情况下会看到有一个LEADER节点且可写,其它为FOLLOWER节点且只读

/usr/local/xenon/bin/xenoncli cluster status

企业微信截图_20211009172308.png


6、查看数据库状态也能看到三个节点的不同

xenoncli cluster mysql  #查看节点角色、从库线程状态
xenoncli cluster gtid  #查看各个节点GTID信息

2.png


7、关闭主库进行测试,可以看到Xenon做了主从切换动作

3.png

版权声明
本站所有文章均为原创,转载请注明出处!小站维护不易,如果对您有所帮助,希望能点击一下站内广告,谢谢!
上一篇:MySQL高可用解决方案(1)MHA集群部署教程
下一篇:MySQL高可用解决方案(3)MGR集群部署教程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

微信二维码