中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是mysql-mmm 高可用群集及怎么樣搭建

發布時間:2020-04-25 14:02:42 來源:億速云 閱讀:241 作者:三月 欄目:MySQL數據庫

本文主要給大家介紹什么是mysql-mmm 高可用群集及怎么樣搭建,希望可以給大家補充和更新些知識,如有其它問題需要了解的可以持續在億速云行業資訊里面關注我的更新文章的。

搭建 mysql-mmm 高可用群集


MMM 簡介 :

MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)復制,雖然叫做雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個slave的read負載均衡
MMM提供了自動和手動兩種方式移除一組云服務器中復制延遲較高的服務器的虛擬ip,同時它還可以備份數據,實現兩節點之間的數據同步等。由于MMM無法完全的保證數據一致性,所以MMM適用于對數據的一致性要求不是很高,但是又想最大程度的保證業務可用性的場景。對于那些對數據的一致性要求很高的業務,非常不建議采用MMM這種高可用架構。

優點:

1 穩定和成熟的開源產品,經過了時間的考驗 核心技術是mysql自己的技術,只是使用腳本程序來控制,所以在原理上比較容易理解,而且管理能夠更智能化。
2 安裝簡單,配置簡單,使用簡單
3 功能強大 (HA,failover,tools套件,cluster模式可以一個monitor管理多個mmm組)

缺點:

1 由于架構里只有一個寫入點,所以擴展性是有限的,但是對一般中型企業夠用了。
解決方案:對于大應用可以采取垂直拆分到多個mmm架構的方式,使用mmm cluster來管理。
2 對于讀寫分離和讀負載均衡還是要程序來開發或者使用其他工具完成。

MMM 高可用架構 :

什么是mysql-mmm 高可用群集及怎么樣搭建

  • mmm_mond:監控進程,負責所有的監控工作,決定和處理所有節點角色活動。此腳本需要在監管機上運行。
  • mmm_agentd:運行在每個mysql服務器上的代理進程,完成監控的探針工作和執行簡單的遠端服務設置。此腳本需要在被監管機上運行。
  • mmm_control:一個簡單的腳本,提供管理mmm_mond進程的命令。

    本案實例 :

主機名系統主要軟件IP虛擬IP
mysql-master1CentOS 7.3 x86_64mmm192.168.217.129192.168.217.100
mysql-master2CentOS 7.3 x86_64mmm192.168.217.130192.168.217.100
mysql-slave1CentOS 7.3 x86_64mmm192.168.217.131192.168.217.200
mysql-slave2CentOS 7.3 x86_64mmm192.168.217.132192.168.217.210
monitorCentOS 7.3 x86_64mmm192.168.217.133

安裝 MMM 在所有服務器上安裝 :

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo   #配置ALI云源,然后安裝epel-release源。

yum clean all && yum makecache      #刪除緩存         下載到本地電腦緩存

yum -y install epel-release       #安裝epel 源  用于安裝 mmm

yum -y install mysql-mmm*     #安裝 mmm 服務  在所有服務器上安裝

配置 MySQL 服務器 :

  • 配置所有的 mysql ,server-id 不同之外其他都相同 :

vim /etc/my.cnf
[mysqld]
user = mysql                   #管理用戶 
basedir = /usr/local/mysql      #工作目錄
datadir = /usr/local/mysql/data         #數據庫文件
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid  #pid 進程文件
socket = /usr/local/mysql/mysql.sock    #鏈接數據庫
server-id = 1  

binlog-ignore-db=mysql,information_schema  #不需要同步的數據庫名稱
log_slave_updates=true   #從服務器更新二進制日志
sync_binlog=1     #同步二進制日志
auto_increment_increment=2  #字段一次遞增值
auto_increment_offset=1     #自增字段的起始值
log-error=/usr/local/mysql/data/mysql_error.log   #錯誤日志
general_log=ON                             #開啟通用日志
general_log_file=/usr/local/mysql/data/mysql_general.log
log_bin=mysql-bin   #二進制日志
slow_query_log=ON   #開啟慢查詢日志 
slow_query_log_file=mysql_slow_query.log 
long_query_time=1
  • 把配置文件復制到其它3臺數據庫服務器上并啟動服務器

    scp /etc/my.cnf root@192.168.217.130:/etc/     #對方有權限的用戶和IP地址  輸入yes 、密碼進行復制 
    systemctl restart mysqld.service    #修改所有數據庫的 server-id 重啟服務
  • 配置主主復制 :

mysql -u root  -p     #進入數據庫
在m1上為m2授予從的權限,在m2上也要為m1授予從的權限
mysql>grant replication slave on *.* to 'replication'@'192.168.217.%' identified by '123456'; 

mysql>show master status;      #記錄日志文件名稱和 位置值,在兩臺主上查看。

mysql>change master to master_host='192.168.217.129',
master_user='replication',master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=1104;
注意 指向的IP地址、日志名稱、偏移量 ,不要搞錯

mysql>start slave;      #開啟同步

mysql>show slave status\G;    #查看鏈接狀態

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
以上兩臺主都執行,從不需要 。可以在主服務器上創建數據庫 、在另一臺主服務器查看、刪除,做測試。
  • 配置兩臺從服務器 :

指向隨便一臺主服務器即可 
mysql>change master to master_host='192.168.217.129',
master_user='replication',master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=1104;
注意 指向的IP地址、日志名稱、偏移量 ,不要搞錯
start slave;

show slave status\G;

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

測試主從、主主、同步 情況

所有主機上都要配置 MMM

  • 配置 mysql-master1  :

    cd /etc/mysql-mmm/
    vim mmm_common.conf 
    ……
    <host default>
    cluster_interface       ens32       #網卡名稱
    ……
    
    replication_user        replication       #主從授權用戶
    replication_password    123456
    agent_user              mmm_agent      #代理用戶
    agent_password          123456
    ....
    <host db1>
    ip      192.168.217.129    #主服務器
    mode    master        
    peer    db2
    </host>
    ....
    <host db2>
    ip      192.168.217.130   #主服務器
    mode    master
    peer    db1
    </host>
    ....
    <host db3>
    ip      192.168.217.131   #從服務器
    mode    slave
    </host>
    ....
    <host db4>
    ip      192.168.217.132  #從服務器
    mode    slave
    </host>
    ....
    <role writer>
    hosts   db1, db2
    ips     192.168.217.100        #主服務器虛擬IP地址
    mode    exclusive
    </role>
    ....
    <role reader>
    hosts   db3, db4
    ips     192.168.217.200, 192.168.217.210   #從服務器虛擬IP地址
    mode    balanced
    </role>
    scp mmm_common.conf root@192.168.217.130:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.217.131:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.217.132:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.217.133:/etc/mysql-mmm/

配置 monitor 服務器上 :

cd /etc/mysql-mmm/
vim mmm_mon.conf
……
 ping_ips            192.168.217.129,192.168.217.130,192.168217.131,192.168.217.132    #數據庫服務器地址
 auto_set_online     10       #設置自動在線時間
……

<host default>
    monitor_user        mmm_monitor     #監控用戶
    monitor_password    123456
</host>

在所有數據庫授權和修改 :

在所有數據庫上為mmm_agent授權
mysql>grant super, replication client, process on *.* to 'mmm_agent'@'192.168.217.%' identified by '123456';

在所有數據庫上為mmm_moniter授權
mysql>grant replication client on *.* to 'mmm_monitor'@'192.168.217.%' identified by '123456';

flush privileges;      #刷新

修改所有數據庫的mmm_agent.conf文件

vim /etc/mysql-mmm/mmm_agent.conf

this db1     #/根據規mmm_common.conf 配置中<host db1> 對應的IP地址 修改

在所有數據庫服務器上啟動代理服務
systemctl start mysql-mmm-agent.service        #開啟代理服務
systemctl enable mysql-mmm-agent.service    #開機自啟動

配置 monitor 服務器上 :

systemctl start mysql-mmm-monitor.service       #啟動監控服務

mmm_control show            #查看各節點的情況
  db1(192.168.217.129) master/ONLINE. Roles: writer(192.168.217.100)
  db2(192.168.217.130) master/ONLINE. Roles: 
  db3(192.168.217.131) slave/ONLINE. Roles: reader(192.168.217.200)
  db4(192.168.217.132) slave/ONLINE. Roles: reader(192.168.217.210)
mmm_control checks all      #各種OK  說明運轉正常
mmm_control move_role writer db2   #手動指定活躍服務器   注意:不會搶占
mmm_control show            #查看各節點的情況
  db1(192.168.217.129) master/ONLINE. Roles:
  db2(192.168.217.130) master/ONLINE. Roles: writer(192.168.217.100)
  db3(192.168.217.131) slave/ONLINE. Roles: reader(192.168.217.200)
  db4(192.168.217.132) slave/ONLINE. Roles: reader(192.168.217.210)
測試 :關閉 mysql-master1 服務 ,查看 mysql-master2 會不會搶占 。注意:等待一段時間查看 。
關閉 mysql-slave1 服務 ,mysql-slave1 虛擬IP會自動漂移到mysql-slave2上 ,mysql-slave2上會有兩個地址 。

看了以上關于什么是mysql-mmm 高可用群集及怎么樣搭建,希望能給大家在實際運用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補充的地方,如有需要更加專業的解答,可在官網聯系我們的24小時售前售后,隨時幫您解答問題的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马尔康县| 贺兰县| 张家川| 平舆县| 会泽县| 沈丘县| 抚宁县| 桑日县| 庆元县| 共和县| 弋阳县| 庄浪县| 勃利县| 华蓥市| 读书| 青阳县| 托克逊县| 时尚| 辽中县| 扶沟县| 沾化县| 宾川县| 阿克| 元氏县| 保定市| 博野县| 岫岩| 蕉岭县| 仙桃市| 金门县| 博客| 双桥区| 商都县| 达尔| 易门县| 东阿县| 阿拉善右旗| 元氏县| 东丰县| 华阴市| 嘉定区|