Werfen wir zunächst einen Blick auf die Architektur, wie unten gezeigt:
Bereitstellung
1. Hosts ändern
Führen Sie auf allen Servern den gleichen Vorgang aus.
vim /etc/hosts
192.168.137.10 master 192.168.137.20 backup 192.168.137.30 slave 192.168.137.40 monitor
2. MySQL-Benutzer hinzufügen
Es muss nur auf allen Datenbankseiten ausgeführt werden, nicht auf der Überwachungsseite.
GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'192.168.137.%' IDENTIFIED BY 'mmm_monitor'; GRANT SUPER,REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'192.168.137.%' IDENTIFIED BY 'mmm_agent'; flush privileges;
Hinweis: Der Repl-Benutzer wurde bereits beim Erstellen des Master-Slave-Dienstes erstellt.
3. Installieren Sie die Überwachungssoftware
Hinweis: Alle Überwachungsterminals sind installiert, aber das Überwachungsterminal muss nur mysql-mmm-monitor verwenden und mysql-mmm-agent muss nicht gestartet werden.
Auf der Datenbankseite müssen Sie nur mysql-mmm-agent installieren
1. Auf dem Überwachungsserver ausführen
wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm –ivh epel-release-6-8.noarch.rpm yum –y install mysql-mmm*
2. Auf dem Datenbankserver ausführen, jeder Datenbankserver muss
ausführen
wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm –ivh epel-release-6-8.noarch.rpm yum -y install mysql-mmm-agent
Pfadbeschreibung:
4. Konfigurationsdatei
DB-Server-Konfigurationsdatei: mmm_agent.conf,mmm_common.conf
Konfigurationsdatei für Überwachungsserver: mmm_mon.conf,mmm_common.conf
(Diese Datei ist für alle Server gleich)
Datenbankserver konfigurieren
1. Ändern Sie den Master-Server
vim /etc/mysql-mmm/mmm_common.conf
active_master_role writer ###积极的master角色的标示,所有的db服务器都需要开启read_only参数,对于writer服务器监控代理会自动将read_only属性关闭。 <host default> cluster_interface eth0 #####群集的网络接口 pid_path /var/run/mysql-mmm/mmm_agentd.pid ####pid路径 bin_path /usr/libexec/mysql-mmm/ #####可执行文件路径 replication_user repl #######复制用户 replication_password repl #######复制用户密码 agent_user mmm_agent #######代理用户,用于更改只读操作 agent_password mmm_agent #######代理用户密码 </host> <host master> ##########master1的host名 ip 192.168.137.10 #####master1的ip mode master ########角色属性,master代表是主 peer backup ########与master1对等的服务器的host名,也就是master2的服务器host名 </host> <host backup> ####和master的概念一样 ip 192.168.137.20 mode master peer master </host> <host slave> #####从库的host名,如果存在多个从库可以重复一样的配置 ip 192.168.137.30 ####从的ip mode slave #####slave的角色属性代表当前host是从 </host> <role writer> ####writer角色配置 hosts master,backup ####能进行写操作的服务器的host名,如果不想切换写操作这里可以只配置master,这样也可以避免因为网络延时而进行write的切换,但是一旦master出现故障那么当前的MMM就没有writer了只有对外的read操作。 ips 192.168.137.100 #####对外提供的写操作的虚拟IP mode exclusive #####exclusive代表只允许存在一个主,也就是只能提供一个写的IP </role> <role reader> #####read角色配置 hosts backup,slave ######对外提供读操作的服务器的host名,当然这里也可以把master加进来 ips 192.168.137.120,192.168.137.130,192.168.137.140 ###对外提供读操作的虚拟ip,这两个ip和host不是一一对应的,并且ips也hosts的数目也可以不相同,如果这样配置的话其中一个hosts会分配两个ip mode balanced ###balanced代表负载均衡 </role>
Kopieren Sie diese Datei gleichzeitig auf andere Server, einschließlich des Überwachungsservers, und die Konfiguration bleibt unverändert
scp /etc/mysql-mmm/mmm_common.conf slave:/etc/mysql-mmm/ scp /etc/mysql-mmm/mmm_common.conf backup:/etc/mysql-mmm/ scp /etc/mysql-mmm/mmm_common.conf monitor:/etc/mysql-mmm/
2. Konfiguration der Agentendatei
vim /etc/mysql-mmm/mmm_agent.conf
Hinweis: Diese Konfiguration konfiguriert nur den Datenbankserver. Der Hostname muss danach nicht in den Host-Befehl des aktuellen Servers geändert werden, und Master2 und Slave werden ebenfalls geändert der Hostname des entsprechenden Servers.
3. Starten Sie den Agentenprozess
chkconfig mysql-mmm-agent on
service mysql-mmm-agent start
Muss auf jedem Datenbankserver gestartet werden
Überwachungsserver konfigurieren
vim /etc/mysql-mmm/mmm_mon.conf
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 #####群集的状态文件,也就是执行mmm_control show操作的显示来源。 ping_ips 192.168.137.10,192.168.137.20,192.168.137.30 ######被监控的db服务器的ip地址 auto_set_online 0 ####设置自动online的时间,默认是超过60s就将它设置为online,默认是60s,这里将其设为0就是立即online # 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 ####监控db服务器的用户 monitor_password mmm_monitor ####监控db服务器的密码 </host> debug 0 #######debug 0正常模式,1为debug模式
Hinweis: Die Kommentare in der Konfigurationsdatei dienen dem besseren Verständnis. Es ist am besten, die Kommentare während der Bereitstellung zu entfernen, um mögliche Auswirkungen durch die Kommentare zu vermeiden.
Überwachungsprozess starten
chkconfig mysql-mmm- monitor on service mysql-mmm-monitor start
Hinweis: Ob auf der Datenbank- oder Überwachungsseite: Wenn die Konfigurationsdatei geändert wird, müssen der Agent-Prozess und der Überwachungsprozess neu gestartet werden.
Betriebsanalyse
Protokolldatei
Protokolldateien sind oft der Schlüssel zur Fehleranalyse, daher müssen Sie gut darin sein, Protokolldateien zur Problemanalyse zu verwenden.
Datenbankseite:/var/log/mysql-mmm/mmm_agentd.log
Überwachungsterminal:/var/log/mysql-mmm/mmm_mond.log
Befehlsdatei
mmm_agentd: Startdatei des DB-Agent-Prozesses
mmm_mond: Startdatei des Überwachungsprozesses
mmm_backup: Sicherungsdatei
mmm_restore: Datei wiederherstellen
mmm_clone
mmm_control: Befehlsdatei für den Überwachungsvorgang
Auf der Datenbankserverseite gibt es nur das Programm mmm_agentd, die anderen befinden sich auf der Monitorserverseite.
mmm_control-Nutzung
Das mmm_control-Programm kann zum Überwachen des Clusterstatus, zum Wechseln von Autoren, zum Festlegen von Online- und Offline-Vorgängen usw. verwendet werden.
Valid commands are: help - show this message ###帮助信息 ping - ping monitor ###ping当前的群集是否正常 show - show status ####群集在线状态检查 checks [<host>|all [<check>|all]] - show checks status #####执行监控检查操作 set_online <host> - set host <host> online ####将host设置为online set_offline <host> - set host <host> offline ###将host设置为offline mode - print current mode. ####打印输出当前的mode set_active - switch into active mode. set_manual - switch into manual mode. set_passive - switch into passive mode. move_role [--force] <role> <host> - move exclusive role <role> to host <host> ####移除writer服务器为指定的host服务器 (Only use --force if you know what you are doing!) set_ip <ip> <host> - set role with ip <ip> to host <host>
1. Überprüfen Sie den Status aller Datenbankserver-Cluster
[root@monitor mysql-mmm]# mmm_control checks all master ping [last change: 2016/06/07 16:31:24] OK master mysql [last change: 2016/06/07 16:31:24] OK master rep_threads [last change: 2016/06/07 16:31:24] OK master rep_backlog [last change: 2016/06/07 16:31:24] OK: Backlog is null slave ping [last change: 2016/06/07 16:31:24] OK slave mysql [last change: 2016/06/07 16:31:24] OK slave rep_threads [last change: 2016/06/07 16:31:24] OK slave rep_backlog [last change: 2016/06/07 16:31:24] OK: Backlog is null backup ping [last change: 2016/06/07 16:31:24] OK backup mysql [last change: 2016/06/07 16:31:24] OK backup rep_threads [last change: 2016/06/07 16:31:24] OK backup rep_backlog [last change: 2016/06/07 16:31:24] OK: Backlog is null
Zu den Prüfpunkten gehören: Ping, ob MySQL normal läuft, ob der Kopierthread normal ist usw.
2. Überprüfen Sie den Online-Status der Clusterumgebung
[root@monitor mysql-mmm]# mmm_control show backup(192.168.137.20) master/ONLINE. Roles: reader(192.168.137.120) master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100) slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.130)
3. Offline-Vorgang auf dem angegebenen Host ausführen
[root@monitor mysql-mmm]# mmm_control set_offline backup OK: State of 'backup' changed to ADMIN_OFFLINE. Now you can wait some time and check all roles! [root@monitor mysql-mmm]# mmm_control show backup(192.168.137.20) master/ADMIN_OFFLINE. Roles: master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100) slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.120), reader(192.168.137.130)
4. Führen Sie einen Online-Vorgang auf dem angegebenen Host aus
[root@monitor mysql-mmm]# mmm_control set_online backup OK: State of 'backup' changed to ONLINE. Now you can wait some time and check its new roles! [root@monitor mysql-mmm]# mmm_control show backup(192.168.137.20) master/REPLICATION_FAIL. Roles: master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100) slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.120), reader(192.168.137.130) [root@monitor mysql-mmm]# mmm_control show backup(192.168.137.20) master/ONLINE. Roles: reader(192.168.137.120) master(192.168.137.10) master/ONLINE. Roles: writer(192.168.137.100) slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.130)
5. Schreibumschaltung durchführen
1. Zeigen Sie den Master an, der dem aktuellen Slave entspricht
[root@slave ~]# mysql -uroot -proot -e 'show slave status \G;' Warning: Using a password on the command line interface can be insecure. *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.137.10 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000073 Read_Master_Log_Pos: 1461 Relay_Log_File: mysql-relay-bin.000006 Relay_Log_Pos: 283 Relay_Master_Log_File: mysql-bin.000073 Slave_IO_Running: Yes Slave_SQL_Running: Yes
2.Writer-Umschaltung: Stellen Sie sicher, dass für das Writer-Attribut in der Datei mmm_common.conf der entsprechende Host konfiguriert ist, andernfalls können Sie nicht umschalten
[root@monitor mysql-mmm]# mmm_control move_role writer backup OK: Role 'writer' has been moved from 'master' to 'backup'. Now you can wait some time and check new roles info! [root@monitor mysql-mmm]# mmm_control show backup(192.168.137.20) master/ONLINE. Roles: reader(192.168.137.120), writer(192.168.137.100) master(192.168.137.10) master/ONLINE. Roles: slave(192.168.137.30) slave/ONLINE. Roles: reader(192.168.137.130)
3.save wechselt automatisch von der Bibliothek zum neuen Master
[root@slave ~]# mysql -uroot -proot -e 'show slave status \G;' Warning: Using a password on the command line interface can be insecure. *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.137.20 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000039 Read_Master_Log_Pos: 120 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 283 Relay_Master_Log_File: mysql-bin.000039 Slave_IO_Running: Yes Slave_SQL_Running: Yes
Andere Verarbeitungsprobleme
如果不想让writer从master切换到backup(包括主从的延时也会导致写VIP的切换),那么可以在配置/etc/mysql-mmm/mmm_common.conf
时,去掉
<role writer> ####writer角色配置 hosts master ###这里只配置一个Hosts ips 192.168.137.100 #####对外提供的写操作的虚拟IP mode exclusive #####exclusive代表只允许存在一个主,也就是只能提供一个写的IP </role>
这样的话当master出现故障了writer写操作不会切换到backup服务器,并且slave也不会指向新的master,此时当前的MMM之前对外提供写服务。
总结
主从的延时会导致写VIP的切换。
1.对外提供读写的虚拟IP是由monitor程序控制。如果monitor没有启动那么db服务器不会被分配虚拟ip,但是如果已经分配好了虚拟ip当monitor程序关闭了原先分配的虚拟ip不会立即关闭外部程序还可以连接访问(只要不重启网络),这样的好处就是对于monitor的可靠性要求就会低一些,目前还不知道能维持多长的时间,但是如果这个时候其中的某一个db服务器故障了就无法处理切换,也就是原先的虚拟ip还是维持不变,挂掉的那台DB的虚拟ip会变的不可访问。
2.agent程序受monitor程序的控制处理write切换,从库切换等操作。如果monitor进程关闭了那么agent进程就起不到什么作用,它本身不能处理故障。
3.monitor程序负责监控db服务器的状态,包括Mysql数据库、服务器是否运行、复制线程是否正常、主从延时等;它还用于控制agent程序处理故障。
4.monitor会每隔几秒钟监控db服务器的状态,如果db服务器已经从故障变成了正常,那么monitor会自动在60s之后将其设置为online状态(默认是60s可以设为其它的值),有监控端的配置文件参数“auto_set_online”决定,群集服务器的状态有三种分别是:HARD_OFFLINE→AWAITING_RECOVERY→online
5.默认monitor会控制mmm_agent会将writer db服务器read_only修改为OFF,其它的db服务器read_only修改为ON,所以为了严谨可以在所有的服务器的my.cnf文件中加入read_only=1由monitor控制来控制writer和read,root用户和复制用户不受read_only参数的影响
以上就是本文的全部内容,希望本文对大家学习mysql有所帮助。