首頁 資料庫 mysql教程 使用mysql-mmm实现mysql集群部署_MySQL

使用mysql-mmm实现mysql集群部署_MySQL

Jun 01, 2016 pm 01:02 PM
叢集

背景:之前实现的mysql同步复制功能(见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937)只是双机热备功能,还不能做到Mysql链接的自动切换。

本配置实现真正的mysql集群,使得在某台机子的mysql应用停止时,能让应用程序自动切换到另外一台机子的mysql连接,实现应用的高稳定性,并且使得扩展Mysql服务成为可能。

本配置使用mysql-mmm(master-master Replication Manager for MySQL)组件实现集群功能。

本次演示的配置使用三台机器,架构如下:

\

Master1 和Master2两台机器实现双机热备,其中一台机器的mysql服务停止或机器宕机,应用程序都会将数据库连接自动切换到另外一台机子。另外用一台机子实时备份master1的数据。

1、安装mysql-mmm服务

在三台机器都安装

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum -y install mysql-mmm*

完成后查看 rpm -qa|grep mysql-mmm

有以下组件表示安装成功

\

Rhel5或centos5,32位:http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

Rhel6或centos6,32位:http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm

Rhel6或centos6,64位:http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

1、添加mysql的用户

在三台机器都添加mysql用户,分别用于复制、

进入mysql服务mysql -u root -p

use mysql;

grant REPLICATION slave,REPLICATION CLIENT on *.* to 'repl'@'%' identified by 'password'; //建立复制用户

grant PROCESS,SUPER,REPLICATION CLIENT on *.* to 'mmm_agent'@'%' identified by 'password'; //建立agent用户

grant REPLICATION CLIENT on *.* to 'mmm_monitor'@'%' identified by 'password'; //建立用户

FLUSH PRIVILEGES;

2、配置同步复制

配置复制的策略如架构图所示。

配置方法在我上一篇文章有介绍过,这里不再重复,见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937

3、修改hosts

分别修改三台机器的hosts文件

vi /etc/hosts

添加

200.200.168.24 M1

200.200.168.25 M2

200.200.168.23 slave1

4、配置mysql-mmm

修改 /etc/mysql-mmm/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        repl
    replication_password    password
    agent_user              mmm_agent
    agent_password          <span style="font-size: 13.3333339691162px;">password</span>
</host>

<host M1>
    ip      200.200.168.24
    mode    master
    peer    M2
</host>

<host M2>
    ip      200.200.168.25
    mode    master
    peer    M1
</host>

<host slave1>
    ip      200.200.168.23
    mode    slave
</host>

<role writer>
    hosts   M1,M2
    ips     200.200.168.26
    mode    exclusive
</role>

<role reader>
    hosts   M1,M2,slave1
    ips     200.200.168.27
    mode    balanced
</role>
登入後複製

注意:200.200.168.26和200.200.168.27是两个虚拟的IP地址,供应用程序调用,只需用两个没人占用的IP就可以,分别用来提供写和读服务,为以后实现数据库的读写分离(但实现读写分离需要修改应用程序,mysql并不能自动识别并切换)。

修改/etc/mysql-mmm/mmm_agent.conf

三台机器分别设置为this M1、this M2、this slave1

修改/etc/mysql-mmm/mmm_mon.conf

只是monitor(200.200.168.24)机子需要配置

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
    ping_ips            200.200.168.24,200.200.168.25,200.200.168.23
    auto_set_online     10

    # 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
    monitor_password    password
</host>
debug 0
登入後複製

配置完成后运行

三台机子都需运行:

/etc/init.d/mysql-mmm-agent start

Monitor机子运行

/etc/init.d/mysql-mmm-monitor start

5、查看服务状态及测试

在monitor机子运行mmm_control show

可以看到以下信息:

\

表示写服务器(200.200.168.26)使用的是200.200.168.24

读服务器(200.200.168.27)使用的是200.200.168.25

查看各个服务的状态:

mmm_control checks all

\

6、测试:

将master1的mysql服务停止,然后mmm_control show查看状态

\

可以看到读写服务器都转移到了master2,这时服务器master1的流程应用还能够正常使用,可以进行申请流程测试

这时查看mmm_control checks all

\

将master1 的mysql服务启动,再查看状态:

\

读写服务器又分开了

\
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

節點從Proxmox VE徹底撤離及再次加入集群 節點從Proxmox VE徹底撤離及再次加入集群 Feb 21, 2024 pm 12:40 PM

節點從ProxmoxVE徹底撤離及再次加入叢集場景描述當ProxmoxVE叢集中有節點損壞無法快速修復時,需要將故障節點乾淨的從叢集踢出,並把殘留資訊清理乾淨。否則,新的節點用故障節點曾使用用的IP的位址將無法正常加入叢集;同樣,從叢集中脫離出來的故障節點修復後,雖然與叢集已經毫無關係,但存取此單節點的Web管理後台,將出現原ProxmoxVE叢集其它節點的訊息,非常惱火。從集群中驅逐節點如果ProxmoxVE是Ceph超融合集群,則需要登入集群任意節點(欲刪除節點除外)宿主系統Debian,命令

PHP高併發環境下資料庫的最佳化方法 PHP高併發環境下資料庫的最佳化方法 Aug 11, 2023 pm 03:55 PM

PHP高並發環境下資料庫的最佳化方法隨著網路的快速發展,越來越多的網站和應用程式需要面對高並發的挑戰。在這種情況下,資料庫的效能最佳化變得特別重要,尤其是對於使用PHP作為後端開發語言的系統。本文將介紹一些在PHP高並發環境下資料庫的最佳化方法,並給出對應的程式碼範例。使用連線池在高並發環境下,頻繁地建立和銷毀資料庫連線可能會導致效能瓶頸。因此,使用連接池可以

如何使用Docker進行多節點叢集的管理與擴充 如何使用Docker進行多節點叢集的管理與擴充 Nov 07, 2023 am 10:06 AM

在當今雲端運算時代,容器化技術已成為開源界最受歡迎的技術之一。 Docker的出現使得雲端運算變得更加便利、高效,成為了開發人員、維運人員不可或缺的工具。而多節點叢集技術的應用更是在Docker的基礎上被廣泛使用。透過多節點叢集部署,我們可以更有效地利用資源,提高可靠性和可擴展性,同時也能更靈活地進行部署和管理。接下來,我們將為大家介紹如何使用Docker進

php常見的叢集有哪些 php常見的叢集有哪些 Aug 31, 2023 pm 05:45 PM

php常見的群集有LAMP群集、Nginx群集、Memcached群集、Redis群集和Hadoop群集。詳細介紹:1、LAMP集群,LAMP是指Linux、Apache、MySQL和PHP的組合,是一種常見的PHP開發環境,在LAMP集群中,多個伺服器運行相同的應用程序,並透過負載平衡器將請求分發到不同的伺服器上;2、Nginx集群,Nginx是一種高效能的Web伺服器等等。

如何使用MongoDB實現資料的叢集和負載平衡功能 如何使用MongoDB實現資料的叢集和負載平衡功能 Sep 19, 2023 pm 01:22 PM

如何使用MongoDB實作資料的叢集和負載平衡功能引言:在當今大數據時代,資料量的快速成長對資料庫的效能提出了更高的要求。為了滿足這些要求,資料的叢集化和負載平衡成為了不可或缺的技術手段。 MongoDB作為一種成熟的NoSQL資料庫,提供了豐富的功能和工具來支援資料的叢集和負載平衡。本文將介紹如何使用MongoDB實現資料的叢集和負載平衡功能,並提供具體的代

Workerman文檔中的伺服器叢集實作方法 Workerman文檔中的伺服器叢集實作方法 Nov 08, 2023 pm 08:09 PM

Workerman是高效能的PHPSocket框架,可以讓PHP更有效率地處理非同步網路通訊。在Workerman的文檔中,有關於伺服器叢集實作方法的詳細說明和程式碼範例。為了實現伺服器集群,首先需要明確伺服器集群的概念。伺服器叢集是將多台伺服器連接到一個網路中,透過共享負載和資源,提高系統的效能、可靠性和可擴充性。在Workerman中,可以透過以下兩種

MySQL叢集部署與維護專案經驗總結 MySQL叢集部署與維護專案經驗總結 Nov 02, 2023 pm 01:33 PM

MySQL叢集部署與維護專案經驗總結MySQL是網路應用開發中最常用的資料庫之一,隨著業務規模不斷擴大,單機的MySQL已經無法滿足需求,因此需要考慮採用MySQL叢集方案來擴展資料庫的效能與容量。本文總結了在MySQL叢集部署與維護過程中的經驗與教訓,希望能對大家的MySQL叢集部署與維護工作有所幫助。一、MySQL叢集的部署與架構設計MySQL叢集的

如何配置MySQL資料庫的叢集環境? 如何配置MySQL資料庫的叢集環境? Jul 12, 2023 pm 02:52 PM

如何配置MySQL資料庫的叢集環境?引言:隨著網路的發展和資料量的不斷增長,資料庫成了每個企業都必備的核心系統之一。同時,為了確保資料的高可用性和讀寫效能的需求,資料庫叢集環境逐漸成為企業的選擇。本文將介紹如何設定MySQL資料庫的叢集環境,並提供對應的程式碼範例。一、環境準備在設定MySQL資料庫的叢集環境之前,我們需要確保以下環境準備工作已經完成:安裝M

See all articles