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.www58058.com/17384

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

相關推薦

  • MySQL架構

    1.MySQL整體邏輯架構 我們先下圖看看MySQL整體邏輯架構(MySQL’s Logical Architecture)                       圖1  第一層,即最上一層,所包含的服務并不是MySQL所獨有的技術?!?/p>

    Linux干貨 2015-04-13
  • mysql數據庫及表的管理

    MySQL中字符大小寫: 1、SQL關鍵字及函數名不區分字符大小寫; 2、數據庫、表及視圖名稱的大小區分與否取決于低層OS及FS 3、存儲過程、存儲函數及事件調度器的名字不區分大小寫,但觸發器區分; 4、表別名區分大不寫; 5、對字段中的數據,如果字段類型為Binary類型,則區分大小寫;非Binary不區分大小寫; 數據庫: CREATE {DATABAS…

    Linux干貨 2015-06-01
  • 免費翻墻 [精]

    本人在hostus上買了一個國外的vps,花了一上午把Google給做好,可以訪問g.abcdocker.com進行搜索,因為是使用nginx代理進行翻墻。網上的文章也很亂,很不好整理。 可以可以使用g.abcdocker.com上Google查閱資料。(無法觀看視頻) www.abcdocker.com

    2017-06-17
  • 高效運維最佳實踐(03):Redis集群技術及Codis實踐

    前言 誠如開篇文章所言,高效運維包括管理的專業化和技術的專業化。前兩篇我們主要在說些管理相關的內容,本篇說一下技術專業化。希望讀者朋友們能適應這個轉換,謝謝。 互聯網早在幾年前就已進入Web 2.0時代,對后臺支撐能力的要求,提高了幾十倍甚至幾百倍。在這個演化過程中,緩存系統扮演了舉足輕重的角色。 運維進化到今天,已經不是重復造輪子的時代。所以,我們在架構優…

    Linux干貨 2015-04-03
  • MySQL優化大全

     1. 優化SQL   1)通過show status了解各種sql的執行頻率         show status like 'Com_%'        了解 Com_select,Com_in…

    Linux干貨 2015-04-13
  • MySQL/MariaDB數據庫基于SSL實現主從復制

    前言 備份數據庫是生產環境中的首要任務,重中之重,有時候不得不通過網絡進行數據庫的復制,由于MySQL/MariaDB的主從復制是明文傳送的,如果在生產環境中跨網絡傳送,數據的安全性就無法完全保證,為了解決這一問題,我們需要一種安全的方式進行傳送,即基于SSL加密進行數據傳輸。 部署配置 實驗拓撲 實驗環境 系統環境:CentOS6.6 數據庫版本:mari…

    Linux干貨 2015-06-21
欧美性久久久久