Welcome 微信登录

首页 / 数据库 / MySQL / MySQL分片高可用集群之Fabric部署使用

Fabric是Oracle公司开发的既有分片又有读写分离的MySQL集群管理工具,虽然个人觉得目前版本还有很多缺陷,但应该会逐步完善,将来会是一个不错的工具。第一步:下载并安装 FabricFabric可以从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的功效,
作用地址端口数据文件路径配置文件路径 
Fabric元数据库localhost10000/dev/shm/data/fa00fabric/fa00.cnf 
业务数据库 1localhost10011/dev/shm/data/fa11fabric/fa11.cnf 
localhost10012/dev/shm/data/fa12fabric/fa12.cnf
TIP:由于我在一台电脑上启动了很多数据库,因此将数据文件都放在了内存硬盘中,我的机器默认有的是/dev/shm,其他的机器根据会有所不同,如/run/shm等,这个路径选择无关紧要,只要事先创建父目录。因为使用内存硬盘,MySQL自身的内存需求降低,我降低了MySQL需要的内存使用量,这个也根据自己的情况选择。注:生产环境不可这样配置。主从数据库部署可以参考文章: http://www.linuxidc.com/Linux/2015-10/124420.htm和 http://www.linuxidc.com/Linux/2015-10/124421.htm下面我们还是先修改配置文件,需要修改的内容如下:(以fa00.cnf举例)# 请自行调整前面6行的数字,每个数据库都不能相同,这里是改了最后两个00对应的数字。[client]port            = 10000socket          = /tmp/fa00.sock [mysqld]port            = 10000socket          = /tmp/fa00.sockdatadir        = /dev/shm/data/fa00server-id      = 10000user            = lyw # 主从复制相关log-bin=mysql-bingtid-mode              = onlog-slave-updates      = trueenforce-gtid-consistency= true# 文件、内存大小,节约内存。innodb_buffer_pool_size = 32Minnodb_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/bashmkdir -p /dev/shm/datafor 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.sqldone准备好脚本后,执行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/localsysconfdir = /usr/local/etclogdir = /var/log# storage 配置的是fabric元数据存储的数据库[storage]address = localhost:10000user = fabricpassword = 123456database = fabricauth_plugin = mysql_native_passwordconnection_timeout = 6connection_attempts = 6connection_delay = 1 [servers]user = fabricpassword = 123456backup_user = fabric_backupbackup_password = secretrestore_user = fabric_restorerestore_password = secretunreachable_timeout = 5 # fabric对外的协议,这里是xmlrpc协议[protocol.xmlrpc]address = localhost:32274threads = 5user = adminpassword = 123456disable_authentication = yesrealm = MySQL Fabricssl_ca =ssl_cert =ssl_key = # fabric对外的协议,这里是mysql协议,能用mysql连接,但是不能跟普通数据库一样操作[protocol.mysql]address = localhost:32275user = adminpassword = 123456disable_authentication = yesssl_ca =ssl_cert =ssl_key = [executor]executors = 5 [logging]level = INFOurl = file:///var/log/fabric.log [sharding]mysqldump_program = /usr/bin/mysqldumpmysqlclient_program = /usr/bin/mysql [statistics]prune_time = 3600 [failure_tracking]notifications = 300notification_clients = 50notification_interval = 60failover_interval = 0detections = 3detection_interval = 6detection_timeout = 1prune_time = 3600 [connector]ttl = 1
配置好后,需要初始化fabric的元数据
 $ mysqlfabric manage setup。。。。。。Finishing initial setup=======================Password for admin user is not yet set.Password for admin/xmlrpc:                这里需要设置admin的密码Repeat Password:                          重复输入密码Password set.Password set.这时fa00这个数据库已经有了fabric的元数据,我们可以用mysql客户端查看。然后启动$ mysqlfabric manage start
自此虽然启动了fabric,但是还没有和前面配置的后两个业务数据库产生联系,接下来我们需要用命令行建立联系。我先看一下mysqlfabric的分组相关帮助,$ mysqlfabric help groupCommands available in group "group" are:    group activate group_id  [--synchronous]    group description group_id  [--description=NONE] [--synchronous]    group deactivate group_id  [--synchronous]    group create group_id  [--description=NONE] [--synchronous]    group remove group_id server_id  [--synchronous]    group add group_id address  [--timeout=NONE] [--update_only] [--synchronous]    group health group_id     group lookup_servers group_id  [--server_id=NONE] [--status=NONE] [--mode=NONE]    group destroy group_id  [--synchronous]    group demote group_id  [--update_only] [--synchronous]    group promote group_id  [--slave_id=NONE] [--update_only] [--synchronous]    group lookup_groups  [--group_id=NONE]
我们首先需要创建一个组group-1:$ mysqlfabric group create group-1然后将两个业务数据库10011和10012放入这个组中:$ mysqlfabric group add group-1 127.0.0.1:10011$ mysqlfabric group add group-1 127.0.0.1:10012
然后可以查看这时group-1这个组的状态$ mysqlfabric group lookup_servers group-1Fabric UUID:  5ca1ab1e-a007-feed-f00d-cab3fe13249eTime-To-Live: 1                         server_uuid        address    status      mode weight------------------------------------ --------------- --------- --------- ------d4919ca2-754a-11e5-8a5e-34238703623c 127.0.0.1:10011 SECONDARY READ_ONLY    1.0d6597f06-754a-11e5-8a5e-34238703623c 127.0.0.1:10012 SECONDARY READ_ONLY    1.0从status 和 mode 这两个字段可以看出,这个时候刚加入的两个服务器还没有正式生效,都是作为从库只读的身份,两个库还没有建立实质的联系,我们需要将其中一个数据库提升为可写的主:$ mysqlfabric group promote group-1 $ mysqlfabric group lookup_servers group-1Fabric UUID:  5ca1ab1e-a007-feed-f00d-cab3fe13249eTime-To-Live: 1                        server_uuid        address    status      mode weight------------------------------------ --------------- --------- ---------- ------d4919ca2-754a-11e5-8a5e-34238703623c 127.0.0.1:10011 SECONDARY  READ_ONLY    1.0d6597f06-754a-11e5-8a5e-34238703623c 127.0.0.1:10012  PRIMARY READ_WRITE    1.0用promote命令提升后,其中一台会被提升为主数据库,其他的都为从。主从也可以通过mysql客户端查看,在从库执行下面的命令显示如下,主库执行则没有信息mysql> show slave status G;*************************** 1. row ***************************              Slave_IO_State: Waiting for master to send event                  Master_Host: 127.0.0.1                  Master_User: fabric                  Master_Port: 10012                Connect_Retry: 60              Master_Log_File: mysql-bin.000001          Read_Master_Log_Pos: 151              Relay_Log_File: lyw-hp-relay-bin.000002                Relay_Log_Pos: 361        Relay_Master_Log_File: mysql-bin.000001            Slave_IO_Running: Yes            Slave_SQL_Running: Yes                          。。。。。。
至此主从方式以基本可用,我们迫不及待地想要尝试下客户端如何使用了。官方提供python和java两种客户的,因此如果用Fabric,业务语言最好是这两种。更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2015-10/124419p2.htm
  • 1
  • 2
  • 下一页
MySQL分片高可用集群之Cobar部署使用MySQL与MariaDB 传统主从集群配置相关资讯      Fabric  MySQL高可用集群  MySQL分片高可用集群 
  • 基于Keepalived搭建MySQL的高可用  (06月27日)
  • Fabric批量远程执行操作  (06/15/2015 17:49:39)
  • 使用Fabric部署网站应用  (11/01/2014 11:12:51)
  • MySQL分片高可用集群之Cobar部署使  (10/22/2015 20:16:11)
  • Fabric自动化运维工具实现远程SSH  (02/02/2015 14:08:30)
  • CentOS/Ubuntu下安装Python-Pip和  (11/01/2014 10:44:33)
本文评论 查看全部评论 (0)
表情: 姓名: 字数