MySQL高可用方案幾種方案

來源:互聯網
上載者:User

MySQL高可用方案幾種方案

Mysql-mmm就是mysql主主複製管理器,實現的功能有:
高可用性(類似keepalived的vip浮動技術)
同個時間只提供一台資料庫寫操作,保證資料庫的一致性。
提升slave為master,延續雙主的架構
 
首先先搭建好資料庫主主,主從架構:類似圖:(不再敘述)
在每台資料庫中為monitor的機器來監控當前的同步情況:
Grant replivation client to ‘user@’ip’ identified by ‘password’  建立一個mmm-monitor的賬戶,主要用於監控和同步
Grant super, replication client ,process on *.* to  ‘user’@’ip’ identified by ‘password’
建立一個mmm-agent的賬戶,用於用戶端的各種操作
 
Mysql-mmm的為

------------------------------------------分割線------------------------------------------

免費在 http://linux.bkjia.com/

使用者名稱與密碼都是www.bkjia.com

具體下載目錄在 /2016年資料/2月/20日/MySQL高可用方案幾種方案/

下載方法見

------------------------------------------分割線------------------------------------------

由於使用的是epel的方式需要把/etc/yum.repos.d/epel.repo中的mirrorlist換為baseurl
 
===========================================================================

配置mmm_common.conf的檔案:所有節點的配置都是一樣的包括監控端

active_master_role      writer
 
<host default>
    cluster_interface       eth0
    pid_path                /var/run/mysql-mmm/mmm_agentd.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        ccd      //同步的賬戶
    replication_password    ccd
    agent_user              ccd       //大一點的許可權
    agent_password          ccd
</host>
<host db1>
     ip 172.20.138.212
     mode master
     peer db2
</host>
<host db2>
  ip  172.20.138.209
  mode  master
  peer  db1
</host>
<role writer>
    hostsdb1,db2
    ips  172.20.138.100
    mode exclusive    //exclusive為單寫
</role>
 
<role reader>
    Hosts b1,db2
    ips 172.20.138.250  //可以有多個ip,每個資料庫可以單專屬一個vip
    mode balanced    //讀取為負載平衡
</role>

============================================================================
修改mmm_agent.conf檔案中不同的db值
 
最後配置一下mmm_mon.conf
主要修改的地方有:
Ping_ips 為監控的主機的真實ip,
Monitor 修改為資料庫賦予的賬戶
Monitor_assword  密碼
 
在/etc/init.d/中啟動服務,在監控伺服器中輸入命令:
Mmm_control checks 檢查所有的資料庫同步情況和運行情況
Mmm_control show 查看vip綁定情況,類似ipvsadm
 
Mysql-mmm不適合用於mysql主從的高負載
驗證vip均可以跳轉,但是發現讀ip也具有寫入資料的功能。。。。如果加上讀寫分離的話就可以實現讀取的vip不具備寫入的功能
 
Mysql-proxy實現負載平衡和讀寫分離
目前的mysql-proxy的版本為0.8.5aplha
 
在安裝mysql-proxy之前需要安裝lua
到官網下載lua的源檔案
yum -y install readline-devel ncurses-devel
安裝readline-devel和ncurses-devel  否則安裝會出現readline尋找不到的問題
tar zxvf luaxxxxx
make linux
make install
這時候輸入lua可以進入編譯模式表示lua安裝成功
 
安裝所需要的依賴包
yum install gcc* gcc-c++* autoconf*automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*
 
到mysql-proxy官網下載最新的mysql-proxy源檔案
安裝十分簡單解壓之後即可使用
將mysql-proxy添加到相對應的環境變數中
export PATH =$PATH:/usr/local/mysql-proxy
source /etc/profile
 
 
修改mysql-proxy的設定檔
常用的命令參數如下:
--daemon 以daemon的模式啟動
--admin-address=:4401  預設連接埠為4401
-help查看所有命令
-default-file 可以配置啟動的設定檔
--proxy-backend-addresses=$host:$port  多個以逗號隔開
--proxy-address=:3307
--proxy-backend-addresses=:3306  mysql主機的連接埠
--proxy-read-only-backend-address=xxx13306  唯讀mysql主機的連接埠
-- proxy-read-only-backend-address=xxx23306  可以指定多個唯讀mysql主機的連接埠
--proxy-lua-script=/usr/local/xxx/rw-splitting.lua  使用系統只帶的lua指令碼實現讀寫分離的功能
 
使用系統內建的rw.split.lua指令碼需要修改兩個參數
min_idle_connections=1
max_idle_connections = 3
 
啟動指令碼:
#!/bin/bash
mode=$1
if [ -z "$mode" ] ;then
  mode="start"
fi
case $mode in
'start')
  mysql-proxy --daemon --proxy-address=:3307 --proxy-backend-addresses=172.20.138.209:3306;172.20.138.212:3306 --proxy-read-only-backend-addresses=172.20.138.212:3306  --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
  ;;
'stop')
  killall mysql-proxy
  ;;
esac
exit 0
 
或者使用配置方式的方法來啟動
Vim /etc/mysql-proxy.cnf
admin-username = ccd
admin-password = ccd
daemon = true
keepalive = true
proxy-backend-addresses =172.20.138.209:3306;172.20.138.212:3306
proxy-read-only-backend-addresses =172.20.138.212:3306
proxy-lua-script =/usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua
admin-lua-script =/usr/local/proxy-mysql/share/doc/mysql-proxy/admin-sql.lua
log-file = /usr/local/proxy-mysql/cn.log
log-level = debug
修改相對應的指令碼即可:
Mysql-proxy –defaults-file =/etc/mysql-proxy.cnf
 
對於資料庫的測試可以使用sysbench工具來進行測試
 
利用keepalived實現對mysql主主/主從的高可用
配置keepalived.conf檔案:
Vrrp_instatance  HA_1{
State BACKUP  #配置為slave,也可以是master
Interface eth0
Virtual_router_id 80  //主從配置的虛擬路由辨別碼需要一樣
Priority 100  #配置不同的優先順序
Advert_int 1  #配置主備之間同步檢查的周期
Authenication{
Auth_type PASS
Auth_pass 1111
}
Virtual_ipaddress {
    vip/24 dev eth0
}
}
Virtual_server  xxxxxx  3306{
Delay_loop 2
lb_algo wrr        //lvs演算法為加權輪詢
lb_kind DR    //lvs的模式為DR模式
protocol TCP
reall_server  xxxx 3306 {
weight  1
TCP_CHECK {
Connect_timeout  3
nb_get_retry    3
delay_before_retry  3
connect_port  3306
}
 
Real  server xxxx  3306{
  同上
}
}
 
DR的real serverloop連接埠需要綁定vip的地址指令碼為:
#!/bin/bash
SNS_VIP=172.138.20.244
./etc/rc.d/init.d/functions
case"$1" in
start)
      ifconfig lo:0 $SNS_VIP netmask255.255.255.255 broadcast $SNS_VIP
 
      /sbin/route add -host $SNS_VIP dev lo:0
 
      echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
 
      echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
 
      echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
 
      echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
 
      sysctl -p >/dev/null 2>&1
 
      echo "RealServer Start OK"
 
 
 
      ;;
 
stop)
 
      ifconfig lo:0 down
 
      route del $SNS_VIP >/dev/null2>&1
 
      echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore
 
      echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce
 
      echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore
 
      echo "0">/proc/sys/net/ipv4/conf/all/arp_announce
 
      echo "RealServer Stoped"
 
      ;;
 
*)
 
      echo "Usage: $0 {start|stop}"
 
      exit 1
 
esac
 
exit 0
 
授權遠程主機可以通過vip來串連登入vip
Grant allprivileges to  on *.* to xxxx identifiedby xxxxx
    Flushprivileges
由此可以實現mysql資料庫的高可用
 
使用keepalived的方式有兩種 一種為keepalived加指令碼實現vip的切換,另外一種是keepalived+lvs的方式來實現資料庫的高可用

MySQL高可用架構之MySQL-MMM配置詳解 

MySQL高可用性之Keepalived+MySQL(雙主熱備) 

MySQL高可用方案之叢集(Cluster) 

使用KeepAlived搭建MySQL高可用環境 

CentOS 6.4下MySQL高可用架構MHA搭建

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.