Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was ist ein MySQL-Cluster? Einführung in den MySQL-Cluster

零下一度
Freigeben: 2017-04-27 09:29:47
Original
3440 Leute haben es durchsucht

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:

vi /etc/my.cnf

## 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.

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 =relay01

## log_slave_updates bedeutet, dass der Slave Replikationsereignisse in sein eigenes Binärprotokoll schreibt

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
Nach dem Login kopieren


## 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)
Nach dem Login kopieren


## Ü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)
Nach dem Login kopieren
Nach dem Login kopieren


vi /etc/my.cnf

## Fügen Sie die folgenden Konfigurationselemente in [mysqld] hinzu
mysql> show master status;
mysql02:
Nach dem Login kopieren
## 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

Relevante Parameter hinzufügen

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)
Nach dem Login kopieren

上面执行的命令的解释:
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
Nach dem Login kopieren

可查看 master 和 slave 上线程的状态。在 master 上,可以看到 slave 的 I/O 线程创建的连接:

mysql01: mysql> show processlist\G;
mysql02: mysql> show processlist\G;
Nach dem Login kopieren

完成,测试在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)
Nach dem Login kopieren

## 刷新授权表信息

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Nach dem Login kopieren
Nach dem Login kopieren

## 查看 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)
Nach dem Login kopieren

## 再查看主从同步状态

mysql> show slave status\G;
Nach dem Login kopieren

在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!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage