Mysql Fabric HA配置測試
MySQL Fabric是Oracle官方推出的原生mysql高可用性系統,它可以簡化管理MySQL資料庫群,它提供兩大特性,一是通過故障檢測和故障轉移功能提供了高可用性,一是通過自動資料分片功能實現可擴充套件性。本文件只說明自動故障轉移-高可用性的實現。
一、測試環境
功能 |
IP |
埠 |
Master |
192.168.247.132 |
3306 |
Slave |
192.168.247.133 |
3306 |
Fabric state store |
192.168.247.4 |
3306 |
Fabric 管理程序 |
192.168.247.4 |
32274 |
系統環境要求如下:
MySQL Servers (version 5.6.10 or later)
·Backing store database server
·Application database servers
Python 2.6 or 2.7
·No support for 3.x yet
python聯結器1.2.1以上
二、下載Fabric
Fabric目前是被打包到了MySQL Utilities中,所以大家下載MySQL Utilities就可以了,下載地址是:,目前版本是:1.5.3,在本例中我們下載的是 mysql-utilities-1.5.3-1.el6.noarch.rpm
Mysql-python聯結器下載地址:http://dev.mysql.com/downloads/connector/python/,本例中我們下載mysql-connector-python-2.0.2-1.el6.noarch.rpm
三、安裝聯結器和MySQL Utilities
rpm包的安裝還是挺簡單的,具體如下:
rpm -ivh mysql-connector-python-2.0.2-1.el6.noarch.rpm
rpm -ivh mysql-utilities-1.5.3-1.el6.noarch.rpm
裝完後執行
mysqlfabric
如果有回顯說明安裝完畢。
四、建立
Backing Store用於儲存整個HA叢集的伺服器等相關配置,它需要一個MySQL例項來儲存這些資訊,這個例項的版本需要跟其它在HA中的MySQL例項版本保持一致,而且必須是5.6.10及更高的版本,我們在本例中選擇192.168.247.4:3306例項來使用。Fabric管理程序和Backing Store例項可以是在兩臺不同的機器,測試中我們共用192.168.247.4。
建立一個帳號來連線Backing Store的MySQL例項,這個帳號需要有對fabric資料庫的管理員級許可權,具體如下:
GRANT ALL ON fabric.* TO [email protected]'%' IDENTIFIED BY '[email protected]';
FLUSH PRIVILEGES;
五、Fabric配置檔案
Fabric配置檔案預設位置是:/etc/mysql/fabric.cfg
修改其中的[storage]部分,具體如下:
[storage]
auth_plugin = mysql_native_password
database = fabric
user = fabric #連線state store例項fabric庫的使用者名稱
address = 192.168.247.4:3306 #指定state store的mysql例項地址和埠
connection_delay = 1 #連續嘗試連線間隔,單位秒
connection_timeout = 6 #連線超時時間,單位秒
password = [email protected] #使用者密碼
connection_attempts = 6 #連線嘗試連線的次數
修改其中的[servers]部分,具體如下:
[servers]
password = [email protected] #連線HA組中例項的使用者密碼
user = fabric #連線HA組中各例項的使用者名稱
修改其中的[protocol.xmlrpc]部分,具體如下:
[servers]
user = admin #管理賬號
address = localhost:32274 #fabric程序的伺服器地址及埠號
password = abc123 #管理賬號密碼
六、填充Backing Store資訊
我們通過執行以下命令來生成fabric資料庫,具體如下:
mysqlfabric manage setup
[INFO] 1421226952.410291 - MainThread - Initializing persister: user(fabric), server (192.168.247.4:3306), database (fabric).
Finishing initial setup
=======================
Password for admin user is not yet set.
Password for admin/xmlrpc:
Repeat Password:
Password set.
Password set.
No result returned
期間會提示Fabric的管理員帳戶admin沒有設定密碼,按提示設定密碼。
連線state store例項可以看到新建立了一個fabfic資料庫及相關儲存配置資訊的表。:
mysql> use fabric;
mysql> show tables;
+-------------------+
| Tables_in_fabric |
+-------------------+
| checkpoints |
| error_log |
| group_replication |
| group_view |
| groups |
| log |
| machines |
| permissions |
| proc_view |
| providers |
| role_permissions |
| roles |
| servers |
| shard_maps |
| shard_ranges |
| shard_tables |
| shards |
| user_roles |
| users |
+-------------------+
七、配置HA中主從MySQL節點帳號
本例中132和133例項是需要做成HA的,它們需要建個管理員許可權的帳號,該賬號將用於fabric連線HA中的各例項,以及用於replication。注意帳號名也要跟fabric state store例項保持一致,本例中需要是fabric,具體如下:
GRANT ALL ON *.* TO [email protected]'192.168.247.%' IDENTIFIED BY '[email protected]';
FLUSH PRIVILEGES;
同時,由於fabric是基於GTID主從複製,所以這些例項中必須要啟用GTID,它們的配置檔案要有這些引數:
log-bin
gtid-mode=ON
enforce-gtid-consistency
log_slave_updates
八、啟動fabric
我們用下面的命令來啟動fabric:
mysqlfabric manage start
[[email protected] Desktop]# mysqlfabric manage start &
[1] 8131
[[email protected] Desktop]# [INFO] 1421227750.407190 - MainThread - Initializing persister: user (fabric), server (192.168.247.4:3306), database (fabric).
[WARNING] 1421227750.428230 - MainThread - Provider error: No module named novaclient.
[INFO] 1421227750.428522 - MainThread - Loading Services.
[INFO] 1421227750.447799 - MainThread - MySQL-RPC protocol server started, listening on localhost:32275
[INFO] 1421227750.467301 - MainThread - Fabric node starting.
[INFO] 1421227750.470832 - MainThread - Starting Executor.
[INFO] 1421227750.470945 - MainThread - Setting 5 executor(s).
[INFO] 1421227750.471722 - Executor-0 - Started.
[INFO] 1421227750.474404 - Executor-1 - Started.
[INFO] 1421227750.477835 - Executor-2 - Started.
[INFO] 1421227750.480265 - Executor-3 - Started.
[INFO] 1421227750.482358 - MainThread - Executor started.
[INFO] 1421227750.485552 - Executor-4 - Started.
[INFO] 1421227750.527671 - MainThread - Starting failure detector.
[INFO] 1421227750.541374 - XML-RPC-Server - XML-RPC protocol server ('127.0.0.1', 32274) started.
[INFO] 1421227750.541887 - XML-RPC-Server - Setting 1 XML-RPC session(s).
[INFO] 1421227750.542572 - XML-RPC-Session-0 - Started XML-RPC-Session.
九、建立HA伺服器組
這個HA伺服器組,用於把參與HA的所有MySQL例項都填加進來:
mysqlfabric group create mygroup
Password for admin:
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid finished success result
------------------------------------ -------- ------- ------
612e53c8-87b7-4e97-b714-ffbe38a977e0 1 1 1
這樣我們就建立了一個組名為mygroup的HA伺服器組。
十、填加HA組的成員
我們首先填加192.168.247.132:3306,具體如下:
mysqlfabric group add mygroup 192.168.247.132:3306
Password for admin:
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid finished success result
------------------------------------ -------- ------- ------
a918fe34-2acd-4868-9689-1080be3e9b69 1 1 1
接下來填192.168.247.133:3306,具體如下:
mysqlfabric group add mygroup 192.168.247.133:3306
Password for admin:
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid finished success result
------------------------------------ -------- ------- ------
97c06a94-10ad-4897-b40e-5a3e9e56bfa2 1 1 1
如果螢幕回顯示無error,那麼說明成功填加了成員。我們也可以檢視一下mygroup裡面的成員資訊,具體如下:
mysqlfabric group lookup_servers mygroup
Password for admin:
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
------------------------------------ -------------------- --------- --------- ------
032bb536-73af-11e4-ba8b-000c2978e187 192.168.247.132:3306 SECONDARY READ_ONLY 1.0
c505ce10-9bc0-11e4-bfd4-000c290e7abe 192.168.247.133:3306 SECONDARY READ_ONLY 1.0
可以看到有2個例項,但這2個例項都不是PRIMARY,因為剛新增組成員,是不會自動選舉出PRIMARY的。
十一、選舉一個主庫
選舉的方法也非常簡單,具體如下:
mysqlfabric group promote mygroup
Password for admin:
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid finished success result
------------------------------------ -------- ------- ------
84f51361-83c5-466d-97ae-b6e9e497a4bf 1 1 1
執行成功了,沒有返回error。
我們再次檢視一下HA叢集中各伺服器情況:
mysqlfabric group lookup_servers mygroup
Password for admin:
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
------------------------------------ -------------------- --------- ---------- ------
032bb536-73af-11e4-ba8b-000c2978e187 192.168.247.132:3306 PRIMARY READ_WRITE 1.0
c505ce10-9bc0-11e4-bfd4-000c290e7abe 192.168.247.133:3306 SECONDARY READ_ONLY 1.0
可見192.168.247.132:3306已經被隨機選舉成為Master角色。
十二、啟用故障自動切換
即使Fabric選出了Master角色,但當這個Master宕機時,Fabric並不會自動將Secondary角色切換成Master角色,所以我們需要將HA配置成可以自動切換角色的樣子,具體如下:
mysqlfabric group activate mygroup
Password for admin:
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid finished success result
------------------------------------ -------- ------- ------
9422543d-6847-4242-ba8b-b737544c440 1 1 1
當然,我們也可以使用deactivate命令需求取消Fabric故障自動切換。
十三、測試HA
在這個實驗中,我們將192.168.247.132:3306例項停止,再看看Fabric的狀態:
mysqlfabric group lookup_servers mygroup
Password for admin:
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
------------------------------------ -------------------- ------- ---------- ------
032bb536-73af-11e4-ba8b-000c2978e187 192.168.247.132:3306 FAULTY READ_WRITE 1.0
c505ce10-9bc0-11e4-bfd4-000c290e7abe 192.168.247.133:3306 PRIMARY READ_WRITE 1.0
其中192.168.247.132:3306例項的狀態已經變成了“FAULTY”,可以看出Fabric自動檢測到了這個故障,並且選舉了slave重新當了primary角色。
重新啟動192.168.247.132:3306再檢視HA組狀態:
mysqlfabric group lookup_servers mygroup
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
------------------------------------ -------------------- ------- ---------- ------
032bb536-73af-11e4-ba8b-000c2978e187 192.168.247.132:3306 FAULTY READ_WRITE 1.0
c505ce10-9bc0-11e4-bfd4-000c290e7abe 192.168.247.133:3306 PRIMARY READ_WRITE 1.0
可以看到即使132例項已恢復正常,但它在HA組中的狀態不會自動恢復,需要手動改變伺服器狀態,支援的狀態值為primary,secondary,spare,faulty。
mysqlfabric server set_status c505ce10-9bc0-11e4-bfd4-000c290e7abe secondary
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
ServerError: Cannot change server's (032bb536-73af-11e4-ba8b-000c2978e187) status from (FAULTY) to (SECONDARY).
我們要把132例項變更成secondary狀態,由上可見,從FAULTY狀態不允許直接變更變SECONDARY狀態,必須先變更成spare狀態(避免寫和讀訪問,同時保證當故障切換時不會被選取),然後再變更成secondary。
mysqlfabric server set_status 032bb536-73af-11e4-ba8b-000c2978e187 spare
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid finished success result
------------------------------------ -------- ------- ------
c66afff7-cb9a-4064-a402-10e0a05b3be2 1 1 1
檢視狀態,132例項已成功更改為spare狀態
mysqlfabric group lookup_servers mygroupFabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
------------------------------------ -------------------- ------- ---------- ------
032bb536-73af-11e4-ba8b-000c2978e187 192.168.247.132:3306 SPARE OFFLINE 1.0
c505ce10-9bc0-11e4-bfd4-000c290e7abe 192.168.247.133:3306 PRIMARY READ_WRITE 1.0
再變更為secondary狀態:
mysqlfabric server set_status 032bb536-73af-11e4-ba8b-000c2978e187 secondary
Fabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
uuid finished success result
------------------------------------ -------- ------- ------
530ad1ce-ba74-4c3d-96a9-9edeb497d5d2 1 1 1
檢視狀態,132例項已成功變為secondary狀態:
mysqlfabric group lookup_servers mygroupFabric UUID: 5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1
server_uuid address status mode weight
------------------------------------ -------------------- --------- ---------- ------
032bb536-73af-11e4-ba8b-000c2978e187 192.168.247.132:3306 SECONDARY READ_ONLY 1.0
c505ce10-9bc0-11e4-bfd4-000c290e7abe 192.168.247.133:3306 PRIMARY READ_WRITE 1.0
十四、常用相關命令
mysqlfabricgroup create mygroup #建立HA組
mysqlfabricgroup destroy mygroup #刪除HA組
mysqlfabricgroup add mygroup 192.168.247.132:3306 #新增組成員
mysqlfabricgroup remove mygroup c505ce10-9bc0-11e4-bfd4-000c290e7abe #移出組成員
mysqlfabricgroup lookup_servers mygroup #檢視組成員
mysqlfabricgroup promote mygroup #選舉master
mysqlfabric groupactivate mygroup #啟用自動故障轉移
mysqlfabric group deactivatemygroup #禁用自動故障轉移
mysqlfabric serverset_status server_uuid status #變更伺服器狀態
mysqlfabrichelp manage #manage命令幫助
mysqlfabrichelp group #group命令幫助
mysqlfabrichelp server #server命令幫助
總結:
1. 程式必須通過Fabric-aware connectors來實現路由,目前只支援PHP,Python 和Java;
2. mysql例項進行恢復後,fabric不會自動改變例項的狀態,需要手工修改;
3. fabric state store和fabric note當前是單點,mysqlfabric程序本身不提供容錯,出現故障時需要重啟,當mysql fabric不可用時,fabric-aware聯結器能夠通過本地的cache繼續路由操作(配置ttl值);
4. 基於GTID的複製本身存在一些限制。
附兩個測試指令碼:
1.建立表測試指令碼:
#test.py
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":"abc123"},
user = 'root',database = 'test',password = 'abc123',autocommit =True
)
except Exception,e:
print e
sys.exit(1)
else:
conn.set_property(mode=fabric.MODE_READWRITE,group="mygroup")
cur = conn.cursor()
cur.execute(
"CREATE TABLE IF NOT EXISTS t1 ("
" id INT,"
" first_name varchar(40),"
" last_name varchar(40)"
")"
)
finally:
conn.close()
if __name__ == '__main__':
main()
2.插入資料測試指令碼:
#test2.py
import sys
import mysql.connector
from mysql.connector import fabric
defadd_subscriber(conn,id,first_name,last_name):
conn.set_property(group="mygroup",mode=fabric.MODE_READWRITE)
cur = conn.cursor()
cur.execute(
"INSERT INTO t1 VALUES (%s,%s,%s)",
(id,first_name,last_name)
)
def main():
try:
conn = mysql.connector.connect(
fabric ={"host":"localhost","port":32274,"username":"admin",
"password":"abc123"},
user="root",database="test",password="abc123",autocommit=True
)
except Exception,e:
print e
sys.exit(1)
else:
#conn.set_property(group="mygroup",mode=fabric.MODE_READWRITE)
add_subscriber(conn, 1, "Tom", "Jerry")
add_subscriber(conn, 2, "Jack", "Tom")
add_subscriber(conn, 3, "Lily", "Lee")
finally:
conn.close()
if __name__ == '__main__':
main()
相關推薦
Mysql Fabric HA配置測試
MySQL Fabric是Oracle官方推出的原生mysql高可用性系統,它可以簡化管理MySQL資料庫群,它提供兩大特性,一是通過故障檢測和故障轉移功能提供了高可用性,一是通過自動資料分片功能實現可擴充套件性。本文件只說明自動故障轉移-高可用性的實現。 一、測試環境
VCSA 6.5 HA 配置之五:故障轉移測試
center style justify 接著上篇文章配置完成VCSA的高可用後,其是否真的能實現高可用的效果,本篇文章將會一探究竟手動故障切換在vCenter HA配置頁面可以看到當前的主動節點、被動節點和見證節點;在例行維護或者其他時候可以手動執行故障切換通過右上方的"啟動故障切換" ,在一般
測試MySQL Fabric用於replication的實驗
今天測試了MySQL Fabric用於replication的實驗,感覺MySQL的官方文件說的不是很清楚,特別是Fabric的配置檔案解釋的不清楚。習慣了Oracle的官方文件的條理清晰。測試過程如下: == centos 6.3_x86 == no
mysql 雙主配置 基於docker 測試 及資料恢復測試
基於docker 1.10.3 映象地址:https://hub.docker.com/_/mysql/ docker 相關的我就不介紹了,如果不是docker 也沒有關係,自己裝兩個mysql 命
Linux 首先基本包安裝(vim啊什麼的),源,源優化,專案架構介紹, (LNMuWsgi)Django專案相關軟體mysql,redies,python(相關模組)安裝配置測試
內容 補充: 檢視已啟動服務的埠 netstat -tulnp |grep 80(方式1) ss -tulnp|grep 80(方式2) 前期鋪墊: 1. Linux要能上網 2. 掌握Linux軟體包安裝方法 2.1 rpm包管理 軟體包格式:名字-版本-平臺-rpm 建議
1 複習ha相關 + weekend110的hive的元資料庫mysql方式安裝配置(完全正確配法)(CentOS版本)(包含解除安裝系統自帶的MySQL)
本博文的主要內容是: .複習HA相關 .MySQL資料庫 .先在MySQL資料庫中建立hive資料庫 .hive的配置 以下是Apache Hadoop HA的總結。分為hdfs HA和yarn HA。 以上,是參考《
openstack HA配置-Mysql
概念 環境準備 兩個控制節點 host: controller1 IP: 192.168.0.20 host: controller2 IP: 192.168.0.21 hosts檔案 分別在controller1和controll
VCSA 6.5 HA配置 之三 :準備工作
vmware vcenter ha 高可用 vcsa 接著上一篇文章部署完成VCSA 6.5後,還需要做一些準備工作才能開啟高可用功能,本篇文章主要就講述如何為vCenter 高可用進行準備工作配置vCenter HA網絡從vCenter HA的架構圖中可以看出對於vCenter HA的高
mysql主從同步配置
這就是 sla star 失敗 有效 bin roo orm 相同 文件同步 rsync同步http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html 在當前的生產工作中,大多數應用的mysql主從同步都是異步的
Mac下安裝MySQL(含配置)
.tar.gz 界面 take 8.4 通過 -1 pass 查看 pack 首先需要下載 MySQL Community Server 下載地址:https://dev.mysql.com/downloads/mysql/ 進入MySQL的下載界面(https:
Wowza 部署 安裝 配置 測試 直播
provider vid cdata desc stc ini cal 127.0.0.1 spa 下載,最好用快的IP下好後傳到需要的節點上,下面鏈接不能下載的情況下百度谷歌必應找資源,jdk舊版在oracle需登錄方可下載 JDK1.6 wget -c http:/
mysql定時任務配置
通過 start mysq tro 註釋 否則 執行 存儲過程 time 做項目有時會遇到一些狀態需要每天定時去維護,我的方案是寫成sql語句或者存儲過程,再配置mysql調度器讓數據庫每天去執行。廢話不多說,直接進去正文: 假如當前時間是2016-12-28 12:05:
[flask實踐] 解決qq郵箱/mysql的相關配置問題
信息 fig config connect 我們 web服務 哪些 流程 點擊 筆者經過flask web(Miguel著,封面是一條狗)一書的學習,打算實現一個旅遊類網站,在此過程中發現,相對於書中的flasky博客程序,需要作出一些改變: 1. 註冊郵箱:國內要使用12
Mysql安裝與配置調優
mysql clas -c 丟失 mysql命令行 其中 oot grep art 一、安裝apt-get install mysql-server 需要設置賬號密碼 apt-get isntall mysql-client apt-get libmysqlclient-d
Hadoop-HA配置詳細步驟
eno col ice nbsp 版本 files tab des frame 1. HA服務器配置 對hdfs做高可用 1.1服務器詳情 服務器:centos7 Hadoop:2.6.5 Jdk:1.8 共四臺服務器 192.168.1.111 node1 192
Mysql MHA(GTID)配置(實操)
.sql 後臺 trigger pat log-bin global ges disable 監測 實現環境 centos6.7 MYSQL5.6.36 主:192.168.1.191 從1:192.168.1.145 從2:192.168.1.146
阿裏雲服務器 ECS 部署lamp:centos+apache+mysql+php安裝配置方法 (centos7)
ever linux 命令 port server sel kcon linu 開機 阿裏雲服務 阿裏雲服務器 ECS 部署lamp:centos+apache+mysql+php安裝配置方法 (centos7) 1.效果圖 1 2. 部署步驟 1 1. mysql安裝附加
mysql 安裝與配置
配置 sql數據庫 def 移除 logs mys l數據庫 mysql數據庫 cnblogs 查資料發現是CentOS 7 版本將MySQL數據庫軟件從默認的程序列表中移除,用mariadb代替了。 有兩種解決辦法: 安裝mariadb [[email prot
MySQL(一)安裝配置
ins 解決 互聯 更改 then ip地址 con 裝配 數據庫操作 1、安裝配置 cd d:\mysql\bin mysqld --initialize--insecure # 初始化服務器 mysqld # 啟動服務器 mysqld --
【CentOS6.5】MySQL安裝和配置
配置 entos alt tro images .com centos ges mys 1./etc/my.cnf 這是mysql的主配置文件 2、數據存放位置 3、錯誤存放位置 【CentOS6.5】MySQL安裝和配置