mysql fabric 切换_Mysql Fabric实现学习笔记

MySQL Fabric提供了高可用性和数据分片的管理功能,通过监控和自动故障转移来确保服务稳定性。系统支持扩展的MySQL连接器,采用XML-RPC协议。在分片方面,支持HASH和RANGE两种分片方式。Fabric使用Python编写,包含用于创建、管理和维护分片的命令行工具。安装Fabric需要MySQL 5.6.10+、Python 2.6+和特定版本的Python或J连接器。安装过程涉及创建管理用户、配置文件以及初始化persister。

Mysql Fabric用来管理mysql服务,提供扩展性和容易使用的系统,管理mysql分片和高可用部署(当前实现了两个特性:高可用和使用数据分片的横向扩展,能单独使用或结合使用这两个特性。)。

架构图:

e2da0cb0c00daedd8916669bc3884e4f.png

应用请求一个扩展的mysql连接器版本,使用XML-RPC协议访问Fabric,当前可以使用python和J连接器。Fabric管理启动

GTIDs(全局事务标识)的mysql集合,检查和维护服务器之间的一致性。集合中的服务器叫高可用组。不属于Fabric高可用组的成员实例,叫备用存储(backing store)。

Fabric组织服务器在一个组(叫高可用组),管理不同分片或简单提供高可用。例如如果使用标准异步复制,Fabric可以配置自动监控mysql服务状态。如果组中当前master错误,组中有一个服务器能变成master,它选择一个新的服务器做为master。

除了高可用操作如故障转移和切换,Fabric也允许分片操作,如分片创建和移除。

高可用和数据分片在两个层实现:

1、 mysqlfabric进程处理任何管理请求,接收通过mysqlfabric命令行接口或其他支持XML/RPC接口的进程的管理任务。当使用HA特 性,该进程能监控master服务器,当master故障时能进行故障恢复,提升一个slave为新的master。mysql服务器的状态存储在 state store(一个mysql数据库实例),mysqlfabric进程也复制给连接器提供存储路由信息;

2、 应用代码使用mysql连接器访问数据库,从特定程序语言转换指令到Mysql wire protocol,与mysql服务器进程进行通信。Fabric-aware连接器存储从mysql fabric取来的路由信息缓存,使用这些信息发送事务或查询到正确的mysql服务器。当前支持Fabric-aware mysql连接器的有PHP、python和Java。该方法避免了发送所有查询到proxy引起的瓶颈。

高可用:

Mysql Fabric使用HA group管理两个或更多Mysql服务器,在任何时候,仅仅一个服务器为Primary(mysql master),其他服务器为Secondaries(mysql slave)。使用Mysql复制(异步或半同步)允许数据安全的复制。

d331a919916cbd8f1ec16d3e879b5295.png

mysql fabric提供两个HA可用性功能:

1、故障检测和提升

fabric进程监控HA group中的mysql master,如果服务器错误,将选择一个slave并提升到master(HA group中所有其他slave将从新master接收更新);

2、路由数据库请求

当fabric提升一个新的master,更新state store,新的路由信息将收录到连接器,并存储到缓存中。通过这种方式,应用不需要知道拓扑改变和写请求需要发送到不同的目标。

7061002431f825f6b66edb40bf0344b8.png

横向扩展-分片:

当因单个Mysql服务器(或HA group)因存储容量或写性能限制,mysql fabric能使用横向扩展数据库服务,分割数据到多个mysql服务器组。每个组可以是单个Mysql实例或HA group。

e682ca12f229509f01781f2d7abae484.png

由管理员决定数据在服务器之间怎样进行分片,创建分片映射。

fabric支持两种shard key方法:

1、HASH

2、RANGE

当应用需要访问分片数据库,需要指定sharding key,Fabric-aware连接器将应用正确的range或hash映射和路由事务到正确分片;

mysql fabric能分离一个存在的分片到两个新的分片和更新state store,同时缓存路由数据到连接器。同时也支持从一个HA group移动分片到另外一个mysql服务组。

bf9c87eadf2361011dd16c2871d3cf2b.png

一个单事务或查询仅仅访问到单个shard,重要的选择shard keys基于理解数据和应用访问模式。

global tables写到'global group',任何附加或改变到这些表的数据将自动复制到所有其他组。模式改变也属于global group,复制到所有其他服务器,确保一致性。

f4dac201697d50b52ed2cc8400af8934.png

分片架构图:

1d8bd81015b8f508da8494f4b08bdfef.png

Fabric使用python语言编写,包括一个特殊的库实现所有功能。与Fabric交互,一个特殊的工具mysqlfabric提供一套命令,使用它创建和管理组,定义和维护分片等。

Fabric前提需求:

1、Mysql server版本>= 5.6.10,需要支持GTID;

2、Python版本 >=   2.6;

3、python连接器 >=   1.2.1,J连接器 >=   5.1.27;

4、一个mysql实例(mysql版本必须为5.6或以上版本)用于安装backing store,该服务不是Fabric HA组的成员;

5、应用利用Fabric,必须有一个Fabric-aware连接器安装在运行应用的系统上;

安装Mysql Fabric:

环境:

cec38c5cb8e88b55b3c702c6beef33ea.png

下载Fabric链接:

下载页面:

安装:

配置Mysql Fabric:

1、需要创建一个账号访问backing store,用户账号对数据库fabric必须有完全权限:

要保证用户root@'%'有with grant option授权,不然不能再给其他用户进行授权。

172.17.42.1为运行Fabric Node的服务器IP地址,根据实际情况进行替换,账号和密码也根据实际情况进行替换。

2、对fabric进行管理的所有mysql服务器,需要对所有数据库创建拥有完全权限的用户,Mysql Fabric使用同样的用户帐户访问到所有Mysql服务器进行管理:

建议不要使用root,为fabric创建单独的账号。

3、修改fabric配置文件:

默认配置文件:/usr/local/etc/mysql/fabric.cfg

在[storage]段设置backing store的用户账号和密码;

详细配置文件如下:

4、State store创建fabric数据库和相关表:使用以上授权用户

如果xmlrpc密码没有设置,将提示进行设置。

如果数据库已经存在,将报以下错:

[INFO] 1409095063.460048 - MainThread - Initializing persister: user (fabric), server (172.17.0.49:3306), database (fabric).

Error: ("Command (CREATE DATABASE fabric, ()) failed: 1007 (HY000): Can't create database 'fabric'; database exists", 1007)

5、查看创建的表:

6、开启和停止mysql fabric Nodes:

使用mysqlfabric命令开启和停止mysql fabric节点。

打印日志到标准输出,监听在[protocol.xmlrpm]段定义的端口。放置fabric到后台,使用--daemonize选项(

mysqlfabric manage start --daemonize),将打印日志到syslog(配置文件默认定义在/var/log/fabric.log ).

查看启动的xmlrpm监听端口:

停止fabric:

日志:

[INFO] 1409095626.823267 - XML-RPC-Session-1 - Executor has stopped.

[INFO] 1409095626.823651 - XML-RPC-Session-1 - Fabric node stopped.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值