Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erläuterung der MySQL-Master-Slave-Replikation von Docker

Ausführliche Erläuterung der MySQL-Master-Slave-Replikation von Docker

小云云
小云云Original
2018-02-07 14:39:321315Durchsuche

In diesem Artikel wird hauptsächlich die auf Docker basierende MySQL-Master-Slave-Replikation vorgestellt, in der Hoffnung, allen zu helfen.

Einführung in die Umgebung

Masterserver: JD Cloud CentOS

Slaveserver: Vultr Cloud CentOS

Um das Testen zu erleichtern, wird Docker zum Ausführen von MySQL verwendet und Docker wird wie folgt gestartet:

 docker run --name mysql-server-01 -p 3306:3306 -v "$PWD"/conf.d:/etc/mysql/conf.d -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw  -d mysql:latest

Das Obige ordnet das MySQL-Konfigurationsverzeichnis und das Datenverzeichnis zu Gastgeber.

Master konfigurieren

Der Einfachheit halber wird ein spezielles Verzeichnis zum Betrieb der Master-Datenbank erstellt. Die Struktur ist wie folgt

mysql
└── server01
    ├── conf.d
    ├── data
    └── start.sh

Erstellen Sie my.cnf in cond.d, um den Master zu konfigurieren

[mysqld]log-bin=mysql-binserver-id=1innodb_flush_log_at_trx_commit=1sync_binlog=1

Dann Sie kann den Container starten.

Geben Sie nach dem Start den Container ein, um MySQL zu betreiben

# 进入容器
docker exec -it 容器ID bash

# 进入msyql客户端
mysql -u root -p

# 新建salve用户并配置权限,格式如下
mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

# 查看master状态,这里file和position后面配置salve会用到mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000001 |     1092 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)

Slave-Server konfigurieren Die my.cnf-Konfiguration Die Datei lautet wie folgt (der Einfachheit halber werden viele Parameter hier weggelassen und sollten nicht in Produktionsumgebungen verwendet werden):

Starten Sie dann den Container und geben Sie den MySQL-Client ein.
[mysqld]server-id=2

Slave starten 
# 配置master到slave
mysql> CHANGE MASTER TO
    ->     MASTER_HOST='master_host_name',    ->     MASTER_USER='replication_user_name',    ->     MASTER_PASSWORD='replication_password',    ->     MASTER_LOG_FILE='recorded_log_file_name',    ->     MASTER_LOG_POS=recorded_log_position;
 

Überprüfen Sie den Betriebsstatus:   
START SLAVE;

Sowohl Slave_IO_Running als auch Slave_SQL_Running oben sind JA, was darauf hinweist, dass Master und Slave konfiguriert wurden. ZusammenfassungEs gibt drei gängige MySQL-Architekturen
mysql> show slave status\G;*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: xxx.com                  Master_User: slave1                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.000001          Read_Master_Log_Pos: 1092               Relay_Log_File: ca210e4caaaa-relay-bin.000002                Relay_Log_Pos: 813        Relay_Master_Log_File: mysql-bin.000001             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:           Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 0                   Last_Error:                  Skip_Counter: 0          Exec_Master_Log_Pos: 1092              Relay_Log_Space: 1027              Until_Condition: None               Until_Log_File:                 Until_Log_Pos: 0           Master_SSL_Allowed: No           Master_SSL_CA_File:            Master_SSL_CA_Path:               Master_SSL_Cert:             Master_SSL_Cipher:                Master_SSL_Key:         Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:                Last_SQL_Errno: 0               Last_SQL_Error:   Replicate_Ignore_Server_Ids:              Master_Server_Id: 1                  Master_UUID: 5c2073ab-0ad6-11e8-a871-0242ac110005             Master_Info_File: /var/lib/mysql/master.info                    SQL_Delay: 0          SQL_Remaining_Delay: NULL      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates           Master_Retry_Count: 86400                  Master_Bind:       Last_IO_Error_Timestamp:      Last_SQL_Error_Timestamp:                Master_SSL_Crl:            Master_SSL_Crlpath:            Retrieved_Gtid_Set:             Executed_Gtid_Set:                 Auto_Position: 0         Replicate_Rewrite_DB:                  Channel_Name:            Master_TLS_Version: 1 row in set (0.00 sec)

Einzelinstanzarchitektur

Master-Slave-Replikation

  • MHA-Hochverfügbarkeitsarchitektur

  • Eine der Master-Slave-Replikationsmethoden basiert auf der oben genannten Binärprotokoll-Replikationsmethode und die andere basiert auf der Global Transaction Identifier (GTID)-Methode.

  • Verwandte Empfehlungen:
  • Detaillierte Erklärung des MySQL-Master-Slave-Replikationsprozesses_Detaillierte Erklärung der MySQL-Instanz


Über MySQL5 7.18 Detaillierte Erläuterung der Master-Slave-Replikation zum Erstellen einer Master-Slave-Instanz

Mycat-Lese-/Schreibtrennung wird basierend auf der MySQL-Master-Slave-Replikation implementiert

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der MySQL-Master-Slave-Replikation von Docker. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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