Google Cloud Launch 的 Percona 服務介紹

Database一直是每一項服務需要特別花心思的地方,通常將資料庫服務委託給Google CloudSQL是最簡單不過的,不過,如果希望能夠保有對資料庫的完整操控權,則自建Database是最快的選擇... 而Google Cloud Launcher服務即有DB Cluster的建置,在此以Percona Cluster為例,透過Cloud Launcher簡單的建置Percona MySQL Cluster…

Percona是分支自MySQL的資料庫,相較於原生MySQL,Percona原生提供了更多的資料庫工具,讓使用者可以更快速的建置自己的MySQL應用...

首先,我們先到Cloud Lancher ( https://console.cloud.google.com/launcher ) 搜尋”Percona”關鍵字,然後進入Percona的說明頁面之後點選LAUNCH ON COMPUTE ENGINE...

依照GCP上的建議,Percona Cluster 預設啟動的機器不能小於三台,我們可以指定資料庫的zone位置,也可以依照需求指定更多的主機數量... 選好機器的zone和數量後,只要點選Deploy,就可以開始進入開通cluster的動作...





建立完成後可以在”Deployment Manager”裡,看到您剛剛建立的Percona,裡面會有每一台機器的說明、DB的password、相關說明文件等資料


由於Cloud Launcher是以Appliance的方式提供服務,也就是會使用Compute Engine來建置,因此我們會看到剛剛所開立起來的三台機器...



在Percona的Cluster機制下,所有的主機都是可以讀寫的狀態... 因此,接下來我們可以使用SSH進入機器內檢視,登入後,執行mysql指令連線所建立的資料庫,若執行成功就能開始使用...


為了求證cluster的運作,以下進行幾個簡單測試..

1.每一台DB資料是否會同步?
答案是會~ 在第一台建立一個Database,其他二台會自動sync,如附圖


2.關掉一台,其他台能不能正常運作?
Step1. Shutdown最後一台機器,在percono1新增一個table並insert資料
還活著的另一台會自動sync資料

Step2. 將shutdown的機器重新啟動,檢查是否有同步資料。

結論:
關掉一台,其他台可以正常運作;關掉的那台,重新啟動後資料會同步到最新的狀態。


3.測試binlog可不可以正常回復資料?

Step1 先在每一台的my.cnf加入幾行binlog設定後,重新啟動MySQL
log-bin=mysql-bin
#不同台的server-id要設不一樣的
server-id=1
#備份天數
expire-logs-days=7
#這個功能可以把其他 Master 讀到的 Binlog 也寫進自己的 Binlog,這樣自己也能變成 Master 讓其他 Slave 節點同步
log-slave-updates = 1


檢查是否已開啟,ON就是有開啟了
mysql > show variables like 'log_bin';

檔案會存在/var/lib/mysql下


Step2 刪除下方紅色框框的資料

Step3 用binlog回復這筆資料,檢查是否有正確回復
mysqlbinlog --start-datetime="2017-08-17 17:53:00" \
--stop-datetime="2017-08-17 17:54:00" \
/var/lib/mysql/mysql-bin.* | mysql -u root

結論:
資料會正確回復,並同步到別台機器。

參考資料:https://goo.gl/vRckLh


4. 使用GCP LB串連Percona Cluster
Step1 建立一個TCP Load balancing ,將percona的機器加入Backends
Frontend開放3306port
Step2  用load banlancer的IP與percona的帳號密碼測試連線,結果是成功的。

總上所述,Cloud Launcher可以快速的協助我們建立Percona Cluster服務,該Cluster提供了我們方便的集群操作與使用(每台主機都可以負責讀、寫)...  至於效能,則讓我們之後測試再分享咯!

這個網誌中的熱門文章

[how-to] 在 GCP 上設定 HTTPS Load Balancer

在kubernetes上使用kube-lego自動更新Let’s Encrypt TLS憑證