如何在滴滴雲 DC2 上搭建高可用 MySQL 叢集

java06051515發表於2018-12-13

前言

MySQL 高可用叢集

MySQL 高可用叢集是透過第三方軟體實現的故障轉移技術,通常是透過 MHA+Keepalived 或者 MHA+ 指令碼等來實現,本例子將採用 Keepalived 實現。

準備

系統硬體

滴滴雲 伺服器(DC2):安全可靠,擁有極高的價效比高,為開發者的需求而設計。適合大中小型使用者購買使用。

本文示例採用:通用型 2核CPU 4GB記憶體 500G的EBS 雲盤的伺服器配置

數量:3 臺,2 臺 MySQL 主從伺服器,1 臺 MHA 管理伺服器

依賴軟體

系統:CentOS 7.4

MySQL 5.7.24

daemontools-0.76.tar.gz

mha4mysql-manager-0.56-0.el6.noarch.rpm

mha4mysql-node-0.56-0.el6.noarch.rpm

Keepalived v1.2.13

安裝過程

1. 登入2臺伺服器

SSH 登入購買的 滴滴雲 DC2 主機

  ssh  dc2 - user @ ip

2. 安裝並配置 MySQL 主從複製關係

兩臺伺服器的 MySQL 都安裝完成後開始配置主從複製關係。(如果不會安裝 MySQL 可以參考另一篇如何安裝 MySQL 的文章: 如何在滴滴雲 DC2 上搭建 MySQL 服務 )。

在主庫上建立從庫賬號

  mysql > CREATE  USER   'repl' @ 'ip'   IDENTIFIED  BY   '****' ;

  mysql > GRANT     REPLICATION  SLAVE  ON * . *   TO   'repl' @ 'ip'   ;

從庫執行 change master 命令指向主庫,配置的是 GTID 複製,所以不需要 binlog 的資訊。

  mysql > change  master  to   master_host   =   'master_ip' ,   master_port   =   port ,   master_heartbeat_period   =   10 ,   master_user   = 'repl' ,    

 master_password   = ' ******' , master_auto_position   =   1 ;

需要注意的地方:

  • server_id 不能相同

  • 主從開啟 GTID 複製

3. 建立主從複製關係後,校驗一下複製是否成功開啟

登入從庫,檢視 IO 和 SQL 執行緒是否啟動

  mysql >   show  slave  status \ G ;

4. 安裝 MHA

登入到第三臺 DC2 的伺服器安裝 MHA,可以下載最新的 MHA:

在兩臺 MySQL 伺服器安裝 MHA Node

  yum   - y   install  perl - DBD - mysql

  rpm   - ivh  mha4mysql - node - 0.56 - 0.el6.noarch.rpm

在 etc 目錄下建立 MHA 資料夾

  mkdir   - p   / etc / mha /

建立 manager 日誌目錄

  mkdir   - p   / var / log / mha / app1

  chmod   755   / var / log / mha / app1

配置 app1.cnf

配置 masterha_default.cnf 檔案

5. 配置 SSH 互信和 MHA 使用者

MySQL 主從伺服器配置戶型:

生成 pub 秘鑰,一直回車就可以,生成成功後複製 id_rsa.pub 裡面的秘鑰到從庫,同樣從庫也是先生成秘鑰再複製到主庫伺服器。

  cd   ~ / . ssh

MHA 管理端到 MySQL Node 的互信配置,生成秘鑰,同時複製到 MySQL 的兩臺伺服器上。

建立MHA使用者:

登入到 MySQL 主庫

  mysql >   CREATE  USER   'mha' @ '%'   IDENTIFIED  BY   'mha2018REPL' ;

  mysql >   GRANT  all  privileges  ON * . *   TO   'mha' @ '%' ;

校驗 MHA 的 SSH 互信配置與 MySQL 複製狀態

  masterha_check_ssh   -- conf = / etc / mha . d / app1 . cnf

  masterha_check_repl   -- conf = / etc / mha . d / app1 . cnf   -- global_conf = / etc / mha . d / masterha_default . cnf

MHA 的指令碼修改  master_ip_failover master_ip_online_change send_master_failover_mail
可以把例子的指令碼複製下來,放到  /etc/mha/script  的目錄下,適當按需修改內容。

6. Keepalived 安裝

在兩臺 MySQL 伺服器上安裝 Keepalived

7. 設定守護程式

啟動 app1

  svc   - u   / service / app1

停止

  svc   - d   / service / app1

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2284842/,如需轉載,請註明出處,否則將追究法律責任。

相關文章