Xenon构建MySQL高可用

本文介绍了如何利用Xenon构建MySQL高可用环境,包括Xenon的架构和作用,MySQL的主从复制配置,半同步复制设置,系统配置,Xenon的安装与集群配置,以及故障检测和数据库重建过程。通过Xenon,可以实现自动化的VIP切换和数据库恢复,确保服务的连续性和数据的一致性。
摘要由CSDN通过智能技术生成

目录

1、Xenon 介绍
2、架构环境说明
3、MySQL 安装准备
3.1、MySQL 主从复制搭建
3.2、MySQL 半同步复制配置
3.3、系统配置
3.4、配置 hosts 解析
3.5、各节点配置 ssh 互信
3.5.1、150 配置
3.5.1、151 配置
3.5.1、152 配置
4、xenon 配置准备
4.1、配置 golang 环境
4.2、安装xtrabackup
4.3、安装 xenon
4.4、配置xenon
4.5、开启 xenon 并配置集群
5、检验 xenon 环境
5.1、检测 VIP 切换
5.2、数据库重建
5.2.1、模拟删除主库数据目录
5.2.2、进行数据库重建

1、Xenon 介绍

在这里插入图片描述
https://github.com/radondb/xenon

VIP 就是对外提供服务的IP,比如jdbc配置就是写这个VIP

xenon 架构介绍 ,每个MySQL 节点安装了一个agent ,agent的作用:ping 一下本来MySQL是否存活,然后把本地的gtid 获取出来,写入到local index ,看各节点的local index的gtid 谁大,谁大谁做作为主库。

每个agent 都有一个心跳信息,主库的Leader 和 从库的Follower 的心跳时间是可以配置的,超过了多长时间,就认为主库不存活,然后从节点选举主库。

xenon 为什么要用三节点:其实用了增强半同步架构,最少有一个从节点,给主库ACK响应。两个从节点,就是为了防止,一个从节点挂了,主库不对外工作了。

xenon 的约束

  • 针对金融环境,基于GTID,增强半同步的复制架构。
  • mysql与xenon使用同一个用户启动(例如:都使用mysql用户启动,或都使用root用户启动,正常都使用mysql用户)
  • 要使用mysqld_safe启动mysql

实际 xenon 环境使用:

  • 如果需要读写分离可以结合 ProxySQL
  • xenon 做高可用

2、架构环境说明

在这里插入图片描述

3、MySQL 安装准备

注:MySQL 8.0.19 安装省略

3.1、MySQL 主从复制搭建

1、基于 GTID+ROW 主从复制架构
2、参数设置:(从库操作151,152,设置一下参数)

set global super_only=1;
set global read_only=1;

3、配置成主从:(151和152 change 到 150)

change master to \
master_host='10.0.0.150', \
master_user='repl', \
master_password='123456', \
master_port=3306, \
master_auto_position=1;

注:这里配置主从复制省略

3.2、MySQL 半同步复制配置

1、安装插件(所有机器150,151,152)

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

2、启动半同步(所有机器)

set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_timeout=2147483648;
set global rpl_semi_sync_slave_enabled=1;

注:其实这里只需要所有节点安装半同步插件,并不需要启动半同步。xenon 会自动配置半同步

3.3、系统配置

1、修改三台主机的mysql账号指定shell 为/bin/bash ,并改密码(三台机密码改成一样):

# 修改环境变量,三台机器都需要 如下相同操作
[root@mysql-150 ~]# chsh mysql
Changing shell for mysql.
New shell [/sbin/nologin]: /bin/bash
Shell changed.

# 修改 mysql 用户密码,这里密码我设置都是mysql
shell# passwd mysql

2、修改 mysql 环境变量:从其它普通账号复制 .bash* 到mysql 用户家目录(三台机器操作)

shell# mkdir /home/mysql
shell# cp /root/.bash* /home/mysql/
shell# chown -R mysql:mysql /home/mysql

3、添加mysql账号的sudo权限 (所有机器操作)

# visudo
mysql   ALL=(ALL)       NOPASSWD: /usr/sbin/ip

3.4、配置 hosts 解析

所有机器配置

vim /etc/hosts
10.0.0.150  mysql-150
10.0.0.151  mysql-151
10.0.0.152  mysql-152

3.5、各节点配置 ssh 互信

3.5.1、150 配置

[root@mysql-150 ~]# su - mysql

[mysql@mysql-150 ~]$ pwd
/home/mysql

[mysql@mysql-150 ~]$ ssh-keygen 

[mysql@mysql-150 ~]$ cd .ssh

[mysql@mysql-150 .ssh]$ ls
id_rsa  id_rsa.pub
#id_rsa 私钥文件
#is_rsa.pub 公钥文件

[mysql@mysql-150 .ssh]$ cat id_rsa.pub > authorized_keys

[mysql@mysql-150 .ssh]$ chmod 600 /home/mysql/.ssh/*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寰宇001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值