Dieser Artikel bietet Ihnen eine Einführung in die bidirektionale Backup-Methode von MySQL (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.
Die bidirektionale MySQL-Sicherung wird auch Master-Master-Sicherung genannt, d. h. beide MySQL-Dienste sind Master und einer von ihnen ist der Slave des anderen Dienstes.
Vorbereiten
Server
MySQL服务器 | 版本 | IP地址 |
---|---|---|
masterA | 5.6.41 | 192.168.1.201 |
masterB | 5.6.41 | 192.168.1.202 |
Hinweis:
Versuchen Sie, die Backup-MySQL-Serverversion so konsistent wie möglich zu halten. Verschiedene Versionen können inkompatible Binärprotokollformate haben.Spezifischer Vorgang
Achten Sie während des Vorgangs auf die Konsistenz der Daten auf beiden Seiten! ! !
my.cnf
[mysqld] # 服务器唯一标识 server-id=1 # 二进制日志文件名 log-bin=mysql-bin # 需要备份的数据库,多个数据库用 , 分隔 binlog-do-db=piumnl # 需要复制的数据库,多个数据库用 , 分隔 replicate-do-db=piumnl # 中继日志文件名 relay_log=mysqld-relay-bin # 手动启动同步服务,避免突然宕机导致的数据日志不同步 skip-slave-start=ON # 互为主从需要加入这一行 log-slave-updates=ON # 禁用符号链接,防止安全风险,可不加 symbolic-links=0 # 可不加 # resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0 master-info-repository=table relay-log-info-repository=table relay-log-recovery=1 # 可不加 # 禁用 dns 解析,会使授权时使用的域名无效 skip-host-cache skip-name-resolve sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
my.cnf
# 不再解释各个配置项 [mysqld] server-id=2 log-bin=mysql-bin binlog-do-db=piumnl replicate-do-db=piumnl relay_log=mysql-relay-bin skip-slave-start=ON log-slave-updates=ON symbolic-links=0 # resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0 master-info-repository=table relay-log-info-repository=table relay-log-recovery=1 skip-host-cache skip-name-resolve sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
MasterA und MasterB müssen beide einen Backup-Benutzer erstellen:
create user 'rep'@'%' identified by 'rep'; # 创建一个账户 grant replication slave on *.* to 'rep'@'%'; # 授予该账户对任意数据库任意表的主从备份权限
Hinweis:
root@%
-Berechtigung für den grant_priv
-Benutzer geschlossen, daher wird dies auch der Fall sein erscheint, wenn Sie sich aus der Ferne anmelden.Starten Sie den Server neu
MasterA
MasterB-Status anzeigen
show master status\G; # 此处需要关注 File 和 Position 值
Sicherung aktivieren
stop slave; # master_log_file 就是第一步操作的 File 值 # master_log_pos 就是第一步操作的 Position 值 change master to master_host=<master_hostname>, master_user=<rep_username>, master_port=<master_port>, master_password=<rep_password>, master_log_file='mysql-log.000003', master_log_pos=154; start slave;
Ergebnisse anzeigen
show slave status\G; # 查看最重要的两项,两个都必须为 Yes ,有一个为 No 都要去查看错误日志文件,看看什么地方存在问题 # Slave_IO_Running: Yes # Slave_SQL_Running: Yes
masterB
Wiederholen Sie den Vorgang von masterA in umgekehrter ReihenfolgeFügen Sie Daten in masterA bzw. masterB ein und prüfen Sie, ob die erwarteten Daten auf der anderen Seite angezeigt werden Server rechtzeitig
Dies sollte ein Problem mit dem Relay-Protokoll sein. Sie können die folgenden Vorgänge ausprobieren
rrreeBeim Abrufen von Protokollen aus der Hauptbibliothek wurde festgestellt, dass die erste Datei in der Datei mysql_bin.index der Hauptbibliothek nicht vorhanden war.
stop slave; flush logs; start slave;
Verwenden Sie Das obige ist der detaillierte Inhalt vonEinführung in die bidirektionale Sicherungsmethode von MySQL (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
für Einfüge-, Aktualisierungs- und Löschvorgänge, es wird keine Sicherung durchgeführt (Dies ist eine große Aufgabe Grube )! ! ! [Verwandte Empfehlungen: MySQL-Tutorial]