自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【博文推薦】Microsoft Azure部署MYSQL-MMM過(guò)程詳解

云計(jì)算 MySQL
MMM即Master-Master Replication Manager for MySQL(mysql主主復(fù)制管理器)關(guān)于mysql主主復(fù)制配置的監(jiān)控、故障轉(zhuǎn)移和管理的一套可伸縮的腳本套件(在任何時(shí)候只有一個(gè)節(jié)點(diǎn)可以被寫 入),這個(gè)套件也能對(duì)居于標(biāo)準(zhǔn)的主從配置的任意數(shù)量的從服務(wù)器進(jìn)行讀負(fù)載均衡,所以你可以用它來(lái)在一組居于復(fù)制的服務(wù)器啟動(dòng)虛擬ip,除此之外,它還有實(shí) 現(xiàn)數(shù)據(jù)備份、節(jié)點(diǎn)之間重新同步功能的腳本。
  本博文出自51CTO博客之星李珣博主,有任何問(wèn)題請(qǐng)進(jìn)入博主頁(yè)面互動(dòng)討論!

博文地址:http://lixun.blog.51cto.com/4198640/1629177

MMM即Master-Master Replication Manager for MySQL(mysql主主復(fù)制管理器)關(guān)于mysql主主復(fù)制配置的監(jiān)控、故障轉(zhuǎn)移和管理的一套可伸縮的腳本套件(在任何時(shí)候只有一個(gè)節(jié)點(diǎn)可以被寫 入),這個(gè)套件也能對(duì)居于標(biāo)準(zhǔn)的主從配置的任意數(shù)量的從服務(wù)器進(jìn)行讀負(fù)載均衡,所以你可以用它來(lái)在一組居于復(fù)制的服務(wù)器啟動(dòng)虛擬ip,除此之外,它還有實(shí) 現(xiàn)數(shù)據(jù)備份、節(jié)點(diǎn)之間重新同步功能的腳本。

MySQL本身沒(méi)有提供replication failover的解決方案,通過(guò)MMM方案能實(shí)現(xiàn)服務(wù)器的故障轉(zhuǎn)移,從而實(shí)現(xiàn)mysql的高可用。

MMM項(xiàng)目來(lái)自 Google:http://code.google.com/p/mysql-master-master

官方網(wǎng)站為:http://mysql-mmm.org

MMM主要功能由下面三個(gè)腳本提供

  • l mmm_mond 負(fù)責(zé)所有的監(jiān)控工作的監(jiān)控守護(hù)進(jìn)程,決定節(jié)點(diǎn)的移除等等
  • l mmm_agentd 運(yùn)行在mysql服務(wù)器上的代理守護(hù)進(jìn)程,通過(guò)簡(jiǎn)單遠(yuǎn)程服務(wù)集提供給監(jiān)控節(jié)點(diǎn)
  • l mmm_control 通過(guò)命令行管理mmm_mond進(jìn)程

在兩個(gè)節(jié)點(diǎn)的master-master環(huán)境下,MMM使用5個(gè)IP。每個(gè)單獨(dú)的節(jié)點(diǎn)使用一個(gè)固定IP,這個(gè)固定IP永遠(yuǎn)不會(huì)變化。

2個(gè)reader IPs(read-only)和一個(gè)writer IP(updates),后面三個(gè)IP(2個(gè)reader IP和一個(gè)Writer IP)在兩個(gè)節(jié)點(diǎn)之間遷移,如何遷移取決于節(jié)點(diǎn)的可用性。

正 常情況下(沒(méi)有復(fù)制失敗,沒(méi)有復(fù)制延遲等)活動(dòng)的master有兩個(gè)虛擬ip(reader和writer),備用的master有一個(gè)虛擬 ip(reader),如果活動(dòng)的master失敗了,那么所有的reader和writer虛擬IP都會(huì)被分配給備用的master。

具體的配置信息如下所示:

  1. 角色 ip地址 主機(jī)名字 server-id  
  2.  
  3. monitoring      10.0.0.6            monitor        -  
  4.  
  5. master1         10.0.0.4            db1                1  
  6.  
  7. master2         10.0.0.5            db2                 2  
  8.  
  9. slave1          10.0.0.7            db3                 3 

業(yè)務(wù)中的服務(wù)ip信息如下所示:

  1. ip地址                 角色                描述  
  2.  
  3. 10.0.0.80           write                應(yīng)用程序連接該ip對(duì)主庫(kù)進(jìn)行寫請(qǐng)求  
  4.  
  5. 10.0.0.90           read                  應(yīng)用程序連接該ip進(jìn)行讀請(qǐng)求  
  6.  
  7. 10.0.0.100          read                   應(yīng)用程序連接該ip進(jìn)行讀請(qǐng)求 

部署架構(gòu)如下圖:

Microsoft Azure部署MYSQL-MMM(1)安裝MYSQL


MySQL-MMM優(yōu)缺點(diǎn)

優(yōu)點(diǎn):高可用性,擴(kuò)展性好,出現(xiàn)故障自動(dòng)切換,對(duì)于主主同步,在同一時(shí)間只提供一臺(tái)數(shù)據(jù)庫(kù)寫操作,保證的數(shù)據(jù)的一致性。

缺點(diǎn):Monitor節(jié)點(diǎn)是單點(diǎn),可以結(jié)合Keepalived實(shí)現(xiàn)高可用。

#p#

具體的部署步驟如下:

(1)主機(jī)配置

在Azure中創(chuàng)建一個(gè)虛擬網(wǎng)絡(luò),然后在庫(kù)中創(chuàng)建虛擬機(jī),選擇基于CENTOS Openlogic 6.5

PS:由于MMM的監(jiān)控機(jī)制需要檢查PING,請(qǐng)確保所有虛擬機(jī)在一個(gè)VNET下。

Microsoft Azure部署MYSQL-MMM(1)安裝MYSQL

同時(shí)完成四臺(tái)虛擬機(jī)的創(chuàng)建,分別是master1、master2、slave、monitor,如下圖:

Microsoft Azure部署MYSQL-MMM(1)安裝MYSQL

使用那個(gè)Xshell連接到VM

Microsoft Azure部署MYSQL-MMM(1)安裝MYSQL

首先獲取root權(quán)限并修改root密碼,如下操作

Sudo su -

輸入密碼

Passwd root

Microsoft Azure部署MYSQL-MMM(1)安裝MYSQL

在每一臺(tái)服務(wù)器上用yum命令安裝MYSQL服務(wù)

  1. # yum install mysql-server 

Microsoft Azure部署MYSQL-MMM(1)安裝MYSQL

安裝完成后重啟MYSQL服務(wù)

  1. # service mysqld restart 

Microsoft Azure部署MYSQL-MMM(1)安裝MYSQL

連接到mysql,修改mysql root密碼,如下操作:

  1. # mysql -uroot 
  2.  
  3. use mysql 
  4.  
  5. update user set password=password('p@ssw0rd'where user='root'
  6.  
  7. flush privileges

 

Microsoft Azure部署MYSQL-MMM(1)安裝MYSQL

select user,host,password from mysql.user

Microsoft Azure部署MYSQL-MMM(1)安裝MYSQL

#p#

(2)配置Master-Master復(fù)制

在db1(master1)、db2(master2)、db3(slave)上編譯my.conf

  1. #vi /etc/my.cnf 
  2.  
  3. [mysqld] 
  4.  
  5. datadir=/var/lib/mysql 
  6.  
  7. socket=/var/lib/mysql/mysql.sock 
  8.  
  9. user=mysql 
  10.  
  11. #下面為新添加的內(nèi)容 
  12.  
  13. default-storage-engine = innodb 
  14.  
  15. replicate-ignore-db = mysql 
  16.  
  17. binlog-ignore-db = mysql 
  18.  
  19. server-id = 1 #每臺(tái)服務(wù)器不能相同 
  20.  
  21. log-bin = /var/log/mysql/mysql-bin.log 
  22.  
  23. log_bin_index = /var/log/mysql/mysql-bin.log.index 
  24.  
  25. relay_log = /var/log/mysql/mysql-bin.relay 
  26.  
  27. relay_log_index = /var/log/mysql/mysql-bin.relay.index 
  28.  
  29. expire_logs_days = 10 
  30.  
  31. max_binlog_size = 100M 
  32.  
  33. log_slave_updates = 1 

 Microsoft Azure部署MYSQL-MMM

注意:

1)server-id在每臺(tái)服務(wù)器上的值都是不一樣,在這里依次為1、2、3、4。

2) 因?yàn)樵谶@里把log文件配置到了/var/log/mysql下,而mysql默認(rèn)的目錄是在/var/lib/mysql,所以首先要新建mysql文 件夾,Mkdir /var/log/mysql,然后用chown -R mysql.mysql /var/log/mysql mysql命令將mysql的所有者修改為用戶mysql。其次要保證,mysql文件夾的權(quán)限755(即-rwxr-xr-x)。

如果沒(méi) 有修改權(quán)限和所有者,重啟服務(wù)時(shí)就會(huì)在錯(cuò)誤日志中出現(xiàn)找不到mysql-bin.log或者mysql-bin.log.index的錯(cuò)誤(/usr /libexec/mysqld: File '/var/log/mysql/mysql-bin.log.index' not found (Errcode: 13))。

完成編譯后重啟MYSQL服務(wù)

 Microsoft Azure部署MYSQL-MMM

檢查復(fù)制狀態(tài),如下圖:

show master status;

 Microsoft Azure部署MYSQL-MMM

檢查日志是否生成道新目錄,如下

# ls /var/log/mysql

 Microsoft Azure部署MYSQL-MMM

使用mysql-mmm時(shí)一共需要三個(gè)用戶: replication、mmm_agent和mmm_monitor(管理服務(wù)器上用來(lái)監(jiān)控cluster狀態(tài)的用戶,所以可以限定只能從管理服務(wù)器登錄)。使用下面三條命令新建這三個(gè)用戶并分配相應(yīng)的權(quán)限

GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'10.0.0.%' IDENTIFIED BY 'monitor';

GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'10.0.0.%' IDENTIFIED BY 'agent';

GRANT REPLICATION SLAVE ON *.* TO 'replication'@'10.0.0.%' IDENTIFIED BY 'replication';

接下來(lái)再db1和db2分別執(zhí)行下面命令修改復(fù)制賬戶和密碼。并啟動(dòng)SLAVE進(jìn)程。

change master to master_host='10.0.0.4', master_port=3306, master_user='replication', master_password='replication';start slave;

change master to master_host='10.0.0.5', master_port=3306, master_user='replication', master_password='replication';start slave;

 Microsoft Azure部署MYSQL-MMM

檢查復(fù)制狀態(tài),如下圖:

show slave status\G

 Microsoft Azure部署MYSQL-MMM

#p#

(3)安裝配置MYSQL-MMM

在db1、db2、db3安裝MMM所需要的Perl模塊(所有服務(wù)器)執(zhí)行該腳本,然后 yum -y install mysql-mmm-agent來(lái)安裝MMM :

  1. # rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
  2.  
  3. # yum -y install mysql-mmm-agent 

 Microsoft Azure部署MYSQL-MMM

在Monitor節(jié)點(diǎn)安裝mysql-mmm-monitor

  1. # yum -y install mysql-mmm-monitor* 
  2.  
  3. # yum -y install perl-Time-HiRes* 

編譯DB1上的mmm_common.conf配置agent:

  1. # sudo vim /etc/mysql-mmm/mmm_common.conf 
  2.  
  3. active_master_role writer 
  4.  
  5. cluster_interface eth0 
  6.  
  7. pid_path /var/run/mysql-mmm/mmm_agentd.pid 
  8.  
  9. bin_path /usr/libexec/mysql-mmm/ 
  10.  
  11. replication_user replication 
  12.  
  13. replication_password replication 
  14.  
  15. agent_user mmm_agent 
  16.  
  17. agent_password agent 
  18.  
  19. ip 10.0.0.4 
  20.  
  21. mode master 
  22.  
  23. peer db2 
  24.  
  25. ip 10.0.0.5 
  26.  
  27. mode master 
  28.  
  29. peer db1 
  30.  
  31. ip 10.0.0.7 
  32.  
  33. mode slave 
  34.  
  35. hosts db1, db2 
  36.  
  37. ips 10.0.0.100 
  38.  
  39. mode exclusive 
  40.  
  41. hosts db2, db3 
  42.  
  43. ips 10.0.0.80, 10.0.0.90 
  44.  
  45. mode balanced 

其中 replication_user 用于檢查復(fù)制的用戶, agent_user 為agent的用戶, mode 標(biāo)明是否為主或者備選主,或者從庫(kù)。 mode exclusive 主為獨(dú)占模式,同一時(shí)刻只能有一個(gè)主, 中hosts表示目前的主庫(kù)和備選主的真實(shí)主機(jī)ip或者主機(jī)名, ips 為對(duì)外提供的虛擬機(jī)ip地址, 中hosts代表從庫(kù)真實(shí)的ip和主機(jī)名, ips 代表從庫(kù)的虛擬ip地址。

完成編譯后通過(guò)scp復(fù)制到db2、db3、monitor節(jié)點(diǎn):

  1. # scp /etc/mysql-mmm/mmm_common.conf 10.0.0.5:/etc/mysql-mmm/ 
  2.  
  3. # scp /etc/mysql-mmm/mmm_common.conf 10.0.0.7:/etc/mysql-mmm/ 
  4.  
  5. # scp /etc/mysql-mmm/mmm_common.conf 10.0.0.6:/etc/mysql-mmm/ 

Microsoft Azure部署MYSQL-MMM

分別在db1,db2,db3三臺(tái)主機(jī)的/etc/mysql-mmm配置mmm_agent.conf文件,分別用不同的字符標(biāo)識(shí),注意這三臺(tái)機(jī)器的this db1這塊要想,比如本環(huán)境中,db1要配置this db1,db2要配置為this db2,而db3要配置為this db3。

  1. # sudo vim /etc/mysql-mmm/mmm_agent.conf 

 Microsoft Azure部署MYSQL-MMM

在monitor節(jié)點(diǎn)編譯monitor配置文件,添加ping_ips中的內(nèi)容

  1. # sudo vim /etc/mysql-mmm/mmm_mon.conf 

 

Microsoft Azure部署MYSQL-MMM

在db1、db2、db3啟動(dòng)agent服務(wù)

  1. # service mysql-mmm-agent start 

 

 

Microsoft Azure部署MYSQL-MMM

在monitor啟動(dòng)monitor服務(wù)


 

責(zé)任編輯:Ophira 來(lái)源: 51CTO
相關(guān)推薦

2014-12-12 10:46:55

Azure地緣組affinitygro

2015-03-16 13:44:34

Multi-Site site-2-site微軟Azure

2015-04-17 11:15:01

Windows Azu虛擬機(jī)SCVMM

2014-12-22 11:04:30

Windows AzuiPhone虛擬機(jī)

2015-07-29 13:46:27

OpenStackIcehouse私有云實(shí)戰(zhàn)部署

2015-12-10 10:13:22

2015-05-15 10:04:28

localhost

2015-05-27 09:17:50

AzureDocker

2015-04-21 09:58:09

Azure混合云實(shí)例級(jí)公共IP

2015-06-04 11:17:12

2015-06-17 09:34:09

軟件定義存儲(chǔ) 云存儲(chǔ)

2015-07-01 10:25:07

Docker開(kāi)源項(xiàng)目容器

2015-05-25 09:51:55

Azure混合云平臺(tái)VPN技術(shù)

2015-03-30 13:24:31

主從MariaDB實(shí)例部署

2014-10-23 09:47:28

安全運(yùn)維Iperf

2015-03-18 13:18:45

MySQLSQL優(yōu)化

2015-06-15 13:06:23

項(xiàng)目項(xiàng)目經(jīng)驗(yàn)

2015-09-29 10:26:51

pythonlogging模塊

2015-06-02 16:16:17

mysql優(yōu)化mysql讀寫分離mysql主從復(fù)制

2014-03-26 14:38:16

Windows Azu
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)