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號方便切換主從關系。
詳細請參考官方文檔
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