MySQL Fabric使用介紹01——高可用性HA
MySQL Fabric使用介紹01——高可用性HA
MySQL Fabric是MySQL推出的用來管理一“群”伺服器的系統,可以非常簡單地用來部署管理MySQL的資料分片(Shading)和高可用性(High Availability)功能。
在這裡首先介紹一下高可用性功能的部署和使用。這裡用Windows平臺的MySQL為例。
一、需要的軟體
使用MySQL的Fabric功能需要下載如下軟體:
1、 MySQL server 5.6.10以後的版本,Fabric功能需要GTID來實現。
http://dev.mysql.com/downloads/mysql/
為了在本機部署方便,推薦使用壓縮版的MySQL,解壓後簡單配置即可使用,並且安裝位置靈活。
2、 MySQL Connectors
目前Connector/Python 1.2.1以後的版本和Connector/J 5.1.27以後的版本
支援MySQL Fabric,
本例使用Connector/Python
http://dev.mysql.com/downloads/connector/python/
選擇下載Windows (Architecture Independent), MSI Installer Python 3.4 即可
3、 MySQL Utilities
MySQL Fabric包含在MySQL Utilities裡面,因此需要下載MySQL Utilities
http://dev.mysql.com/downloads/utilities/
4、 Python
需要使用Python2.6之後的版本,在Windows使用Python通常需要安裝Python
本例使用的是Python3.4.1
二、軟體安裝
Windows的軟體安裝都比較簡單,除了MySQL Server以外按照安裝嚮導一直下一步即可,需要注意記住安裝路徑就可以了。
MySQL Server由於是壓縮版的,各位可以把它解壓在任何路徑下。因為MySQL Fabric是用來管理伺服器群的系統,在本例中我們需要使用4個MySQL Server例項來模擬4臺伺服器進行演示,因此將MySQL Server解壓後,需要將裡面的data資料夾複製3份放到不同的路徑下面,詳細設定請參照下一節。
三、系統環境設定
1、 檔案設定
MySQL Fabric構成裡面需要一個Fabric管理節點,官方稱之為backing store.,另外需要3個MySQL Server伺服器用來構成一主二從的高可用構成,一主二從主要利用了MySQL的複製功能,如果對MySQL的複製功能不瞭解,請參照
http://dev.mysql.com/doc/refman/5.6/en/replication.html
因此各個檔案的路徑如下:
1)Fabric管理節點(backing store)C:\DEMO\Fabric\MGM
2)將前一節提到的data資料夾分別複製到下面3個路徑,同時分別做成3個my.ini與data資料夾放在同一路徑下
MySQL Server伺服器1的資料檔案 C:\DEMO\Fabric\HA1\MySQL11\data
MySQL Server伺服器2的資料檔案 C:\DEMO\Fabric\HA1\MySQL12\data
MySQL Server伺服器3的資料檔案 C:\DEMO\Fabric\HA1\MySQL13\data
3)MySQL Utilities的安裝路徑為C:\MySQLUtilities
4)MySQL Fabric需要一個名為fabric.cfg的設定檔案,該檔案的路徑為
MySQL Utilities的安裝路徑\etc\mysql 因此本例的路徑為
C:\MySQLUtilities\etc\mysql\fabric.cfg
下面是本例所使用的設定檔案,[DEFAULT]裡面是基本Fabric的基本資訊,包括MySQLutility的安裝位置,日誌位置等等。[storage]裡面是Fabric節點的相關資訊,IP地址使用者名稱和使用的fabric資料庫名稱。[servers]下面的三種使用者對應上文提到的各個例項上的三個使用者。 [protocol.xmlrpc]
按照預設的填寫即可,需要給出一個管理使用者名稱和密碼。
[DEFAULT]
prefix = C:\MySQLUtilities
sysconfdir = C:\MySQLUtilities\etc\mysql
logdir = C:\DEMO\Fabric
[storage]
address = localhost:3310
user = root
password =
database = fabric
auth_plugin = mysql_native_password
connection_timeout = 6
connection_attempts = 6
connection_delay = 1
[servers]
user = root
password =
unreachable_timeout = 5
backup_user = root
backup_password =
restore_user = root
restore_password =
[protocol.xmlrpc]
address = localhost:32274
threads = 5
user = admin
password = 123654
disable_authentication = no
realm = MySQL Fabric
ssl_ca =
ssl_cert =
ssl_key =
[protocol.mysql]
address = localhost:32275
user = admin
password = 123654
disable_authentication = no
ssl_ca =
ssl_cert =
ssl_key =
[executor]
executors = 5
[logging]
level = INFO
url = C:\DEMO\Fabric\fabric.log
[sharding]
mysqldump_program =C:/DEMO/Fabric/MGM/bin/mysqldump.exe
mysqlclient_program =C:/DEMO/Fabric/MGM/bin/mysql.exe
prune_limit = 10000
[statistics]
prune_time = 3600
[failure_tracking]
notifications = 300
notification_clients = 50
notification_interval = 60
failover_interval = 0
detections = 3
detection_interval = 6
detection_timeout = 1
prune_time = 3600
[connector]
ttl = 1
[client]
password =
5)此外,包括Fabric管理節點在內,所有的MySQL例項均需要配置檔案my.ini,這個檔案的位置可以由使用者自行決定,只需在啟動MySQL服務的時候指定該檔案位置即可。本例使用與data資料夾平行的路徑,
例如: C:\DEMO\Fabric\HA1\MySQL11\my.ini
啟動MySQL例項的命令為:
>mysqld –defaults-file= C:\DEMO\Fabric\HA1\MySQL11\my.ini
各個例項的配置檔案請參照下例,注意更改一下埠號和伺服器ID和檔案路徑即可:
(basedir使用的均為管理節點的MySQL,datadir是上面各個例項的資料檔案位置)
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin
gtid_mode=ON
log-slave-updates
enforce-gtid-consistency
# These are commonly set, remove the # and set as required.
basedir = C:\DEMO\Fabric\MGM
datadir = C:\DEMO\Fabric\HA1\MySQL11\data
port = 3311
server_id = 11
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
2、 資料庫設定
Fabric的使用需要4種資料庫使用者,分別是:Backing store user 、Server user 、Backup user和Restore user。各個使用者的許可權不一樣,詳情請參照
http://dev.mysql.com/doc/mysql-utilities/1.6/en/fabric-create-user.html
除了管理節點使用者需要在管理節點例項上建立,其餘的3個使用者需要在每臺例項上分別建立。如果處於對fabric進行功能驗證的目的,用一個統一的使用者即可本例使用安裝後預設的root。
使用者設定好之後需要進行Fabric節點的資料安裝,正常需要執行如下命令:>mysqlfabric manage setup --param=storage.user=fabric --param=storage.password=secret
但是本例中只使用了一個使用者因此變成:
> C:\MySQLUtilities\mysqlfabric manage setup --param=storage.user=root
正常安裝後,檢視名為fabric的資料庫即可看到如下結構:
+-------------------+
| Tables |
+-------------------+
| checkpoints |
| error_log |
| group_replication |
| groups |
| permissions |
| role_permissions |
| roles |
| servers |
| shard_maps |
| shard_ranges |
| shard_tables |
| shards |
| user_roles |
| users |
+-------------------+
四、高可用性功能測試
1、 啟動所有的MySQL例項:
C:\DEMO\Fabric\MGM\bin\mysqld --defaults-file=C:\DEMO\Fabric\MGM\my.ini
C:\DEMO\Fabric\MGM\bin\mysqld --defaults-file=C:\DEMO\Fabric\HA1\MySQL11\my.ini
C:\DEMO\Fabric\MGM\bin\mysqld --defaults-file=C:\DEMO\Fabric\HA1\MySQL12\my.ini
C:\DEMO\Fabric\MGM\bin\mysqld --defaults-file=C:\DEMO\Fabric\HA1\MySQL13\my.ini
2、 建立高可用群
C:\MySQLUtilities\mysqlfabric group create my_group
C:\MySQLUtilities\mysqlfabric group add my_group localhost:3311
C:\MySQLUtilities\mysqlfabric group add my_group localhost:3312
C:\MySQLUtilities\mysqlfabric group add my_group localhost:3313
這四條命令的意思為建立一個名為my_group的群,然後向此群中加入3個伺服器,localhost:3311即為伺服器的地址。
建立好組群之後需要讓Fabric來挑選一臺伺服器作為主伺服器:
C:\MySQLUtilities\mysqlfabric group promote my_group
執行成功之後,可以選擇執行下面的命令來讓Fabric在主伺服器發生故障時,自動進行切換
C:\MySQLUtilities\mysqlfabric group activate my_group
可以透過mysqlfabric group lookup_servers my_group 來檢視該群的伺服器狀態。
至此,一個高可用的可以自動切換的MySQL主從伺服器群就設定好了,大家可以使用下面的Pyhson程式碼來進行測試一下了。另外需要注意的一點是,當要對群裡面的伺服器進行停機維護的時候需要先將其從群主裡面摘除,然後再進行維護,如果不這樣Fabric將會認為該伺服器已經壞掉,會自動切換。去除伺服器可以執行下面的命令:
C:\MySQLUtilities\mysqlfabric group demote my_group
C:\MySQLUtilities\mysqlfabric group remove my_group 98d34488-c956-11e4-a915-f82fa8e5f8eb
後面的一長串是UUID各位在新增伺服器的時候就會看到,刪除伺服器的時候選定對應的UUID即可。
import mysql.connector
from mysql.connector import fabric
def add_employee(conn, emp_no, first_name, last_name):
conn.set_property(group="my_group", mode=fabric.MODE_READWRITE)
cur = conn.cursor()
cur.execute("USE employees")
cur.execute(
"INSERT INTO employees VALUES (%s, %s, %s)",
(emp_no, first_name, last_name)
)
# We need to keep track of what we have executed in order to,
# at least, read our own updates from a slave.
cur.execute("SELECT @@global.gtid_executed")
for row in cur:
print ("Transactions executed on the master", row[0])
return row[0]
def find_employee(conn, emp_no, gtid_executed):
conn.set_property(group="my_group", mode=fabric.MODE_READONLY)
cur = conn.cursor()
# Guarantee that a slave has applied our own updates before
# reading anything.
cur.execute(
"SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('%s', 0)" %
(gtid_executed, )
)
for row in cur:
print ("Had to synchronize", row, "transactions.")
cur.execute("USE employees")
cur.execute(
"SELECT first_name, last_name FROM employees "
"WHERE emp_no = %s", (emp_no, )
)
for row in cur:
print ("Retrieved", row)
# Address of the Fabric, not the host we are going to connect to.
conn = mysql.connector.connect(
fabric={"host" : "localhost", "port" : 32274,
"username": "admin", "password" : "123654"
},
user="root",
# password="123654",
autocommit=True
)
conn.set_property(group="my_group", mode=fabric.MODE_READWRITE)
cur = conn.cursor()
cur.execute("CREATE DATABASE IF NOT EXISTS employees")
cur.execute("USE employees")
cur.execute("DROP TABLE IF EXISTS employees")
cur.execute(
"CREATE TABLE employees ("
" emp_no INT, "
" first_name CHAR(40), "
" last_name CHAR(40)"
")"
)
gtid_executed = add_employee(conn, 12, "John", "Doe")
find_employee(conn, 12, gtid_executed)
各位可以將上面的程式碼儲存為test_fabric_query.py ,
然後執行 >python test_fabric_query.py
結果為 (u'John', u'Doe')
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18796236/viewspace-1818791/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Pfsense HA(高可用性群集)
- Hadoop-HA節點介紹Hadoop
- esp8266-01 使用介紹
- 高可用之限流-01-入門介紹
- git使用系列01-->版本控制介紹Git
- 高可用性叢集軟體就選Skybility HA!優勢多多!
- day01-SpringMVC基本介紹-01SpringMVC
- MySQL 高可用性—keepalived+mysql雙主MySql
- Hyperledger Fabric系統鏈碼介紹
- 系統SDK介紹-01
- html 01前沿-web介紹HTMLWeb
- MySql介紹MySql
- 區塊鏈 2.0:Hyperledger Fabric 介紹(十)區塊鏈
- Fabric1.3新功能詳細介紹
- mysql-HAMySql
- JavaScript介紹及說明(01)JavaScript
- 2021-01-03自我介紹
- GitHub 的 MySQL 高可用性實踐分享GithubMySql
- MySQL索引介紹MySql索引
- mysql MVCC 介紹MySqlMVC
- MySQL MVCC介紹MySqlMVC
- MySQL Binlog 介紹MySql
- Jumpserver基礎運維-01介紹Server運維
- Tesseract-OCR -01-Tesseract 介紹
- 教程篇(6.0) 01. FortiGate及其Security Fabric介紹 ❀ 飛塔 (Fortinet) 網路安全專家 NSE4
- mytop 使用介紹 mysql實時監控工具MySql
- MySQL壓測工具mysqlslap的介紹與使用MySql
- MySQL 安裝介紹MySql
- MySQL檢視介紹MySql
- MySQL group replication介紹MySql
- 《MySQL 入門教程》第 01 篇 MySQL 簡介MySql
- day01-Mybatis介紹與入門MyBatis
- React 高階元件介紹React元件
- Linux下安裝與使用MySQL詳細介紹LinuxMySql
- SQL Server 2022 AlwaysOn新特性之包含可用性組介紹SQLServer
- MySql主從同步介紹MySql主從同步
- MySQL觸發器介紹MySql觸發器
- MySQL 官方工具utilities介紹MySql
- MySQL 8.0 目錄介紹MySql