MySQL Fabric 安装部署

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号方便切换主从关系。

mysql_f.png

详细请参考官方文档

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

(2)
wubinwubin
上一篇 2016-06-01
下一篇 2016-06-03

相关推荐

  • mysql数据库及表的管理

    MySQL中字符大小写: 1、SQL关键字及函数名不区分字符大小写; 2、数据库、表及视图名称的大小区分与否取决于低层OS及FS 3、存储过程、存储函数及事件调度器的名字不区分大小写,但触发器区分; 4、表别名区分大不写; 5、对字段中的数据,如果字段类型为Binary类型,则区分大小写;非Binary不区分大小写; 数据库: CREATE {DATABAS…

    Linux干货 2015-06-01
  • SQL优化大全

    1. 优化SQL步骤 1. 通过 show status和应用特点了解各种 SQL的执行频率        通过 SHOW STATUS 可以提供服务器状态信息,也可以使用 mysqladmin extende d-status 命令获得。 SHOW STATUS 可以根据需要显示 session 级别的统计结果和 g…

    Linux干货 2015-04-13
  • Redis 3.0.0正式版发布,全新的分布式高可用数据库

    Redis 3.0.0 正式版终于到来了!最重要的新特性是集群(Redis Cluster),提供Redis功能子集(比如不支持多数据库)的分布式、容错的实现(最多支持1000结点)。   Salvatore 'antirez' Sanfilippo在Google Groups里表示,这是Redis的重要时刻。“我相信今天的Redis 3.0…

    Linux干货 2015-04-03
  • mysql or条件可以使用索引而避免全表

    在某些情况下,or条件可以避免全表扫描的。 1 .where 语句里面如果带有or条件, myisam表能用到索引, innodb不行。 1)myisam表:  CREATE TABLE IF NOT EXISTS `a` (   `id` int(1)&nb…

    Linux干货 2015-04-13
  • 高效运维最佳实践(03):Redis集群技术及Codis实践

    前言 诚如开篇文章所言,高效运维包括管理的专业化和技术的专业化。前两篇我们主要在说些管理相关的内容,本篇说一下技术专业化。希望读者朋友们能适应这个转换,谢谢。 互联网早在几年前就已进入Web 2.0时代,对后台支撑能力的要求,提高了几十倍甚至几百倍。在这个演化过程中,缓存系统扮演了举足轻重的角色。 运维进化到今天,已经不是重复造轮子的时代。所以,我们在架构优…

    Linux干货 2015-04-03
  • 小型网站MYSQL问题二:Percona Xtrabackup实现数据库备份和恢复

    故事背景:前面大胆的选择了innodb,接下来就要考虑数据库的备份和恢复。俗话说“常在河边走,哪能不湿鞋“,自从接触数据这块,使我一直对它保持敬畏之心。在这里使用了percona公司的xtrabckup工具来实现数据库备份和恢复。操作步骤记录如下: 1、安装软件仓库(不要问我为什么不用源码安装,好吧,其实我懒。) wget https://www.…

    数据库运维 2015-12-19