首頁 資料庫 mysql教程 MySQL原生HA方案 – Fabric感受之旅

MySQL原生HA方案 – Fabric感受之旅

Jun 07, 2016 pm 04:26 PM
fabric mysql 原生 方案

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
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

mysql:簡單的概念,用於輕鬆學習 mysql:簡單的概念,用於輕鬆學習 Apr 10, 2025 am 09:29 AM

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

phpmyadmin怎麼打開 phpmyadmin怎麼打開 Apr 10, 2025 pm 10:51 PM

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

navicat premium怎麼創建 navicat premium怎麼創建 Apr 09, 2025 am 07:09 AM

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

MySQL:世界上最受歡迎的數據庫的簡介 MySQL:世界上最受歡迎的數據庫的簡介 Apr 12, 2025 am 12:18 AM

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

為什麼要使用mysql?利益和優勢 為什麼要使用mysql?利益和優勢 Apr 12, 2025 am 12:17 AM

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

navicat怎麼新建連接mysql navicat怎麼新建連接mysql Apr 09, 2025 am 07:21 AM

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

redis怎麼使用單線程 redis怎麼使用單線程 Apr 10, 2025 pm 07:12 PM

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

MySQL和SQL:開發人員的基本技能 MySQL和SQL:開發人員的基本技能 Apr 10, 2025 am 09:30 AM

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

See all articles