Mysql Fabric 实现 Windows环境 Mysql HA 高可靠
背景
由于之前我们都是通过keepalived 实现linux下的mysql高可靠,但keepalived不支持windows环 境,所以找到Mysql Fabric 来实现 Windows环境 Mysql HA 高可靠。
一、环境准备
- Mysql (至少需要三个Mysql实例)这里我选择 mysql-5.7.24-winx64.zip
- Mysql Fabric 我选择 mysql-utilities-1.5.5-winx64.msi
- 可能需要Visual C++ 2013环境 及 python 环境
二、Mysql win10单机多实例安装
由于是测试方案可行性我采用单机多实例方案创建三个mysql实例,实际生产环境应采用多台服务器实现。
服务名 | 端口号 |
---|---|
Mysql-3310 | 3310 |
Mysql-3320 | 3320 |
Mysql-3330 | 3320 |
Mysql-3340 | 3340 |
1、 将mysql压缩包解压至本地目录,为避免权限问题这里选择G盘,解压后目录如下:
在该目录下新建my.ini 文件并复制一下内容,注意 根据实际情况修改端口号和目录地址以及server_id
[mysqld]
server_id =40
log-bin
gtid-mode=ON
enforce-gtid-consistency
log_slave_updates
#设置mysql端口号
port = 3340
basedir=G:\1HA_Mysql\mysql-3340\mysql-5.7.24
datadir=G:\1HA_Mysql\mysql-3340\mysql-5.7.24\data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
#设置mysql端口号
port = 3340
default-character-set=utf8
2、设置mysql 服务
cmd 管理员权限进入mysql bin 目录,执行以下命令
# Mysql5.7.24-3340 为服务名根据需要自己起
mysqld –install Mysql5.7.24-3340
可以看到服务创建成功,这时候打开服务管理就可以看到服务了
此时还不能立即启动服务,会报如下错误:
3、配置注册表
运行regedit打开注册表找到
HEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/Mysql5.7.24-3340
可以看到ImagePath 路径并不正确,如果之前装过mysql的话这个路径会默认为第一个mysql的路径,将路径修改为这缺路径如下
“G:\1HA_Mysql\mysql-3340\mysql-5.7.24\bin\mysqld” Mysql5.7.24-3340
4、初始化mysql
cmd 进入mysql bin 目录执行如下命令,初始化需要1分钟左右耐心等待
#注意修改目录地址
mysqld --initialize --datadir=G:\1HA_Mysql\mysql-3340\mysql-5.7.24-winx64\data
5、启动mysql
cmd 进入mysql bin 目录执行如下命令
net start Mysql5.7.24-3340
三、Mysql Fabric 安装
Mysql Fabric 1.5.5 版本被打包在 mysql-utilities-1.5.5-winx64.msi 中,所以我们只需要安装mysql-utilities 就可以了
1、配置Mysql,创建Mysql Fabric 所需用户
# 创建用户
CREATE USER 'fabric'@'localhost' IDENTIFIED BY 'root';
GRANT ALL ON fabric.* TO 'fabric'@'localhost';
2、配置Mysql Fabric
Mysql Fabric 的配置文件在mysql-utilities安装目录下 :
MySQL Utilities\etc\mysql\fabric.cfg
[DEFAULT]
prefix = G:\1HA_Mysql\MySQL Utilities
sysconfdir = G:\1HA_Mysql\MySQL Utilities\etc\mysql
logdir = G:\1HA_Mysql\MySQL Utilities\log
[storage]
address = localhost:3310
user = fabric
password = 123456
database = fabric
auth_plugin = mysql_native_password
connection_timeout = 6
connection_attempts = 6
connection_delay = 3
[servers]
user = fabric
password = 123456
backup_user = fabric
backup_password = 123456
restore_user = fabric
restore_password = 123456
unreachable_timeout = 20
[protocol.xmlrpc]
address = 192.168.9.24:32274
threads = 5
user = admin
password = 123456
disable_authentication = no
realm = MySQL Fabric
ssl_ca =
ssl_cert =
ssl_key =
[protocol.mysql]
address = 192.168.9.24:32275
user = admin
password = 123456
disable_authentication = no
ssl_ca =
ssl_cert =
ssl_key =
[executor]
executors = 5
[logging]
level = DEBUG
url = G:\1HA_Mysql\MySQL Utilities\log\fabric.log
[sharding]
mysqldump_program = G:/1HA_Mysql/MySQL Utilities/log/bin/mysqldump
mysqlclient_program = G:/1HA_Mysql/MySQL Utilities/log/bin/mysql
prune_limit = 10000
[statistics]
prune_time = 3600
[failure_tracking]
notifications = 300
notification_clients = 50
notification_interval = 60
failover_interval = 0
detections = 3
detection_interval = 6
detection_timeout = 1
prune_time = 3600
[connector]
ttl = 1
3、初始化mysql fabric 管理节点, 管理节点就是[storage] 配置的数据库
mysqlfabric manage setup --param=storage.user=fabric --param=storage.password=fabric
初始化成功后可以看到数据生成如下数据库
4、配置数据库主从复制
创建用户及授权
CREATE USER 'fabric'@'localhost' IDENTIFIED BY 'fabric';
GRANT ALL ON *.* TO 'fabric'@'localhost';
数据同步复制设置
grant replication slave on *.* to 'fabric'@'localhost';
reset slave;
reset master;
5、创建Mysql Fabric Group
cmd MySQL Utilities 目录下执行以下命令
# 创建组 my_group
mysqlfabric group create my_group
#添加到组 my_group
mysqlfabric group add my_group localhost:3320
mysqlfabric group add my_group localhost:3330
mysqlfabric group add my_group localhost:3340
6、选举主数据库节点
# 自动选举一台数据库作为主数据库
mysqlfabric group promote my_group
7、设置Fabric在主服务器发生故障时,自动进行切换
# 自动选举一台数据库作为主数据库
mysqlfabric group activate my_group
8、 Mysql Fabric 常用命令
# 查看群组状态
mysqlfabric group lookup_servers my_group