還在為MySQL HA方案的選型頭疼嗎?現(xiàn)在不用了,自從2014年5月28日Oracle發(fā)布Fabric之后,一切都變得如此簡單。因為是原生的官方產(chǎn)品,可以放心使用,由于這款產(chǎn)品大力的增強了HA效率,可以看出Oracle對云計算的支持力度,說明Oracle這個大象也可跳舞,而且還
還在為MySQL HA方案的選型頭疼嗎?現(xiàn)在不用了,自從2014年5月28日Oracle發(fā)布Fabric之后,一切都變得如此簡單。因為是原生的官方產(chǎn)品,可以放心使用,由于這款產(chǎn)品大力的增強了HA效率,可以看出Oracle對云計算的支持力度,說明Oracle這個大象也可跳舞,而且還挺靈活的。
官方對Fabric的介紹主要是它提供了MySQL的HA和Sharding方案,本文主要討論Fabric在MySQL HA方面的表現(xiàn)以及搭建部署流程。我的團隊試著搭建了一下,簡直無法再簡單了,這對于DBA來說絕對是一個大福音,這個產(chǎn)品在接下來的幾年中必然會被大量應用到生產(chǎn)環(huán)境中去,我的團隊對這個產(chǎn)品的未來充滿信心。
接下來我們將循序漸進的帶領(lǐng)大家感受Fabric帶來的樂趣。
一、實驗環(huán)境
本例的實驗環(huán)境是在一臺CentOS主機中做的,機器上有3個MySQL實例,分別是3306、3691和3692,我們要做的就是用這3個實例達成HA效果
二、下載
Fabric目前是被打包到了MySQL Utilities中,所以大家下載MySQL Utilities就可以了,下載地址是: http://dev.mysql.com/downloads/utilities/,目前版本是:1.4.4,在本例中我們下載的是 mysql-utilities-1.4.4-1.el6.noarch.rpm。
三、安裝MySQL Utilities
rpm包的安裝還是挺簡單的,具體如下:
rpm -ivh mysql-utilities-1.4.4-1.el6.noarch.rpm Preparing... ########################################### [100%] 1:mysql-utilities ########################################### [100%] [root@
裝完后執(zhí)行
如果有回顯說明安裝完畢。
四、建立Backing Store帳號
Backing Store用于存儲整個HA集群的服務器等相關(guān)配置,它需要一個MySQL實例來存儲這些信息,這個實例的版本需要跟其它在HA中的MySQL實例版本保持一致,而且必須是5.6.10及更高的版本,我們在本例中選擇3306實例來使用。
首先,你需要一個帳號來連接Backing Store的MySQL實例,這個帳號需要有對fabric數(shù)據(jù)庫的管理員級權(quán)限,我們在3306端口的實例上建帳號,具體如下:
CREATE USER 'fabric'@'10.165.17.175' IDENTIFIED BY 'secret'; GRANT ALL ON fabric.* TO 'fabric'@'10.165.17.175';
五、Fabric配置文件
Fabric配置文件默認位置是:/etc/mysql/fabric.cfg
修改其中的[storage]部分,具體如下:
[storage] auth_plugin = mysql_native_password database = fabric user = fabric address = 10.165.17.175:3306 connection_delay = 1 connection_timeout = 6 password = secret connection_attempts = 6
其中address = 10.165.17.175:3306是Backing Store的MySQL實例,password = secret是上一步中建立連接fabric數(shù)據(jù)庫的用戶密碼。
修改其中的[servers]部分,具體如下:
其中是password = secret 是HA環(huán)境中各實例的連接密碼。
六、填充Backing Store信息
我們通過Fabric來填充3306端口實例中的fabric數(shù)據(jù)庫,具體如下:
mysqlfabric manage setup [INFO] 1408115689.486792 - MainThread - Initializing persister: user (fabric), server (10.165.17.175:3306), database (fabric). Finishing initial setup ======================= Password for admin user is not yet set. Password for admin/xmlrpc: Repeat Password: Password set.
操作期間會提示Fabric的管理員帳戶admin沒有設置密碼,咱們按提示將密碼設置成admin就可以了。
我們再查看3306端口的實例里面發(fā)生了什么變化,具體如下:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | 51linux.net | | fabric | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.00 sec) mysql>
可以看到多了一個fabric數(shù)據(jù)庫,它里面存儲的就是Fabric的一些配置信息。
七、配置HA中主從MySQL節(jié)點帳號
本例中3691和3692實例是需要做成HA的,它們也要建個管理員權(quán)限的帳號,注意,帳號名也要跟3306實例保持一致,也需要是fabric,具體如下:
CREATE USER 'fabric'@'10.165.17.175' IDENTIFIED BY 'secret'; GRANT ALL ON *.* TO 'fabric'@'10.165.17.175';
同時,由于fabric是基于GTID主從復制,所以這些實例中必須要啟用GTID,它們的配置文件要有這些參數(shù):
八、啟動fabric
我們用下面的命令來啟動fabric:
mysqlfabric manage start [INFO] 1408116209.229260 - MainThread - Initializing persister: user (fabric), server (10.165.17.175:3306), database (fabric). [INFO] 1408116209.233982 - MainThread - Loading Services. [INFO] 1408116209.253620 - MainThread - Fabric node starting. [INFO] 1408116209.261853 - MainThread - Starting Executor. [INFO] 1408116209.262001 - MainThread - Setting 5 executor(s). [INFO] 1408116209.262691 - Executor-0 - Started. [INFO] 1408116209.264825 - Executor-1 - Started. [INFO] 1408116209.266648 - Executor-2 - Started. [INFO] 1408116209.268395 - Executor-3 - Started. [INFO] 1408116209.269961 - MainThread - Executor started. [INFO] 1408116209.273374 - MainThread - Starting failure detector. [INFO] 1408116209.274144 - Executor-4 - Started. [INFO] 1408116209.275816 - XML-RPC-Server - XML-RPC protocol server ('127.0.0.1', 32274) started. [INFO] 1408116209.276112 - XML-RPC-Server - Setting 5 XML-RPC session(s). [INFO] 1408116209.276654 - XML-RPC-Session-0 - Started XML-RPC-Session. [INFO] 1408116209.278426 - XML-RPC-Session-1 - Started XML-RPC-Session. [INFO] 1408116209.280368 - XML-RPC-Session-2 - Started XML-RPC-Session. [INFO] 1408116209.281599 - XML-RPC-Session-3 - Started XML-RPC-Session. [INFO] 1408116209.282699 - XML-RPC-Session-4 - Started XML-RPC-Session.
九、建立HA服務器組
這個HA服務器組,用于把參與HA的所有MySQL實例都填加進來:
mysqlfabric group create my_group Password for admin: Procedure : { uuid = 292621fd-cddc-4cbb-8c0d-d8a264156679, finished = True, success = True, return = True, activities = }
這樣我們就創(chuàng)建了一個組名為my_group的HA服務器組。
十、填加HA組的成員
我們首先填加3691,具體如下:
mysqlfabric group add my_group 10.165.17.175:3691 Password for admin: Procedure : { uuid = 8d1c11f8-adc4-4321-8307-6296caeb07c1, finished = True, success = True, return = True, activities = }
接下來填3692,具體如下:
mysqlfabric group add my_group 10.165.17.175:3692 Password for admin: Procedure : { uuid = b1fa3cb9-b86f-4b1a-88cb-e84babb2ab02, finished = True, success = True, return = True, activities = }
如果屏幕回顯示無error,那么說明成功填加了成員。我們也可以查看一下my_group里面的成員信息,具體如下:
mysqlfabric group lookup_servers my_group Password for admin: Command : { success = True return = [{'status': 'SECONDARY', 'server_uuid': '6914a176-2370-11e4-af48-00163e004141', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': '10.165.17.175:3691'}, {'status': 'SECONDARY', 'server_uuid': 'a8a69428-2366-11e4-af09-00163e004141', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': '10.165.17.175:3692'}] activities = }
大家可以看到,這2個實例都不是PRIMARY,說明剛剛搭建完的環(huán)境,系統(tǒng)是不會選舉出PRIMARY的。
十一、選舉一個主庫
選舉的方法也非常簡單,具體如下:
mysqlfabric group promote my_group Password for admin: Procedure : { uuid = 529380b9-10ef-409f-a1a9-9430ab9845a3, finished = True, success = True, return = True, activities = }
可見執(zhí)行成功了,并沒有返回error。
接下來我們再次驗證一下HA集群中各服務器情況。
mysqlfabric group lookup_servers my_group Password for admin: Command : { success = True return = [{'status': 'SECONDARY', 'server_uuid': '6914a176-2370-11e4-af48-00163e004141', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': '10.165.17.175:3691, {'status': 'PRIMARY', 'server_uuid': 'a8a69428-2366-11e4-af09-00163e004141', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': '10.165.17.175:3692}] activities = }
可見Fabric已經(jīng)隨機選舉了一個Master角色。
十二、激活故障自動切換
即使Fabric選出了Master角色,但當這個Master宕機時,F(xiàn)abric并不會自動將Secondary角色切換成Master角色,所以我們需要將HA配置成可以自動切換角色的樣子,具體如下:
mysqlfabric group activate my_group Password for admin: Procedure : { uuid = 518b7dad-06a4-45a8-bfd5-241396706b88, finished = True, success = True, return = True, activities = }
當然,我們也可以依據(jù)具體需求取消Fabric故障自動切換。
十三、測試HA
在這個實驗中,我們將3691實例停止,再看看Fabric的狀態(tài):
mysqlfabric group lookup_servers my_group Password for admin: Command : { success = True return = [{'status': 'PRIMARY', 'server_uuid': '6914a176-2370-11e4-af48-00163e004141', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': '10.165.17.175:3691}, {'status': 'FAULTY', 'server_uuid': 'a8a69428-2366-11e4-af09-00163e004141', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': '10.165.17.175:3692}] activities = }
其中3692實例的狀態(tài)已經(jīng)變成了“FAULTY”,可以看出Fabric自動檢測到了這個故障,并且選舉了slave重新當了primary角色。我不得不說就是這個功能,是它吸引我的原因之一。
十四、后續(xù)學習
關(guān)于后續(xù)的學習,大家要看看官網(wǎng)的用戶手冊,里面還有很多HA維護的方法,如增減節(jié)點等問題,同時目前Fabric也提供了phtyon和Java的API,可以供軟件開發(fā)人員直接使用,以后的軟件開發(fā)人員,不是再直接連接到MySQL實例,而是連接到Fabric,由Fabric來統(tǒng)一分發(fā)請求,這有些象MySQL Proxy,但它的應用前景要比MySQL Proxy更寬更廣。
作者簡介:
盤古,目前主要推動公益性IT項目的發(fā)展,51linux.net聯(lián)合創(chuàng)建人,該網(wǎng)站主要為那些學習linux或數(shù)據(jù)庫技術(shù)的同學提供免費linux服務器。
免費訂閱“CSDN云計算(左)和CSDN大數(shù)據(jù)(右)”微信公眾號,實時掌握第一手云中消息,了解最新的大數(shù)據(jù)進展!
CSDN發(fā)布虛擬化、Docker、OpenStack、CloudStack、數(shù)據(jù)中心等相關(guān)云計算資訊, 分享Hadoop、Spark、NoSQL/NewSQL、HBase、Impala、內(nèi)存計算、流計算、機器學習和智能算法等相關(guān)大數(shù)據(jù)觀點,提供云計算和大數(shù)據(jù)技術(shù)、平臺、實踐和產(chǎn)業(yè)信息等服務。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。