Heim >Datenbank >MySQL-Tutorial >Was ist ein MySQL-Cluster? Einführung in den MySQL-Cluster
Früher hatte ich das Gefühl, dass Clustering, Lese-Schreib-Trennung und xxxx allesamt verrückte und großartige Dinge seien. Nachdem ich es beendet hatte, stellte ich fest, dass es eigentlich sehr einfach ist, solange Sie interessiert sind.
Zwei Maschinen:
mysql01: 192.168.1.222
mysql02: 192.168.1.223
Beachten Sie, dass Sie Folgendes haben, wenn Sie eine virtuelle Maschine kopieren und simulieren Um auto.cnf unter mysql/data zu ändern, darf die UUID der beiden Maschinen nicht identisch sein. Das Selinux des Servers muss deaktiviert sein (ändern Sie /etc/selinux/config und ändern Sie SELINUX in „disabled“).
MySQL5.6 bietet zwei Möglichkeiten, die Master-Slave-Replikation zu starten: basierend auf dem Protokoll (binlog) und basierend auf der GTID (globale Transaktionskennung).
Das Prinzip der Master-Slave-Replikation (auch A/B-Replikation genannt)
(1) Der Master zeichnet Datenänderungen im Binärprotokoll (Binärprotokoll) auf, bei dem es sich um die in der Konfigurationsdatei log-bin angegebene Datei handelt. Diese Datensätze werden als Binärprotokollereignisse (Binärprotokollereignisse) bezeichnet. (2) Der Slave liest Binärprotokollereignisse im Master über den E/A-Thread und schreibt in sein Relaisprotokoll (Relaisprotokoll). Der Slave wiederholt die Ereignisse im Relay-Protokoll und führt die Ereignisinformationen im Relay-Protokoll nacheinander lokal aus, um die lokale Datenspeicherung abzuschließen und so die Änderungen an seinen eigenen Daten widerzuspiegeln (Datenwiedergabe).
mysql01:
## Fügen Sie die folgenden Konfigurationselemente in [mysqld] hinzu
## Legen Sie die Server-ID fest, im Allgemeinen auf IP eingestellt server_id=222
## Kopierfilterung: Für Datenbanken, die gesichert werden müssen, Ausgabe binlog
#binlog-do-db=roncoo
## Kopierfilterung: Für Datenbanken, die nicht gesichert werden müssen up, nicht ausgeben (MySQL-Bibliotheken führen im Allgemeinen keine Synchronisierung durch)
binlog-ignore-db=mysql
## Aktivieren Sie die Binärprotokollfunktion. Sie können sie nach Belieben verwenden. Am besten ist es, wenn Sie eine Bedeutung haben
log-bin=master-mysql
## Für jede Sitzung zuweisen Der Speicher, der zum Speichern des binären Protokollcaches während der Transaktion verwendet wird
binlog_cache_size=1M
## Master-Slave-Replikationsformat (gemischt, Anweisung, Zeile , das Standardformat ist Anweisung)
binlog_format=mixed
## Anzahl der Tage, nach denen Binärprotokolle automatisch gelöscht/abgelaufen werden. Der Standardwert ist 0, was bedeutet, dass kein automatisches Löschen erfolgt.
## Überspringen Sie alle Fehler oder Fehler bestimmter Typen, die bei der Master-Slave-Replikation auftreten, um Replikationsunterbrechungen auf der Slave-Seite zu vermeiden.
## Zum Beispiel: 1062-Fehler bezieht sich auf einige doppelte Primärschlüssel, 1032-Fehler liegt daran, dass die Master-Slave-Datenbankdaten inkonsistent sind
slave_skip_errors=1062
## Relay_log Relay-Protokoll konfigurieren
relay_log =relay01
log_slave_updates=1
Master-Datenbankdienst starten/neu starten, sich bei der Datenbank anmelden, eine erstellen Datensynchronisierungsbenutzer und erteilen Sie die entsprechenden Berechtigungen
##Erstellen Sie Datensynchronisierungsbenutzer und erteilen Sie entsprechende Berechtigungen
service mysql restart mysql -uroot -p
## Aktualisieren Sie die Berechtigungstabelleninformationen
mysql> grant replication slave, replication client on *.* to 'repl01'@'192.168.1.223' identified by '123456'; Query OK, 0 rows affected (0.00 sec)
## Überprüfen Sie die Positionsnummer und notieren Sie sich die Positionsnummer (Sie benötigen diese Positionsnummer und die aktuelle Protokolldatei auf der Slave-Maschine)
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
vi /etc/my.cnf
mysql> show master status; mysql02:## Legen Sie die Server-ID fest, normalerweise auf IP eingestellt
server_id=223
## Filterung kopieren: Datenbank das muss gesichert werden, Ausgabe binlog
# binlog-do-db=roncoo
## Kopierfilterung: Datenbanken, die nicht gesichert werden müssen, werden nicht ausgegeben (MySQL-Bibliotheken werden im Allgemeinen nicht synchronisiert)
binlog-ignore-db=mysql
## Aktivieren Sie Binärprotokolle für Wenn der Standby-Slave als Master anderer Slaves fungiert, verwenden Sie
log-bin=slave-mysql
## Der für jede Sitzung zugewiesene Speicher wird verwendet, um den binären Protokollcache während der Transaktion zu speichern
binlog_cache_size = 1M
## Das Format der Master-Slave-Replikation (gemischt, Anweisung, Zeile, das Standardformat ist Anweisung)
binlog_format=mixed
## Die Anzahl der Tage, nach denen Binärprotokolle automatisch gelöscht/abgelaufen werden. Der Standardwert ist 0, was bedeutet, dass kein automatisches Löschen erfolgt.
expire_logs_days=7
## Überspringen Sie alle Fehler oder Fehler bestimmter Typen, die bei der Master-Slave-Replikation auftreten, um Replikationsunterbrechungen auf der Slave-Seite zu vermeiden.
## Zum Beispiel: 1062-Fehler bezieht sich auf einige doppelte Primärschlüssel, 1032-Fehler liegt daran, dass die Master-Slave-Datenbankdaten inkonsistent sind
slave_skip_errors=1062
## Relay_log Relay-Protokoll konfigurieren
relay_log=relay02
# # log_slave_updates bedeutet, dass der Slave Replikationsereignisse in sein eigenes Binärprotokoll schreibt
log_slave_updates=1
Datenbankdienst MySQL-Neustart neu starten
mysql> change master to master_host='192.168.1.222', master_user='repl01',master_password='123456', master_port=3306, master_log_file='mysql01.000001',master_log_pos=429, master_connect_retry=30; Query OK, 0 rows affected, 2 warnings (0.01 sec)
上面执行的命令的解释:
master_host='192.168.1.222' ## Master 的 IP 地址
master_user='repl' ## 用于同步数据的用户(在 Master 中授权的用户)
master_password='123456' ## 同步数据用户的密码
master_port=3306 ## Master 数据库服务的端口
master_log_file='master-mysql.000001' ##指定 Slave 从哪个日志文件开始读复制数据(可
在 Master 上使用 show master status 查看到日志文件名)
master_log_pos=429 ## 从哪个 POSITION 号开始读
master_connect_retry=30 ##当重新建立主从连接时,如果连接建立失败,间隔多久后重试。
单位为秒,默认设置为 60 秒,同步延迟调优参数。
## 查看主从同步状态
mysql> show slave status\G;
可看到 Slave_IO_State 为空, Slave_IO_Running 和 Slave_SQL_Running 是 No,表明 Slave 还
没有开始复制过程。
## 开启主从同步
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
## 再查看主从同步状态
mysql> show slave status\G;
主要看以下两个参数,这两个参数如果是 Yes 就表示主从同步正常
Slave_IO_Running: Yes Slave_SQL_Running: Yes
可查看 master 和 slave 上线程的状态。在 master 上,可以看到 slave 的 I/O 线程创建的连接:
mysql01: mysql> show processlist\G; mysql02: mysql> show processlist\G;
完成,测试在mysql01上新建数据库db1,查看mysql02。
从mysql02到mysql01是一样的步骤:
切换到mysql02上
##创建数据同步用户,并授予相应的权限
mysql> grant replication slave, replication client on *.* to 'repl02'@'192.168.1.222' identified by '123456'; Query OK, 0 rows affected (0.00 sec)
## 刷新授权表信息
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
## 查看 position 号,记下 position 号(从机上需要用到这个 position 号和现在的日志文件)
mysql> show master status; change master to master_host='192.168.1.223', master_user='repl02',master_password='123456', master_port=3306,master_log_file='mysql02.000002',master_log_pos=567, master_connect_retry=30; mysql> start slave;Query OK, 0 rows affected (0.00 sec)
## 再查看主从同步状态
mysql> show slave status\G;
在mysql02上创建数据库db2,查看mysql01即可
Das obige ist der detaillierte Inhalt vonWas ist ein MySQL-Cluster? Einführung in den MySQL-Cluster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!