MySQL Fabric
是一个用于管理 MySQL 服务器群的可扩展框架。该框架实现了两个特性 — 高可用性 (HA) 以及使用数据分片的横向扩展。这两个特性既可以单独使用,也可以结合使用。
-
环境:
-
安装MySQL Fabric
-
配置MySQL Fabric
-
MySQL Fabric 安装管理数据库fabric
-
启动MySQL Fabric
-
创建Fabric高可用组mysql_ha
-
添加mysql_ha组添加节点
-
自动推举一个节点为主库
-
查看mysql_ha组节点服务器
-
测试mysql_ha组高可用
-
恢复192.168.1.101并设置为从库
-
查看mysql_ha组状态
-
使用python连接MySQL Fabric
-
运行python-fabric.py
-
使用PHP连接MySQL Fabric
-
MySQL Fabric 常用操作
环境:
名称 | IP | 端口 | 软件 | 备注 |
MySQL Fabric | 192.168.1.100 | 3306 | MySQL5.6.24、mysql-utilities-1.5.4 | Fabric管理 |
MySQL主服务器 | 192.168.1.101 | 3306 | MySQL5.6.24 | 节点 |
MySQL从服务器 | 192.168.1.102 | 3306 | MySQL5.6.24 | 节点 |
注:Fabric基于MySQL GTID主从复制,需要安装MySQL 5.6以上版本。
GTID特点是很方便在1主多从环境下,根据GITD号方便切换主从关系。
详细请参考官方文档
http://dev.mysql.com/doc/mysql-utilities/1.6/en/fabric.html
主从复制安装部署忽略
安装MySQL Fabric
#wget http://mirrors.sohu.com/mysql/MySQLGUITools/mysql-utilities-1.5.4.tar.gz
#tar zxvf mysql-utilities-1.5.4.tar.gz
#cd mysql-utilities-1.5.4
#python ./setup.py build
#python ./setup.py install
注:Fabric只需安装在192.168.1.100服务器上
配置MySQL Fabric
建立管理账号
#mysql>grant all on *.* to ‘fabric’@’192.168.1.100’identified by ‘pass’;
注:此账号需要在192.168.1.100、192.168.1.101、192.168.1.102服务器创建。
修改MySQL配置文件(my.cnf)
gtid-mode = on
enforce-gtid-consistency = true
log_slave_updates = true
注:需要修改192.168.1.101、192.168.1.102服务器
修改MySQL Fabric 配置文件
#vi /etc/mysql/fabric.cfg
[storage]
address = 192.168.1.100:3306
user = fabric
password = pass
database = fabric
auth_plugin = mysql_native_password
connection_timeout = 6
connection_attempts = 6
connection_delay = 1
[servers]
user = fabric
password = pass
unreachable_timeout = 5
MySQL Fabric 安装管理数据库fabric
#mysqlfabric manage setup
[INFO] 1408115689.486792 – MainThread -Initializing persister: user (fabric), server (192.168.1.100:3306), database(fabric).
Finishing initial setup
=======================
Password for admin user is not yet set.
Password for admin/xmlrpc:
Repeat Password:
Password set.
安装期间需要设置fabric管理密码。
安装完成后。会生成一个fabric管理数据库
启动MySQL Fabric
#mysqlfabric manage start –daemonize
注:参数—daemonize 为后台启动
创建Fabric高可用组mysql_ha
#mysqlfabric group create mysql_ha
添加mysql_ha组添加节点
#mysqlfabric group add my_group192.168.1.101:3306
#mysqlfabric group add my_group192.168.1.102:3306
自动推举一个节点为主库
#mysqlfabric group promote mysql_ha
查看mysql_ha组节点服务器
#mysqlfabric group lookup_servers mysql_ha
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
——————————————————– ——— ———- ——
1135f441-f867-11e4-9bfc-000c296cbb9a192.168.1.101:3306 PRIMARY READ_WRITE S 1.0
13f32739-f867-11e4-9bfc-000c2957c804192.168.1.102:3306 SECONDARY READ_ONLY 1.0
测试mysql_ha组高可用
将192.168.1.101 主库关闭。在查看mysql_ha组节点服务器状态
#mysqlfabric group lookup_servers mysql_ha
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
——————————————————– ——— ———- ——
1135f441-f867-11e4-9bfc-000c296cbb9a192.168.1.101:3306 FAULTY READ_WRITE 1.0
13f32739-f867-11e4-9bfc-000c2957c804192.168.1.102:3306 PRIMARY READ_WRITE S 1.0
注:Fabric自动将从库192.168.1.102设置为主库,主库192.168.1.101状态为FAULTY
恢复192.168.1.101并设置为从库
#mysqlfabric server set_status 1135f441-f867-11e4-9bfc-000c296cbb9a spare
#mysqlfabric server set_status 1135f441-f867-11e4-9bfc-000c296cbb9asecondary
查看mysql_ha组状态
#mysqlfabric group lookup_servers mysql_ha
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
——————————————————– ——— ———- ——
1135f441-f867-11e4-9bfc-000c296cbb9a192.168.1.101:3306 SECONDARY READ_ONLY 1.0
13f32739-f867-11e4-9bfc-000c2957c804192.168.1.102:3306 PRIMARY READ_WRITE S 1.0
注:192.168.1.101状态已从FAULTY变为 SECONDARY
使用python连接MySQL Fabric
#vi python-fabric.py
#!/usr/bin/env python
import sys
import mysql.connector
from mysql.connector import fabric
def main():
try:
conn = mysql.connector.connect(
fabric ={"host":"localhost","port":32274,"username":"admin","password":"pass"},
user = 'fabric',database = 'test',password = 'fabric',autocommit = True
)
exceptException,e:
print e
sys.exit(1)
else:
conn.set_property(mode=fabric.MODE_READWRITE,group="mysql_ha")
cur = conn.cursor()
cur.execute(
"CREATE TABLE IF NOT EXISTS fabrictest ("
" sub_no INT,"
" first_name CHAR(40),"
" last_name CHAR(4)"
")"
)
finally:
conn.close()
if __name__ == '__main__':
main()
注:注意修改脚本里面参数。
运行python-fabric.py
#python python-fabric.py
运行成功会在mysql主服务器(192.168.1.101)test数据库里创建fabrictest表。
mysql> show tables from test;
+——————–+
| Tables_in_test |
+——————–+
| fabrictest |
+——————–+
使用PHP连接MySQL Fabric
请参考PHP官方说明
http://php.net/manual/zh/mysqlnd-ms.quickstart.mysql_fabric.php
注:PHP目前对MySQLFabric 支持不太好。MySQL官方文档也没介绍PHP如何连接MySQL Fabric。
MySQL Fabric 常用操作
创建组
mysqlfabric group create my_group
添加节点
mysqlfabric group add my_group192.168.223.128:3306
mysqlfabric group add my_group192.168.223.135:3306
删除
注:不能删除主数据库节点,要先降级
mysqlfabric group demote my_group
mysqlfabric group remove my_group1135f441-f867-11e4-9bfc-000c296cbb9a
自动推举一个主
mysqlfabric group promote my_group
手动设置一个主
mysqlfabric group promote my_group–slave_id=1135f441-f867-11e4-9bfc-000c296cbb9a –update_only
自动切换主从
mysqlfabric group activate my_group
禁用自动切换主从
mysqlfabric group deactivate my_group
设置节点状态primary,secondary,spare,faulty
mysqlfabric server set_status 13f32739-f867-11e4-9bfc-000c2957c804 spare
MySQL服务器恢复,如果MySQL从服务器处于faulty(故障)状态。需要先设置为spare,在设置为secondary (从)
mysqlfabric group demote my_group #将my_group组降级
mysqlfabric server set_status 1135f441-f867-11e4-9bfc-000c296cbb9a spare
mysqlfabric server set_status 13f32739-f867-11e4-9bfc-000c2957c804secondary
MySQL服务器恢复,如果MySQL主服务器处于faulty(故障)状态。需要先设置为spare,在手动设置主
mysqlfabric group demote my_group #将my_group组降级
mysqlfabric server set_status 1135f441-f867-11e4-9bfc-000c296cbb9a spare,
mysqlfabric group promote my_group–slave_id=1135f441-f867-11e4-9bfc-000c296cbb9a –update_only
查看
mysqlfabric group lookup_servers my_group
mysqlfabric group health my_group
启动mysqlfabric
mysqlfabric manage start
后台启动mysqlfabric
mysqlfabric manage start –daemonize
停止mysqlfabric
mysqlfabric manage stop
查看mysqlfabric 状态
mysqlfabric manage ping
原文:https://www.chinasa.net/archives/155.html
原创文章,作者:wubin,如若转载,请注明出处:http://www.178linux.com/17384