mysql-mmm
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
| mysql-mmm [2017-07-19 09:20:15] – [Manager / MMM-Monitor] manfred | mysql-mmm [2017-07-19 10:12:03] (aktuell) – [Use of uninitialized value $old_state in string ne at /usr/local/lib/perl5/5.18.0/MMM/Monitor/Agent.pm line 42.] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== MySQL-MMM ====== | ||
| + | |||
| + | **MMM** -> // | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * //MMM software is deprecated// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * '' | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * MaxScale kann __noch__ (2015-07-09) kein HA (siehe Video ab Position 45:30), noch wird dafür Zusatzsoftware wie z.B. Pacemaker+Corosync benötigt | ||
| + | |||
| + | |||
| + | ===== DB-Knoten / MMM-Agent ===== | ||
| + | |||
| + | |||
| + | ==== auf allen Knoten ==== | ||
| + | |||
| + | diese Benutzer müssen auf allen Datenbanken angelegt werden (das Passwort vom ' | ||
| + | GRANT REPLICATION CLIENT | ||
| + | GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO ' | ||
| + | GRANT REPLICATION SLAVE ON *.* TO ' | ||
| + | |||
| + | MMM-Paket installieren: | ||
| + | > apt install mysql-mmm-agent | ||
| + | > apt install libproc-daemon-perl libalgorithm-diff-perl libdbd-mysql-perl libdbi-perl liblog-log4perl-perl libmailtools-perl liblog-dispatch-perl iproute libnet-arp-perl | ||
| + | > apt install libproc-daemon-perl libalgorithm-diff-perl libdbd-mysql-perl libnet0-dev | ||
| + | |||
| + | In dem Paket '' | ||
| + | Benötigt man für die virtuellen IPs beispielsweise eine NetzMaske von '' | ||
| + | Siehe Zeilen '' | ||
| + | > vi / | ||
| + | ... | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | ... | ||
| + | 106 if ($OSNAME eq ' | ||
| + | 107 # | ||
| + | 108 | ||
| + | 109 | ||
| + | 110 } | ||
| + | ... | ||
| + | |||
| + | |||
| + | > vi / | ||
| + | ... | ||
| + | ENABLED=1 | ||
| + | ... | ||
| + | |||
| + | die ''/ | ||
| + | sie wird auf dem '' | ||
| + | [root@mmm ~]# scp / | ||
| + | [root@mmm ~]# scp / | ||
| + | [root@mmm ~]# scp / | ||
| + | |||
| + | > chmod 0600 / | ||
| + | |||
| + | auf jedem Knoten muss hier der Hostname eingetragen werden: | ||
| + | > vi / | ||
| + | include mmm_common.conf | ||
| + | this db01 | ||
| + | |||
| + | > service mysql-mmm-agent start | ||
| + | |||
| + | |||
| + | ==== auf db01 (1. Master) ==== | ||
| + | |||
| + | zum 2. Master: | ||
| + | > echo "STOP SLAVE; CHANGE MASTER TO MASTER_HOST=' | ||
| + | |||
| + | ==== auf db02 (2. Master) ==== | ||
| + | |||
| + | zum 1. Master: | ||
| + | > echo "STOP SLAVE; CHANGE MASTER TO MASTER_HOST=' | ||
| + | |||
| + | ==== auf db03 (Reader) ==== | ||
| + | |||
| + | Leider kann MMM in der Version 2.2.1 noch nicht mit "'' | ||
| + | |||
| + | __entweder__ zum '' | ||
| + | > echo "STOP SLAVE; CHANGE MASTER TO MASTER_HOST=' | ||
| + | |||
| + | __oder__ zum '' | ||
| + | > echo "STOP SLAVE; CHANGE MASTER TO MASTER_HOST=' | ||
| + | |||
| + | |||
| + | ===== Manager / MMM-Monitor ===== | ||
| + | |||
| + | MMM-Paket installieren: | ||
| + | > apt install mysql-mmm-monitor | ||
| + | > find / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | > apt install libproc-daemon-perl libalgorithm-diff-perl libdbd-mysql-perl libdbi-perl liblog-log4perl-perl libmailtools-perl liblog-dispatch-perl libclass-singleton-perl | ||
| + | > apt install libproc-daemon-perl libalgorithm-diff-perl libdbd-mysql-perl libnet0-dev | ||
| + | |||
| + | |||
| + | Wichtig zu wissen ist, dass die ''/ | ||
| + | |||
| + | > useradd -c "MMM Script owner" -s / | ||
| + | |||
| + | |||
| + | === Use of uninitialized value $old_state in string ne at / | ||
| + | |||
| + | **Dieser Fehler besteht bereits seit langer Zeit in MMM und wird offensichtlich nicht behoben.** | ||
| + | |||
| + | * [[https:// | ||
| + | * MMM-Alternative => [[https:// | ||
| + | |||
| + | <file bash> | ||
| + | Daniel Black (daniel-black) said on 2014-10-15: #4 | ||
| + | |||
| + | I added the following code to / | ||
| + | |||
| + | if (! defined($old_state)) { $old_state = ' | ||
| + | |||
| + | Looking forward to migrating off mmm to corosync/ | ||
| + | </ | ||
| + | |||
| + | Den richtigen Ort der Datei findet man so: | ||
| + | > dpkg -L mysql-mmm-monitor | fgrep Agent.pm | ||
| + | / | ||
| + | |||
| + | |||
| + | ==== MMM konfigurieren ==== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | Bedeutung der TAGs in den Konfigurationsdateien: | ||
| + | * '' | ||
| + | * ''< | ||
| + | * **Master** | ||
| + | * ''< | ||
| + | * **Slaves** | ||
| + | * es können zusätzlich auch die **Master** angegeben werden | ||
| + | * '' | ||
| + | * **Master** + **Slaves** | ||
| + | |||
| + | dort stehen Passwörter drin, deshalb dürfen diese Dateien nicht von jedem gelesen werden dürfen: | ||
| + | > chmod 0600 / | ||
| + | |||
| + | <file bash / | ||
| + | active_master_role | ||
| + | |||
| + | <host default> | ||
| + | cluster_interface | ||
| + | |||
| + | pid_path | ||
| + | bin_path | ||
| + | |||
| + | replication_user | ||
| + | replication_password | ||
| + | |||
| + | agent_user | ||
| + | agent_password | ||
| + | </ | ||
| + | |||
| + | <host db01> | ||
| + | ip 192.168.0.30 | ||
| + | mode master | ||
| + | peer db02 | ||
| + | </ | ||
| + | |||
| + | <host db02> | ||
| + | ip 192.168.0.30 | ||
| + | mode master | ||
| + | peer db01 | ||
| + | </ | ||
| + | |||
| + | <host db03> | ||
| + | ip 192.168.0.30 | ||
| + | mode slave | ||
| + | </ | ||
| + | |||
| + | <role writer> | ||
| + | hosts db01, db02 | ||
| + | ips | ||
| + | mode exclusive | ||
| + | </ | ||
| + | |||
| + | <role reader> | ||
| + | hosts db01, db02, db03 | ||
| + | ips | ||
| + | mode exclusive | ||
| + | prefer | ||
| + | </ | ||
| + | |||
| + | debug 0 | ||
| + | </ | ||
| + | |||
| + | <file bash / | ||
| + | include mmm_common.conf | ||
| + | |||
| + | < | ||
| + | ip 127.0.0.1 | ||
| + | pid_path | ||
| + | bin_path | ||
| + | status_path | ||
| + | ping_ips | ||
| + | </ | ||
| + | |||
| + | <host default> | ||
| + | monitor_user | ||
| + | monitor_password | ||
| + | </ | ||
| + | |||
| + | debug 0 | ||
| + | </ | ||
| + | |||
| + | <file bash / | ||
| + | include mmm_common.conf | ||
| + | this db01 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== MMM starten ==== | ||
| + | |||
| + | |||
| + | === Die Aktivierung === | ||
| + | |||
| + | hier wird der MMM-Monitor aktiviert: | ||
| + | > vi / | ||
| + | ... | ||
| + | ENABLED=1 | ||
| + | ... | ||
| + | |||
| + | |||
| + | === Der Start === | ||
| + | |||
| + | > / | ||
| + | > / | ||
| + | * mmm_mond is running | ||
| + | |||
| + | > mmm_control show | ||
| + | db01(192.168.0.30) master/ | ||
| + | db02(192.168.0.31) master/ | ||
| + | db03(192.168.0.33) slave/ | ||
| + | # Role reader has tcdb03 configured as it's preferred host. | ||
| + | |||
| + | > mmm_control set_online db01 | ||
| + | OK: State of ' | ||
| + | | ||
| + | > mmm_control set_online db02 | ||
| + | OK: State of ' | ||
| + | | ||
| + | > mmm_control set_online db03 | ||
| + | OK: State of ' | ||
| + | |||
| + | > mmm_control show | ||
| + | tcdb01(192.168.0.30) master/ | ||
| + | tcdb02(192.168.0.31) master/ | ||
| + | tcdb03(192.168.0.33) slave/ | ||
| + | # Role reader is assigned to it's preferred host tcdb03. | ||
| + | |||
| + | > mmm_control checks | ||
| + | db03 ping [last change: 2016/04/27 12: | ||
| + | db03 mysql [last change: 2016/04/27 12: | ||
| + | db03 rep_threads | ||
| + | db03 rep_backlog | ||
| + | db02 ping [last change: 2016/04/27 12: | ||
| + | db02 mysql [last change: 2016/04/27 12: | ||
| + | db02 rep_threads | ||
| + | db02 rep_backlog | ||
| + | db01 ping [last change: 2016/04/27 12: | ||
| + | db01 mysql [last change: 2016/04/27 12: | ||
| + | db01 rep_threads | ||
| + | db01 rep_backlog | ||
| + | |||
| + | die virtuelle (Cluster-IP) auf den anderen Master zu verschieben: | ||
| + | > mmm_control move_role writer db02 | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | |||
| + | === Der Monitor === | ||
| + | |||
| + | > watch ' | ||
| + | < | ||
| + | Alle 2,0s: mmm_control show; | ||
| + | |||
| + | db01(192.168.0.30) master/ | ||
| + | db02(192.168.0.31) master/ | ||
| + | db03(192.168.0.33) slave/ | ||
| + | # Role reader is assigned to it's preferred host tcdb03. | ||
| + | |||
| + | db03 ping [last change: 2016/04/27 12: | ||
| + | db03 mysql [last change: 2016/04/27 12: | ||
| + | db03 rep_threads | ||
| + | db03 rep_backlog | ||
| + | db02 ping [last change: 2016/04/27 12: | ||
| + | db02 mysql [last change: 2016/04/27 12: | ||
| + | db02 rep_threads | ||
| + | db02 rep_backlog | ||
| + | db01 ping [last change: 2016/04/27 12: | ||
| + | db01 mysql [last change: 2016/04/27 12: | ||
| + | db01 rep_threads | ||
| + | db01 rep_backlog | ||
| + | </ | ||
| + | |||
| + | |||
| + | === manuelle Verschiebung der virtuellen IP === | ||
| + | |||
| + | > mmm_control move_role writer db01 | ||
| + | > mmm_control move_role reader db03 | ||
| + | |||
| + | |||
| + | ==== MMM mit mehreren Clustern ==== | ||
| + | |||
| + | für jeden Cluster müssen die beiden Konfigurationsdateien angelegt werden: | ||
| + | > find / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | bei mehreren Clustern muss man den Cluster-Namen mit angeben: | ||
| + | > mmm_control @cl01 show | ||
| + | | ||
| + | > mmm_control @cl01 set_online db01 | ||
| + | > mmm_control @cl01 set_online db02 | ||
| + | > mmm_control @cl01 set_online db03 | ||
| + | | ||
| + | > mmm_control @cl02 show | ||
| + | | ||
| + | > mmm_control @cl02 set_online db01 | ||
| + | > mmm_control @cl02 set_online db02 | ||
| + | > mmm_control @cl02 set_online db03 | ||
| + | |||
| + | |||
| + | ===== troubleshoot ===== | ||
| + | |||
| + | [[http:// | ||
| + | |||
