MySQL原生HA方案 – Fabric感受之旅
MySQL原生HA方案 – Fabric体验之旅 关键字:MySQL原生HA方案 – Fabric体验之旅 tag:云计算MySQL FabricHA方案. 转自:http://www.csdn.net/article/2014-08-20/2821300 摘要:众所周知,Fabric能提供MySQL的HA和Sharding方案,但是并没有具体的介绍其具体的
MySQL原生HA方案 – Fabric体验之旅关键字:MySQL原生HA方案 – Fabric体验之旅
tag:云计算MySQL FabricHA方案.
转自:http://www.csdn.net/article/2014-08-20/2821300
摘要:众所周知,Fabric能提供MySQL的HA和Sharding方案,但是并没有具体的介绍其具体的表现和搭建部署流程。笔者所在团队亲身体验了此过程,虽然过程简单但是却充满着无穷的乐趣,也为未来的应用带来了福音。
还在为MySQL HA方案的选型头疼吗?现在不用了,自从2014年5月28日Oracle发布Fabric之后,一切都变得如此简单。因为是原生的官方产品,可以放心使用,由于这款产品大力的增强了HA效率,可以看出Oracle对云计算的支持力度,说明Oracle这个大象也可跳舞,而且还挺灵活的。
官方对Fabric的介绍主要是它提供了MySQL的HA和Sharding方案,本文主要讨论Fabric在MySQL HA方面的表现以及搭建部署流程。我的团队试着搭建了一下,简直无法再简单了,这对于DBA来说绝对是一个大福音,这个产品在接下来的几年中必然会被大量应用到生产环境中去,我的团队对这个产品的未来充满信心。
接下来我们将循序渐进的带领大家感受Fabric带来的乐趣。
一、实验环境
本例的实验环境是在一台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@
装完后执行
mysqlfabric
如果有回显说明安装完毕。
四、建立Backing Store帐号
Backing Store用于存储整个HA集群的服务器等相关配置,它需要一个MySQL实例来存储这些信息,这个实例的版本需要跟其它在HA中的MySQL实例版本保持一致,而且必须是5.6.10及更高的版本,我们在本例中选择3306实例来使用。
首先,你需要一个帐号来连接Backing Store的MySQL实例,这个帐号需要有对fabric数据库的管理员级权限,我们在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数据库的用户密码。
修改其中的[servers]部分,具体如下:
[servers]
password = secret
user = fabric
其中是password = secret 是HA环境中各实例的连接密码。
六、填充Backing Store信息
我们通过Fabric来填充3306端口实例中的fabric数据库,具体如下:
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端口的实例里面发生了什么变化,具体如下:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| 51linux.net |
| fabric |
| mysql |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)
mysql>
可以看到多了一个fabric数据库,它里面存储的就是Fabric的一些配置信息。
七、配置HA中主从MySQL节点帐号
本例中3691和3692实例是需要做成HA的,它们也要建个管理员权限的帐号,注意,帐号名也要跟3306实例保持一致,也需要是fabric,具体如下:
CREATE USER 'fabric'@'10.165.17.175' IDENTIFIED BY 'secret';
GRANT ALL ON *.* TO 'fabric'@'10.165.17.175';
同时,由于fabric是基于GTID主从复制,所以这些实例中必须要启用GTID,它们的配置文件要有这些参数:
log-bin
gtid-mode=ON
enforce-gtid-consistency
log_slave_updates
八、启动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 =
}
这样我们就创建了一个组名为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,说明刚刚搭建完的环境,系统是不会选举出PRIMARY的。
十一、选举一个主库
选举的方法也非常简单,具体如下:
mysqlfabric group promote my_group
Password for admin:
Procedure :
{ uuid = 529380b9-10ef-409f-a1a9-9430ab9845a3,
finished = True,
success = True,
return = True,
activities =
}
可见执行成功了,并没有返回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已经随机选举了一个Master角色。
十二、激活故障自动切换
即使Fabric选出了Master角色,但当这个Master宕机时,Fabric并不会自动将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 =
}
当然,我们也可以依据具体需求取消Fabric故障自动切换。
十三、测试HA
在这个实验中,我们将3691实例停止,再看看Fabric的状态:
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实例的状态已经变成了“FAULTY”,可以看出Fabric自动检测到了这个故障,并且选举了slave重新当了primary角色。我不得不说就是这个功能,是它吸引我的原因之一。
十四、后续学习
关于后续的学习,大家要看看官网的用户手册,里面还有很多HA维护的方法,如增减节点等问题,同时目前Fabric也提供了phtyon和Java的API,可以供软件开发人员直接使用,以后的软件开发人员,不是再直接连接到MySQL实例,而是连接到Fabric,由Fabric来统一分发请求,这有些象MySQL Proxy,但它的应用前景要比MySQL Proxy更宽更广。
作者简介:
盘古,目前主要推动公益性IT项目的发展,51linux.net联合创建人,该网站主要为那些学习linux或数据库技术的同学提供免费linux服务器。
转自:http://www.csdn.net/article/2014-08-20/2821300

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

使用 Navicat Premium 創建數據庫:連接到數據庫服務器並輸入連接參數。右鍵單擊服務器並選擇“創建數據庫”。輸入新數據庫的名稱和指定字符集和排序規則。連接到新數據庫並在“對象瀏覽器”中創建表。右鍵單擊表並選擇“插入數據”來插入數據。

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

可在 Navicat 中通過以下步驟新建 MySQL 連接:打開應用程序並選擇“新建連接”(Ctrl N)。選擇“MySQL”作為連接類型。輸入主機名/IP 地址、端口、用戶名和密碼。 (可選)配置高級選項。保存連接並輸入連接名稱。

Redis 使用單線程架構,以提供高性能、簡單性和一致性。它利用 I/O 多路復用、事件循環、非阻塞 I/O 和共享內存來提高並發性,但同時存在並發性受限、單點故障和不適合寫密集型工作負載的局限性。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。
