设为首页 加入收藏

TOP

MySQL分片高可用集群之Fabric部署使用(一)
2015-11-12 21:29:24 来源: 作者: 【 】 浏览:11
Tags:MySQL 分片 可用 集群 Fabric 部署 使用

第一步:下载并安装 Fabric


Fabric可以从MySQL官网下载,她属于MySQL Utilites里,官方下载地址是http://dev.mysql.com/downloads/utilities/


我下载的是源码版的,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的功效,


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 读写分离主从配置


fabric的默认配置文件路径为/usr/local/etc/mysql/fabric.cfg,其他安装方法会是/etc/mysql/fabric.cfg(其他系统根据自己情况配置)因此为了方便后面的操作,我们还是使用这个配置文件,当然也可以用--config 参数指定配置文件。


fabric.cfg内容如下:


[DEFAULT]


prefix = /usr/local


sysconfdir = /usr/local/etc


logdir = /var/log


# storage 配置的是fabric元数据存储的数据库


[storage]


address = localhost:10000


user = fabric


password = 123456


database = fabric


auth_plugin = mysql_native_password


connection_timeout = 6


connection_attempts = 6


connection_delay = 1


?


[servers]


user = fabric


password = 123456


backup_user = fabric_backup


backup_password = secret


restore_user = fabric_restore


restore_password = secret


unreachable_timeout = 5


?


# fabric对外的协议,这里是xmlrpc协议


[protocol.xmlrpc]


address = localhost:32274


threads = 5


user = admin


password = 123456


disable_authentication = yes


realm = MySQL Fabric


ssl_ca =


ssl_cert =


ssl_key =


?


# fabric对外的协议,这里是mysql协议,能用mysql连接,但是不能跟普通数据库一样操作


[protocol.mysql]


address = localhost:32275


user = admin


password = 123456


disable_authentication = yes


ssl_ca =


ssl_cert =


ssl_key =


?


[executor]


executors = 5


?


[logging]


level = INFO


url = file:///var/log/fabric.log


?


[sharding]


mysqldump_program = /usr/bin/mysqldump


mysqlclient_program = /usr/bin/mysql


?


[statistics]


prune_time = 3600


?


[failure_tracking]


notifications = 300


notification_clients = 50


notification_interval = 60


f

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇解决MySQL Slave同步问题 下一篇MySQL与MariaDB 传统主从集群配置

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: