使用mysql-mmm实现mysql集群部署_MySQL
背景:之前实现的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服务启动,再查看状态:

读写服务器又分开了


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

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

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

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

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

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

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