MySQL分片高可用集群之Fabric部署使用

Fabric是Oracle公司开发的既有分片又有读写分离的MySQL集群管理工具,虽然个人觉得目前版本还有很多缺陷,但应该会逐步完善,将来会是一个不错的工具。

第一步:下载并安装 Fabric

Fabric可以从MySQL官网下载,她属于MySQL Utilites里,官方下载地址是

我下载的是源码版的,mysql-utilities-1.5.6.zip,因为是Python所写,所以安装跟C语言的不同:

$ unzip mysql-utilities-1.5.6.zip

$ cd mysql-utilities-1.5.6/

$ python setup.py build

$ sudo python setup.py install

安装好后,原先的python脚本去掉了py后缀,默认放在/usr/local/bin/目录下,可直接执行。

第一步:部署 MySQL5.6 多实例

运行Fabric前,我们要先准备若干各数据库,根据我们的需要配置不同数量的数据库,我们先部署基本的读写分离的主从方式,Fabric的需要的利用MySQL的GTID特性进行主从复制,因此需要MySQL5.6以上版本,另外由于MariaDB的GTID特性跟MySQL不同,Fabric不支持MariaDB,使用MariaDB的话有报错。所以只能用MySQL5.6以上版本。

我们至少需要部署3个MySQL实例才能看到Fabric的功效,

作用   地址   端口   数据文件路径   配置文件路径      
Fabric元数据库   localhost   10000   /dev/shm/data/fa00   fabric/fa00.cnf      
业务数据库 1   localhost   10011   /dev/shm/data/fa11   fabric/fa11.cnf      
localhost   10012   /dev/shm/data/fa12   fabric/fa12.cnf  

TIP:由于我在一台电脑上启动了很多数据库,因此将数据文件都放在了内存硬盘中,我的机器默认有的是/dev/shm,其他的机器根据会有所不同,如/run/shm等,这个路径选择无关紧要,只要事先创建父目录。因为使用内存硬盘,MySQL自身的内存需求降低,我降低了MySQL需要的内存使用量,这个也根据自己的情况选择。注:生产环境不可这样配置。

主从数据库部署可以参考文章:

下面我们还是先修改配置文件,需要修改的内容如下:(以fa00.cnf举例)

# 请自行调整前面6行的数字,每个数据库都不能相同,这里是改了最后两个00对应的数字。

[client]

port            = 10000

socket          = /tmp/fa00.sock

[mysqld]

port            = 10000

socket          = /tmp/fa00.sock

datadir        = /dev/shm/data/fa00

server-id      = 10000

user            = lyw

# 主从复制相关

log-bin=mysql-bin

gtid-mode              = on

log-slave-updates      = true

enforce-gtid-consistency= true

# 文件、内存大小,节约内存。

innodb_buffer_pool_size = 32M

innodb_log_file_size    = 5M

修改好3个文件配置文件 fa00.cnf,fa11.cnf,fa12.cnf 后,我们初始化数据,并且启动,这次我们采用批量操作的方式,减少工作量。在mysql目录下创建如下脚本init_start.sh和初始化数据库文件fabric.sql,并执行init_start.sh,即可创建所有数据库,并启动。

fabric.sql 内容为:

use mysql;

delete from user where user='';

flush privileges;

grant all on *.* to 'fabric'@'%' identified by '123456';

create database lyw;

reset master;

init_start.sh 内容为:

#! /bin/bash

mkdir -p /dev/shm/data

for cnf in `ls fabric/*.cnf`

do

scripts/mysql_install_db --defaults-file=$cnf

bin/mysqld --defaults-file=$cnf &

done

# 等待一下,让mysqld启动完成,

sleep 3

for cnf in `ls fabric/*.cnf`

do

bin/mysql --defaults-file=$cnf -uroot < fabric.sql

done

准备好脚本后,执行init_start.sh即完成所有数据库的初始化和启动工作,可以启动mysql客户端检查下数据库是否都初始化好。Fabric不需要主动执行change master to这行sql语句来开启主从,而是交由Fabric自身去执行。到此数据库以准备好,接下来开始真正的Fabric配置。

第三步:Fabric 读写分离主从配置

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d43f7e11bd0b62d574a3dd16075536b2.html