使用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服务启动,再查看状态:

读写服务器又分开了


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Szenariobeschreibung für die vollständige Evakuierung von Knoten aus ProxmoxVE und den erneuten Beitritt zum Cluster. Wenn ein Knoten im ProxmoxVE-Cluster beschädigt ist und nicht schnell repariert werden kann, muss der fehlerhafte Knoten sauber aus dem Cluster entfernt und die verbleibenden Informationen bereinigt werden. Andernfalls können neue Knoten, die die vom fehlerhaften Knoten verwendete IP-Adresse verwenden, dem Cluster nicht normal beitreten, nachdem der fehlerhafte Knoten, der sich vom Cluster getrennt hat, repariert wurde, obwohl dies nichts mit dem Cluster zu tun hat Sie können nicht auf die Webverwaltung dieses einzelnen Knotens zugreifen. Im Hintergrund werden Informationen zu anderen Knoten im ursprünglichen ProxmoxVE-Cluster angezeigt, was sehr ärgerlich ist. Entfernen Sie Knoten aus dem Cluster. Wenn es sich bei ProxmoxVE um einen hyperkonvergenten Ceph-Cluster handelt, müssen Sie sich bei jedem Knoten im Cluster (außer dem Knoten, den Sie löschen möchten) auf dem Hostsystem Debian anmelden und den Befehl ausführen

Optimierungsmethode der Datenbank in einer PHP-Umgebung mit hoher Parallelität Mit der rasanten Entwicklung des Internets müssen sich immer mehr Websites und Anwendungen hohen Herausforderungen der Parallelität stellen. In diesem Fall wird die Optimierung der Datenbankleistung besonders wichtig, insbesondere für Systeme, die PHP als Backend-Entwicklungssprache verwenden. In diesem Artikel werden einige Datenbankoptimierungsmethoden in einer PHP-Umgebung mit hoher Parallelität vorgestellt und entsprechende Codebeispiele gegeben. Verwenden von Verbindungspooling In einer Umgebung mit hoher Parallelität kann das häufige Erstellen und Zerstören von Datenbankverbindungen zu Leistungsengpässen führen. Daher kann die Verwendung von Verbindungspooling erfolgen

Im heutigen Cloud-Computing-Zeitalter ist die Containerisierungstechnologie zu einer der beliebtesten Technologien in der Open-Source-Welt geworden. Das Aufkommen von Docker hat Cloud Computing komfortabler und effizienter gemacht und ist zu einem unverzichtbaren Werkzeug für Entwickler sowie Betriebs- und Wartungspersonal geworden. Die Anwendung der Multi-Node-Cluster-Technologie basierend auf Docker ist weit verbreitet. Durch die Bereitstellung von Clustern mit mehreren Knoten können wir Ressourcen effizienter nutzen, die Zuverlässigkeit und Skalierbarkeit verbessern und außerdem flexibler bei der Bereitstellung und Verwaltung sein. Als Nächstes stellen wir die Verwendung von Docker vor

Zu den gängigen Clustern in PHP gehören LAMP-Cluster, Nginx-Cluster, Memcached-Cluster, Redis-Cluster und Hadoop-Cluster. Detaillierte Einführung: 1. LAMP-Cluster. LAMP bezieht sich auf eine Kombination aus Linux, Apache, MySQL und PHP. In einem LAMP-Cluster wird die gleiche Anwendung ausgeführt und über einen Lastausgleichsdienst ausgeglichen 2. Nginx-Cluster, Nginx ist ein Hochleistungs-Webserver und so weiter.

So verwenden Sie MongoDB zum Implementieren von Daten-Clustering- und Lastausgleichsfunktionen. Einführung: Im heutigen Big-Data-Zeitalter hat das schnelle Wachstum des Datenvolumens höhere Anforderungen an die Datenbankleistung gestellt. Um diesen Anforderungen gerecht zu werden, sind Datenclustering und Lastausgleich zu unverzichtbaren technischen Mitteln geworden. Als ausgereifte NoSQL-Datenbank bietet MongoDB umfangreiche Funktionen und Tools zur Unterstützung von Datenclustering und Lastausgleich. In diesem Artikel wird erläutert, wie Sie mit MongoDB Datenclustering- und Lastausgleichsfunktionen implementieren und spezifischen Code bereitstellen

Workerman ist ein leistungsstarkes PHPSocket-Framework, das es PHP ermöglicht, asynchrone Netzwerkkommunikation effizienter abzuwickeln. In der Dokumentation von Workerman finden Sie detaillierte Anweisungen und Codebeispiele zur Implementierung eines Serverclusters. Um einen Servercluster zu implementieren, müssen wir zunächst das Konzept eines Serverclusters klären. Ein Servercluster verbindet mehrere Server mit einem Netzwerk, um die Systemleistung, Zuverlässigkeit und Skalierbarkeit durch die gemeinsame Nutzung von Lasten und Ressourcen zu verbessern. In Workerman können Sie die folgenden zwei Methoden verwenden

Wie konfiguriere ich die Clusterumgebung der MySQL-Datenbank? Einleitung: Mit der Entwicklung des Internets und dem kontinuierlichen Wachstum des Datenvolumens ist die Datenbank zu einem der Kernsysteme geworden, die für jedes Unternehmen notwendig sind. Gleichzeitig sind Datenbankclusterumgebungen nach und nach zur bevorzugten Wahl von Unternehmen geworden, um eine hohe Datenverfügbarkeit sowie Anforderungen an die Lese- und Schreibleistung sicherzustellen. In diesem Artikel wird die Konfiguration der Clusterumgebung der MySQL-Datenbank vorgestellt und entsprechende Codebeispiele bereitgestellt. 1. Umgebungsvorbereitung Bevor wir die Clusterumgebung der MySQL-Datenbank konfigurieren, müssen wir sicherstellen, dass die folgenden Umgebungsvorbereitungen abgeschlossen sind: Installieren Sie M

Zusammenfassung der Erfahrungen mit MySQL-Cluster-Bereitstellung und -Wartung MySQL ist eine der am häufigsten verwendeten Datenbanken bei der Entwicklung von Internetanwendungen. Da der Geschäftsumfang weiter zunimmt, kann eigenständiges MySQL den Bedarf nicht mehr decken MySQL-Clusterlösung zur Erweiterung der Leistung und Kapazität der Datenbank. Dieser Artikel fasst die Erfahrungen und Erkenntnisse aus dem MySQL-Cluster-Bereitstellungs- und -Wartungsprozess zusammen und hofft, für alle bei der MySQL-Cluster-Bereitstellungs- und -Wartungsarbeit hilfreich zu sein. 1. Bereitstellung und Architekturdesign des MySQL-Clusters MySQL-Cluster
