Heim Datenbank MySQL-Tutorial MySQL-MMM的负载均衡及高可用

MySQL-MMM的负载均衡及高可用

Jun 07, 2016 pm 05:25 PM
mysql 负载均衡 高可用

用途mmm是基于信息探测方式进行mysql主从复制架构的监测与故障转移mmm可以做到负载均衡,100%的数据可用性mmm所涉及的检查项服务器可达性,服务可达性,复制线程可

用途
 mmm是基于信息探测方式进行mysql主从复制架构的监测与故障转移
 mmm可以做到负载均衡,100%的数据可用性
 mmm所涉及的检查项   服务器可达性,服务可达性,复制线程可控性

 如图: 当 master1在宕机时, mmm可以将之前分摊的流量进行转移,甚至于将从服务器提升为主

延续双主模型.

wKioL1NT5nvQXXy2AADZ8aMp5QU075.jpg


mmm-agent端状态一览
   online 节点可用
   replication_delay 复制延迟或无法进行(检查req_backlog文件)
   replication_fail 复制失败
   awating_recovery 等待恢复
   hard_offline  主机离线
   admin_offline  主控端离线
   unknown  未知错误

规划如下
172.16.43.200  主控机器负责监测与资源的管理
172.16.43.1  vip(172.16.43.11)  master1 主主复制第一台(可读写)
172.16.43.2  vip(172.16.43.12)  master2 主主复制第二台(只读)
172.16.43.3  vip(172.16.43.13)  slave   主从方式复制 1 , 2 的信息(只读)


实验过程如下

主控安装安装: ansible, mysql客户端, mysql-mmm
集群节点安装如下: mariadb, mysql-agent


i)  主机互信,ansible部署的关键

yum -y install ansible-1.5.4-1.el6.noarch.rpm vim /etc/ansible/hosts # 主控节点完成 [masterserver] master1.king.com master2.king.com . [slaveserver] slave.king.com # 主控节点完成互信多个被管理节点不重复了 ssh-keygen -t rsa ssh-copy-id -i .ssh/id_rsa.pub root@slave.king.com . # 主控节点完成安装mysql-mmm* yum -y install mysql mysql-mmm* . # 实现mmm配置文件有两种 # 1. 主控端 mmm_common, mmm_mon # 2. 集群端 mmm_common, mmm_agent # 主控端配置common /etc/mysql-mmm/mmm_common.conf active_master_role writer . cluster_interface eth0 pid_path /var/run/mysql-mmm/mmm_agentd.pid bin_path /usr/sbin replication_user repl replication_password repl agent_user mmm_agent agent_password agent_password . ip 172.16.43.1 mode master peer master2 . ip 172.16.43.2 mode master peer master1 . ip 172.16.43.3 mode slave . # 谁能写 vip是多少(参照本文配置) hosts master1, master2 ips 172.16.43.11 mode exclusive . # 谁能读 vip是多少(参照本文配置) hosts master1, master2 ips 172.16.43.11, 172.16.43.12, 172.16.43.13 mode balanced . # 主控节点完成 vim /etc/mysql-mmm/mmm_mon.conf # 需要改 ping_ips, 把你想监控的集群加入进入就可以了 # 172.16.0.1 是网关ip ping_ips 172.16.0.1, 172.16.43.1, 172.16.43.2, 172.16.43.3 . monitor_user mmm_monitor monitor_password monitor_password

ii) 安装 mariadb, mysql-agent安装与配置

# 编写 install.yaml, 使用ansible-playbook执行按成安装配置 - hosts: masterserver:slaveserver remote_user: root tasks: - name: mariadb install copy: src=/root/mariadb-10.0.10-linux-x86_64.tar.gz dest=/tmp - name: conf service command: tar xf /tmp/mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local ############################################################### # 见谅下面的 name: x , 写了半天才知道不能在一个name中包含多个command,所以.. # ############################################################### - name: 1 command: ln -sv /usr/local/mariadb-10.0.10-linux-x86_64 /usr/local/mysql - name: 2 command: cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld - name: 3 command: chmod +x /etc/rc.d/init.d/mysqld - name: 4 command: mkdir /mydata/data -p - name: 5 command: mkdir /mydata/binlogs -p - name: 6 command: mkdir /mydata/relaylogs -p - name: 7 command: useradd -r -s /sbin/nologin mysql -U - name: 8 command: chown mysql.mysql /mydata -R - name: 9 command: chown mysql.mysql /usr/local/mysql -R - name: 9-1 # 将本地配置好的安装文件移植到集群节点, 解压的配置文件可能不符合要求 copy: src=/usr/local/mysql/scripts/mysql_install_db dest=/usr/local/mysql/scripts/ - name: 10 command: /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data - name: mariadb conf # 此处配置文件 /etc/my.cnf 配置好 # log-bin=/mydata/binlogs/mysql-bin # relay-log=/mydata/relaylogs/relay-bin # datadir=/mydata/data copy: src=/etc/my.cnf dest=/etc/my.cnf notify: - restart mariadb - name: install mysql-mmm-agent yum: name=mysql-mmm-agent state=present - name: conf mysql-mmm-agent copy: src=/etc/mysql-mmm/mmm_common.conf dest=/etc/mysql-mmm - name: modify mmm_agent.conf command: sed -i 's@^\(this[[:space:]]\).*@\1{{ item }}@' /etc/mysql-mmm/mmm_agent.conf with_items: - master1 - master2 - slave - name: 11 command: sed -i 's@^\(ENABLED=\).*@\11@' /etc/default/mysql-mmm-agent handlers: - name: restart mariadb service: name=mysqld state=restarted

wKioL1NT2rTwIXu9AAZvuvT0Nhc295.jpg


不熟yaml的童鞋可以 yaml.org


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen May 08, 2024 am 10:24 AM

Fähigkeiten zur Verarbeitung von Big-Data-Strukturen: Chunking: Teilen Sie den Datensatz auf und verarbeiten Sie ihn in Blöcken, um den Speicherverbrauch zu reduzieren. Generator: Generieren Sie Datenelemente einzeln, ohne den gesamten Datensatz zu laden, geeignet für unbegrenzte Datensätze. Streaming: Lesen Sie Dateien oder fragen Sie Ergebnisse Zeile für Zeile ab, geeignet für große Dateien oder Remote-Daten. Externer Speicher: Speichern Sie die Daten bei sehr großen Datensätzen in einer Datenbank oder NoSQL.

Wie optimiert man die MySQL-Abfrageleistung in PHP? Wie optimiert man die MySQL-Abfrageleistung in PHP? Jun 03, 2024 pm 08:11 PM

Die MySQL-Abfrageleistung kann durch die Erstellung von Indizes optimiert werden, die die Suchzeit von linearer Komplexität auf logarithmische Komplexität reduzieren. Verwenden Sie PreparedStatements, um SQL-Injection zu verhindern und die Abfrageleistung zu verbessern. Begrenzen Sie die Abfrageergebnisse und reduzieren Sie die vom Server verarbeitete Datenmenge. Optimieren Sie Join-Abfragen, einschließlich der Verwendung geeigneter Join-Typen, der Erstellung von Indizes und der Berücksichtigung der Verwendung von Unterabfragen. Analysieren Sie Abfragen, um Engpässe zu identifizieren. Verwenden Sie Caching, um die Datenbanklast zu reduzieren. Optimieren Sie den PHP-Code, um den Overhead zu minimieren.

Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Jun 03, 2024 pm 12:19 PM

Das Sichern und Wiederherstellen einer MySQL-Datenbank in PHP kann durch Befolgen dieser Schritte erreicht werden: Sichern Sie die Datenbank: Verwenden Sie den Befehl mysqldump, um die Datenbank in eine SQL-Datei zu sichern. Datenbank wiederherstellen: Verwenden Sie den Befehl mysql, um die Datenbank aus SQL-Dateien wiederherzustellen.

Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Jun 02, 2024 pm 02:26 PM

Wie füge ich Daten in eine MySQL-Tabelle ein? Mit der Datenbank verbinden: Stellen Sie mit mysqli eine Verbindung zur Datenbank her. Bereiten Sie die SQL-Abfrage vor: Schreiben Sie eine INSERT-Anweisung, um die einzufügenden Spalten und Werte anzugeben. Abfrage ausführen: Verwenden Sie die Methode query(), um die Einfügungsabfrage auszuführen. Bei Erfolg wird eine Bestätigungsmeldung ausgegeben.

So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 Dec 09, 2024 am 11:42 AM

Eine der wichtigsten Änderungen, die in MySQL 8.4 (der neuesten LTS-Version von 2024) eingeführt wurden, besteht darin, dass das Plugin „MySQL Native Password“ nicht mehr standardmäßig aktiviert ist. Darüber hinaus entfernt MySQL 9.0 dieses Plugin vollständig. Diese Änderung betrifft PHP und andere Apps

Anwendung der Lastausgleichsstrategie bei der Leistungsoptimierung des Java-Frameworks Anwendung der Lastausgleichsstrategie bei der Leistungsoptimierung des Java-Frameworks May 31, 2024 pm 08:02 PM

Lastausgleichsstrategien sind in Java-Frameworks für eine effiziente Verteilung von Anforderungen von entscheidender Bedeutung. Abhängig von der Parallelitätssituation weisen verschiedene Strategien unterschiedliche Leistungen auf: Abfragemethode: Stabile Leistung bei geringer Parallelität. Gewichtete Abfragemethode: Die Leistung ähnelt der Abfragemethode bei geringer Parallelität. Methode mit der geringsten Anzahl von Verbindungen: beste Leistung bei hoher Parallelität. Zufallsmethode: einfach, aber schlechte Leistung. Konsistentes Hashing: Serverlast ausgleichen. In Kombination mit praktischen Fällen erklärt dieser Artikel, wie Sie auf der Grundlage von Leistungsdaten geeignete Strategien auswählen, um die Anwendungsleistung deutlich zu verbessern.

Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Jun 02, 2024 pm 02:13 PM

So verwenden Sie gespeicherte MySQL-Prozeduren in PHP: Verwenden Sie PDO oder die MySQLi-Erweiterung, um eine Verbindung zu einer MySQL-Datenbank herzustellen. Bereiten Sie die Anweisung zum Aufrufen der gespeicherten Prozedur vor. Führen Sie die gespeicherte Prozedur aus. Verarbeiten Sie die Ergebnismenge (wenn die gespeicherte Prozedur Ergebnisse zurückgibt). Schließen Sie die Datenbankverbindung.

Wie erstelle ich eine MySQL-Tabelle mit PHP? Wie erstelle ich eine MySQL-Tabelle mit PHP? Jun 04, 2024 pm 01:57 PM

Das Erstellen einer MySQL-Tabelle mit PHP erfordert die folgenden Schritte: Stellen Sie eine Verbindung zur Datenbank her. Erstellen Sie die Datenbank, falls sie nicht vorhanden ist. Wählen Sie eine Datenbank aus. Tabelle erstellen. Führen Sie die Abfrage aus. Schließen Sie die Verbindung.

See all articles