最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解MySQL高可用MMM搭建方案及架構(gòu)原理

 更新時(shí)間:2016年08月08日 11:54:17   作者:pursuer.chen  
本篇文章主要介紹搭建MMM方案以及MMM架構(gòu)的原理。這里不介紹主從、主主的搭建方法,MMM方案不適用對(duì)數(shù)據(jù)一致性要求很高的業(yè)務(wù)。下面一起來(lái)學(xué)習(xí)學(xué)習(xí)。

先來(lái)看看架構(gòu),如下圖:

部署

1.修改hosts

在所有的服務(wù)器中執(zhí)行相同的操作。

vim /etc/hosts

192.168.137.10 master
192.168.137.20 backup
192.168.137.30 slave
192.168.137.40 monitor

2.添加mysql用戶

只需要在所有的數(shù)據(jù)庫(kù)端執(zhí)行即可,監(jiān)控端不需要。

GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.137.%' IDENTIFIED BY 'mmm_monitor'; 
GRANT SUPER,REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.137.%' IDENTIFIED BY 'mmm_agent';
flush privileges;

注意:repl用戶在搭建主從服務(wù)的時(shí)候已經(jīng)創(chuàng)建好了。

 3.安裝監(jiān)控軟件

注意:監(jiān)控端全部安裝,但是監(jiān)控端只需要用到mysql-mmm-monitor,mysql-mmm-agent不需要啟動(dòng)。

數(shù)據(jù)庫(kù)端只需要安裝mysql-mmm-agent

1.在監(jiān)控服務(wù)器執(zhí)行

wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm –ivh epel-release-6-8.noarch.rpm
yum –y install mysql-mmm*

2.在數(shù)據(jù)庫(kù)服務(wù)器上執(zhí)行,每個(gè)數(shù)據(jù)庫(kù)服務(wù)器上都要執(zhí)行

wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm –ivh epel-release-6-8.noarch.rpm
yum -y install mysql-mmm-agent

路徑說(shuō)明:

4.配置文件

db服務(wù)器配置文件:mmm_agent.conf,mmm_common.conf

監(jiān)控服務(wù)器的配置文件:mmm_mon.conf,mmm_common.conf(該文件所有服務(wù)器一樣)

配置db服務(wù)器

1.修改master服務(wù)器

vim /etc/mysql-mmm/mmm_common.conf
active_master_role  writer  ###積極的master角色的標(biāo)示,所有的db服務(wù)器都需要開(kāi)啟read_only參數(shù),對(duì)于writer服務(wù)器監(jiān)控代理會(huì)自動(dòng)將read_only屬性關(guān)閉。

<host default>
 cluster_interface  eth0  #####群集的網(wǎng)絡(luò)接口
 pid_path    /var/run/mysql-mmm/mmm_agentd.pid ####pid路徑
 bin_path    /usr/libexec/mysql-mmm/    #####可執(zhí)行文件路徑 
 replication_user  repl   #######復(fù)制用戶
 replication_password repl   #######復(fù)制用戶密碼
 agent_user    mmm_agent  #######代理用戶,用于更改只讀操作
 agent_password   mmm_agent  #######代理用戶密碼
</host>

<host master>   ##########master1的host名
 ip  192.168.137.10 #####master1的ip
 mode master  ########角色屬性,master代表是主
 peer backup  ########與master1對(duì)等的服務(wù)器的host名,也就是master2的服務(wù)器host名
</host>

<host backup>  ####和master的概念一樣
 ip  192.168.137.20
 mode master
 peer master
</host>

<host slave>  #####從庫(kù)的host名,如果存在多個(gè)從庫(kù)可以重復(fù)一樣的配置
 ip  192.168.137.30 ####從的ip
 mode slave #####slave的角色屬性代表當(dāng)前host是從
</host>

<role writer> ####writer角色配置
 hosts master,backup ####能進(jìn)行寫操作的服務(wù)器的host名,如果不想切換寫操作這里可以只配置master,這樣也可以避免因?yàn)榫W(wǎng)絡(luò)延時(shí)而進(jìn)行write的切換,但是一旦master出現(xiàn)故障那么當(dāng)前的MMM就沒(méi)有writer了只有對(duì)外的read操作。
 ips  192.168.137.100 #####對(duì)外提供的寫操作的虛擬IP
 mode exclusive #####exclusive代表只允許存在一個(gè)主,也就是只能提供一個(gè)寫的IP
</role>

<role reader> #####read角色配置
 hosts backup,slave ######對(duì)外提供讀操作的服務(wù)器的host名,當(dāng)然這里也可以把master加進(jìn)來(lái)
 ips  192.168.137.120,192.168.137.130,192.168.137.140 ###對(duì)外提供讀操作的虛擬ip,這兩個(gè)ip和host不是一一對(duì)應(yīng)的,并且ips也hosts的數(shù)目也可以不相同,如果這樣配置的話其中一個(gè)hosts會(huì)分配兩個(gè)ip
 mode balanced ###balanced代表負(fù)載均衡
</role>

同時(shí)將這個(gè)文件拷貝到其它的服務(wù)器包括監(jiān)控服務(wù)器,配置不變

scp /etc/mysql-mmm/mmm_common.conf slave:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf backup:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf monitor:/etc/mysql-mmm/

2.代理文件配置

vim /etc/mysql-mmm/mmm_agent.conf

 

注意:這個(gè)配置只配置db服務(wù)器,監(jiān)控服務(wù)器不需要配置,this后面的host名改成當(dāng)前服務(wù)器的host命令,master2和slave也改成對(duì)應(yīng)的服務(wù)器的host名。

3.啟動(dòng)代理進(jìn)程 

chkconfig mysql-mmm-agent on
service mysql-mmm-agent start

每臺(tái)db服務(wù)器上都需要啟動(dòng)

配置監(jiān)控服務(wù)器

vim /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf
<monitor>
 ip     127.0.0.1
 pid_path   /var/run/mysql-mmm/mmm_mond.pid
 bin_path   /usr/libexec/mysql-mmm
 status_path   /var/lib/mysql-mmm/mmm_mond.status #####群集的狀態(tài)文件,也就是執(zhí)行mmm_control show操作的顯示來(lái)源。
 ping_ips   192.168.137.10,192.168.137.20,192.168.137.30 ######被監(jiān)控的db服務(wù)器的ip地址
 auto_set_online  0 ####設(shè)置自動(dòng)online的時(shí)間,默認(rèn)是超過(guò)60s就將它設(shè)置為online,默認(rèn)是60s,這里將其設(shè)為0就是立即online

 # The kill_host_bin does not exist by default, though the monitor will
 # throw a warning about it missing. See the section 5.10 "Kill Host
 # Functionality" in the PDF documentation.
 #
 # kill_host_bin  /usr/libexec/mysql-mmm/monitor/kill_host
 #
</monitor>

<host default>
 monitor_user  mmm_monitor ####監(jiān)控db服務(wù)器的用戶
 monitor_password mmm_monitor ####監(jiān)控db服務(wù)器的密碼
</host>

debug 0  #######debug 0正常模式,1為debug模式

注意:配置文件中的注釋是為了便于理解,在部署的時(shí)候最好把注釋去掉以免因?yàn)樽⑨屧斐傻臐撛谟绊憽?/span>

啟動(dòng)監(jiān)控進(jìn)程

chkconfig mysql-mmm- monitor on
service mysql-mmm-monitor start

注意:無(wú)論是在db端還是在監(jiān)控端如果有對(duì)配置文件進(jìn)行修改操作都需要重啟代理進(jìn)程和監(jiān)控進(jìn)程。

操作分析

日志文件

日志文件往往是分析錯(cuò)誤的關(guān)鍵,所以要善于利用日志文件進(jìn)行問(wèn)題分析。

db端:/var/log/mysql-mmm/mmm_agentd.log

監(jiān)控端:/var/log/mysql-mmm/mmm_mond.log

命令文件

     mmm_agentd :db代理進(jìn)程的啟動(dòng)文件

     mmm_mond :監(jiān)控進(jìn)程的啟動(dòng)文件  

     mmm_backup :備份文件

     mmm_restore :還原文件

     mmm_clone   

     mmm_control:監(jiān)控操作命令文件    

db服務(wù)器端只有mmm_agentd程序,其它的都是在monitor服務(wù)器端。

mmm_control用法

mmm_control程序可以用于監(jiān)控群集狀態(tài)、切換writer、設(shè)置online\offline操作等。

Valid commands are:
 help        - show this message ###幫助信息
 ping        - ping monitor ###ping當(dāng)前的群集是否正常
 show        - show status ####群集在線狀態(tài)檢查
 checks [<host>|all [<check>|all]] - show checks status #####執(zhí)行監(jiān)控檢查操作
 set_online <host>     - set host <host> online ####將host設(shè)置為online
 set_offline <host>    - set host <host> offline ###將host設(shè)置為offline
 mode        - print current mode. ####打印輸出當(dāng)前的mode
 set_active      - switch into active mode.
 set_manual      - switch into manual mode.
 set_passive      - switch into passive mode.
 move_role [--force] <role> <host> - move exclusive role <role> to host <host> ####移除writer服務(wù)器為指定的host服務(wù)器
          (Only use --force if you know what you are doing!)
 set_ip <ip> <host>    - set role with ip <ip> to host <host>

1.檢查所有的db服務(wù)器群集狀態(tài)

[root@monitor mysql-mmm]# mmm_control checks all
master ping   [last change: 2016/06/07 16:31:24] OK
master mysql  [last change: 2016/06/07 16:31:24] OK
master rep_threads [last change: 2016/06/07 16:31:24] OK
master rep_backlog [last change: 2016/06/07 16:31:24] OK: Backlog is null
slave ping   [last change: 2016/06/07 16:31:24] OK
slave mysql  [last change: 2016/06/07 16:31:24] OK
slave rep_threads [last change: 2016/06/07 16:31:24] OK
slave rep_backlog [last change: 2016/06/07 16:31:24] OK: Backlog is null
backup ping   [last change: 2016/06/07 16:31:24] OK
backup mysql  [last change: 2016/06/07 16:31:24] OK
backup rep_threads [last change: 2016/06/07 16:31:24] OK
backup rep_backlog [last change: 2016/06/07 16:31:24] OK: Backlog is null

檢查項(xiàng)包括:ping、mysql是否正常運(yùn)行、復(fù)制線程是否正常等

2.檢查群集環(huán)境在線狀況

[root@monitor mysql-mmm]# mmm_control show
 backup(192.168.137.20) master/ONLINE. Roles: reader(192.168.137.120)
 master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
 slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.130)

3.對(duì)指定的host執(zhí)行offline操作

[root@monitor mysql-mmm]# mmm_control set_offline backup
OK: State of 'backup' changed to ADMIN_OFFLINE. Now you can wait some time and check all roles!
[root@monitor mysql-mmm]# mmm_control show
 backup(192.168.137.20) master/ADMIN_OFFLINE. Roles: 
 master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
 slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.120), reader(192.168.137.130)

4.對(duì)指定的host執(zhí)行onine操作

[root@monitor mysql-mmm]# mmm_control set_online backup
OK: State of 'backup' changed to ONLINE. Now you can wait some time and check its new roles!
[root@monitor mysql-mmm]# mmm_control show
 backup(192.168.137.20) master/REPLICATION_FAIL. Roles: 
 master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
 slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.120), reader(192.168.137.130)

[root@monitor mysql-mmm]# mmm_control show
 backup(192.168.137.20) master/ONLINE. Roles: reader(192.168.137.120)
 master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100)
 slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.130)

5.執(zhí)行write切換

1.查看當(dāng)前的slave對(duì)應(yīng)的master

[root@slave ~]# mysql -uroot -proot -e 'show slave status \G;'
Warning: Using a password on the command line interface can be insecure.
*************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
     Master_Host: 192.168.137.10
     Master_User: repl
     Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000073
   Read_Master_Log_Pos: 1461
    Relay_Log_File: mysql-relay-bin.000006
    Relay_Log_Pos: 283
  Relay_Master_Log_File: mysql-bin.000073
    Slave_IO_Running: Yes
   Slave_SQL_Running: Yes

2.writer切換,要確保mmm_common.conf文件中的writer屬性有配置對(duì)應(yīng)的host,否則無(wú)法切換

[root@monitor mysql-mmm]# mmm_control move_role writer backup
OK: Role 'writer' has been moved from 'master' to 'backup'. Now you can wait some time and check new roles info!
[root@monitor mysql-mmm]# mmm_control show
 backup(192.168.137.20) master/ONLINE. Roles: reader(192.168.137.120), writer(192.168.137.100)
 master(192.168.137.10) master/ONLINE. Roles: 
 slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.130)

3.save從庫(kù)自動(dòng)切換到了新的master

[root@slave ~]# mysql -uroot -proot -e 'show slave status \G;'
Warning: Using a password on the command line interface can be insecure.
*************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
     Master_Host: 192.168.137.20
     Master_User: repl
     Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000039
   Read_Master_Log_Pos: 120
    Relay_Log_File: mysql-relay-bin.000002
    Relay_Log_Pos: 283
  Relay_Master_Log_File: mysql-bin.000039
    Slave_IO_Running: Yes
   Slave_SQL_Running: Yes

其它處理問(wèn)題

 如果不想讓writer從master切換到backup(包括主從的延時(shí)也會(huì)導(dǎo)致寫VIP的切換),那么可以在配置/etc/mysql-mmm/mmm_common.conf時(shí),去掉<role write>中的backup

<role writer> ####writer角色配置
 hosts master ###這里只配置一個(gè)Hosts
 ips  192.168.137.100 #####對(duì)外提供的寫操作的虛擬IP
 mode exclusive #####exclusive代表只允許存在一個(gè)主,也就是只能提供一個(gè)寫的IP
</role>

 這樣的話當(dāng)master出現(xiàn)故障了writer寫操作不會(huì)切換到backup服務(wù)器,并且slave也不會(huì)指向新的master,此時(shí)當(dāng)前的MMM之前對(duì)外提供寫服務(wù)。

總結(jié)

主從的延時(shí)會(huì)導(dǎo)致寫VIP的切換。

       1.對(duì)外提供讀寫的虛擬IP是由monitor程序控制。如果monitor沒(méi)有啟動(dòng)那么db服務(wù)器不會(huì)被分配虛擬ip,但是如果已經(jīng)分配好了虛擬ip當(dāng)monitor程序關(guān)閉了原先分配的虛擬ip不會(huì)立即關(guān)閉外部程序還可以連接訪問(wèn)(只要不重啟網(wǎng)絡(luò)),這樣的好處就是對(duì)于monitor的可靠性要求就會(huì)低一些,目前還不知道能維持多長(zhǎng)的時(shí)間,但是如果這個(gè)時(shí)候其中的某一個(gè)db服務(wù)器故障了就無(wú)法處理切換,也就是原先的虛擬ip還是維持不變,掛掉的那臺(tái)DB的虛擬ip會(huì)變的不可訪問(wèn)。

       2.agent程序受monitor程序的控制處理write切換,從庫(kù)切換等操作。如果monitor進(jìn)程關(guān)閉了那么agent進(jìn)程就起不到什么作用,它本身不能處理故障。

       3.monitor程序負(fù)責(zé)監(jiān)控db服務(wù)器的狀態(tài),包括Mysql數(shù)據(jù)庫(kù)、服務(wù)器是否運(yùn)行、復(fù)制線程是否正常、主從延時(shí)等;它還用于控制agent程序處理故障。

       4.monitor會(huì)每隔幾秒鐘監(jiān)控db服務(wù)器的狀態(tài),如果db服務(wù)器已經(jīng)從故障變成了正常,那么monitor會(huì)自動(dòng)在60s之后將其設(shè)置為online狀態(tài)(默認(rèn)是60s可以設(shè)為其它的值),有監(jiān)控端的配置文件參數(shù)“auto_set_online”決定,群集服務(wù)器的狀態(tài)有三種分別是:HARD_OFFLINE→AWAITING_RECOVERY→online

       5.默認(rèn)monitor會(huì)控制mmm_agent會(huì)將writer db服務(wù)器read_only修改為OFF,其它的db服務(wù)器read_only修改為ON,所以為了嚴(yán)謹(jǐn)可以在所有的服務(wù)器的my.cnf文件中加入read_only=1由monitor控制來(lái)控制writer和read,root用戶和復(fù)制用戶不受read_only參數(shù)的影響

以上就是本文的全部?jī)?nèi)容,希望本文對(duì)大家學(xué)習(xí)mysql有所幫助。

相關(guān)文章

  • MySQL臨時(shí)表的使用方法詳解

    MySQL臨時(shí)表的使用方法詳解

    在寫查詢時(shí)我們會(huì)經(jīng)常用到臨時(shí)表來(lái)存儲(chǔ)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL臨時(shí)表的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • MySql比較運(yùn)算符正則式匹配REGEXP的詳細(xì)使用詳解

    MySql比較運(yùn)算符正則式匹配REGEXP的詳細(xì)使用詳解

    這篇文章主要介紹了MySql比較運(yùn)算符正則式匹配REGEXP的詳細(xì)使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 解決MySQL數(shù)據(jù)庫(kù)鏈接超時(shí)報(bào)1129錯(cuò)誤問(wèn)題

    解決MySQL數(shù)據(jù)庫(kù)鏈接超時(shí)報(bào)1129錯(cuò)誤問(wèn)題

    MySQL?為了數(shù)據(jù)庫(kù)的安全性默認(rèn)在鏈接中斷或者錯(cuò)誤時(shí)記錄錯(cuò)誤鏈接的ip?等信息(host_cache),有點(diǎn)像系統(tǒng)的錯(cuò)誤日志的一種機(jī)制,這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)鏈接超時(shí)報(bào)1129錯(cuò)誤解決辦法,需要的朋友可以參考下
    2022-10-10
  • Mysql表如何按照日期字段的年月分區(qū)

    Mysql表如何按照日期字段的年月分區(qū)

    這篇文章主要介紹了Mysql表如何按照日期字段的年月分區(qū)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • MySQL開(kāi)啟慢查詢方法及實(shí)例

    MySQL開(kāi)啟慢查詢方法及實(shí)例

    這篇文章主要介紹了MySQL開(kāi)啟慢查詢方法及實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • mysql 8.0.22 安裝配置圖文教程

    mysql 8.0.22 安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.22 安裝配置圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份

    在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份

    備份是容災(zāi)的基礎(chǔ),是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全部或部分?jǐn)?shù)據(jù)集合從應(yīng)用主機(jī)的硬盤或陣列復(fù)制到其它的存儲(chǔ)介質(zhì)的過(guò)程,本文將給大家介紹了在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下
    2023-12-12
  • MySQL中批量更新數(shù)據(jù)的幾種常用方法

    MySQL中批量更新數(shù)據(jù)的幾種常用方法

    本文總結(jié)了MySQL批量更新數(shù)據(jù)的多種方法及優(yōu)化建議,推薦使用CASE WHEN語(yǔ)句,強(qiáng)調(diào)索引、分批處理與事務(wù)控制,提醒注意備份和環(huán)境驗(yàn)證,選擇方法需根據(jù)實(shí)際需求與性能要求,需要的朋友可以參考下
    2025-10-10
  • MySQL中的視圖特性使用及說(shuō)明

    MySQL中的視圖特性使用及說(shuō)明

    視圖是虛擬表,由查詢定義,包含列和行數(shù)據(jù),其與基表數(shù)據(jù)相互影響,修改任一方均會(huì)同步變化,創(chuàng)建需唯一命名,不可添加索引或觸發(fā)器,可提升安全性,ORDER BY在視圖中優(yōu)先,但被SELECT中的覆蓋
    2025-10-10
  • 使用mysql中遇到的幾個(gè)問(wèn)題

    使用mysql中遇到的幾個(gè)問(wèn)題

    首先mysql不是可視化的,可以通過(guò)命令行進(jìn)行操作,包括創(chuàng)建數(shù)據(jù)庫(kù)、表、添加數(shù)據(jù)等等。那豈不是很不方便了嗎?
    2009-07-07

最新評(píng)論

咸宁市| 阜宁县| 高唐县| 大港区| 揭西县| 建始县| 谢通门县| 乐安县| 冷水江市| 微博| 阜新市| 利辛县| 青浦区| 辉县市| 黑山县| 临洮县| 中山市| 阜宁县| 泸水县| 惠来县| 江城| 渑池县| 会宁县| 德令哈市| 碌曲县| 江永县| 正镶白旗| 沧州市| 兴和县| 安岳县| 通化县| 平阴县| 苗栗市| 南靖县| 白银市| 沧州市| 清徐县| 德格县| 城市| 东山县| 和龙市|