Konfigurationsschritte für die MySQL-Gruppenreplikation (empfohlen)

Konfigurationsschritte für die MySQL-Gruppenreplikation (empfohlen)

MySQL-Group-Replication ist eine neue Funktion, die in MySQL-5.7.17 entwickelt wurde; sie erreicht eine starke Konsistenz zwischen Master und Slave.

Das Hauptproblem besteht derzeit allerdings darin, dass die Leistung nicht besonders gut ist.

【1】Bestätigen Sie, dass die aktuelle MySQL-Datenbankversion 5.7.17 oder höher ist

/usr/local/mysql/bin/mysqld --version
/usr/local/mysql/bin/mysqld Ver 5.7.17 für linux-glibc2.5 auf x86_64 (MySQL Community Server (GPL))

[2] Die experimentelle Umgebung besteht darin, drei MySQL-Server auf einem Host zu installieren, und alle drei bilden eine Gruppenreplikationsgruppe.

Der Inhalt von /tmp/4406.cnf ist wie folgt:

[mysqld]
####: für global
Benutzer =jianglexing #mysql
basedir =/usr/local/mysql # /usr/local/mysql/
datadir =/tmp/4406/ # /usr/local/mysql/data
server_id =4406 # 0
Port =4406 # 3306
socket =/tmp/4406/mysql.sock # /tmp/mysql.sock
auto_increment_increment =1 # 1
auto_increment_offset =1 # 1
Kleinbuchstaben-Tabellennamen = 1 # 0
secure_file_priv = # null


####: für Binlog
binlog_format =Zeile # Zeile
log_bin =mysql-bin # aus
binlog_rows_query_log_events = ein # aus
log_slave_updates = ein # aus
expire_logs_days =4 # 0
binlog_cache_size = 32768 # 32768 (32k)
binlog_checksum =keine # CRC32
sync_binlog =1 # 1


####: für Fehlerprotokoll
log_error =mysql-err.log # /usr/local/mysql/data/localhost.localdomain.err


####: für langsames Abfrageprotokoll


####: für gtid
gtid_mode = ein # aus
enforce_gtid_consistency = ein # aus


####: für die Replikation
master_info_repository =Tabelle # Datei
relay_log_info_repository =Tabelle # Datei


####: für Gruppenreplikation
transaction_write_set_extraction =XXHASH64 # aus
Name der Replikationsgruppe "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa" #  
loose-group_replication_start_on_boot =aus # aus
lose-group_replication_local_address = "127.0.0.1:24901" #
lose-group_replication_group_seeds = "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
loose-group_replication_bootstrap_group =aus # aus


####: für innodb
default_storage_engine = innodb # innodb
default_tmp_storage_engine = innodb # innodb
innodb_data_file_path =ibdata1:12M:autoextend # ibdata1:12M:autoextend
innodb_temp_data_file_path =ibtmp1:12M:autoextend # ibtmp1:12M:autoextend
innodb_log_group_home_dir = ./ # ./
innodb_log_files_in_group = 2 # 2
innodb_log_file_size =48M # 50331648(48M)
innodb_file_format = Barracuda # Barracuda
innodb_file_per_table = ein # ein
innodb_page_size = 16k # 16384 (16k)
innodb_thread_concurrency = 0 # 0
innodb_read_io_threads = 4 # 4
innodb_write_io_threads = 4 # 4
innodb_purge_threads = 4 # 4
innodb_print_all_deadlocks = ein # aus
innodb_deadlock_detect = ein # ein
innodb_lock_wait_timeout = 50 # 50
innodb_spin_wait_delay = 6 # 6
innodb_autoinc_lock_mode =2 # 1
innodb_stats_persistent = ein # ein
innodb_stats_persistent_sample_pages = 20 # 20
innodb_adaptive_hash_index = ein # ein
innodb_change_buffering =alle # alle
innodb_change_buffer_max_size = 25 # 25
innodb_flush_neighbors = 1 # 1
innodb_flush_method = O_DIRECT #  
innodb_doublewrite = ein # ein
innodb_log_buffer_size =16M # 16777216(16M)
innodb_flush_log_at_timeout = 1 # 1
innodb_flush_log_at_trx_commit = 1 # 1
autocommit =1 # 1

[Kunde]
automatische Wiederaufbereitung

Der Inhalt von /tmp/5506.cnf ist wie folgt:

[mysqld]
####: für global
Benutzer =jianglexing #mysql
basedir =/usr/local/mysql # /usr/local/mysql/
datadir =/tmp/5506 # /usr/local/mysql/data
server_id =5506 # 0
Port =5506 # 3306
socket =/tmp/5506/mysql.sock # /tmp/mysql.sock
auto_increment_increment =1 # 1
auto_increment_offset =1 # 1
Kleinbuchstaben-Tabellennamen = 1 # 0
secure_file_priv = # null


####: für Binlog
binlog_format =Zeile # Zeile
log_bin =mysql-bin # aus
binlog_rows_query_log_events = ein # aus
log_slave_updates = ein # aus
expire_logs_days =4 # 0
binlog_cache_size = 32768 # 32768 (32k)
binlog_checksum =keine # CRC32
sync_binlog =1 # 1


####: für Fehlerprotokoll
log_error =mysql-err.log # /usr/local/mysql/data/localhost.localdomain.err


####: für langsames Abfrageprotokoll


####: für gtid
gtid_mode = ein # aus
enforce_gtid_consistency = ein # aus


####: für die Replikation
master_info_repository =Tabelle # Datei
relay_log_info_repository =Tabelle # Datei


####: für Gruppenreplikation
transaction_write_set_extraction =XXHASH64 # aus
Name der Replikationsgruppe "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa" #  
loose-group_replication_start_on_boot =aus # aus
lose-group_replication_local_address = "127.0.0.1:24902" #
lose-group_replication_group_seeds = "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
loose-group_replication_bootstrap_group =aus # aus


####: für innodb
default_storage_engine = innodb # innodb
default_tmp_storage_engine = innodb # innodb
innodb_data_file_path =ibdata1:12M:autoextend # ibdata1:12M:autoextend
innodb_temp_data_file_path =ibtmp1:12M:autoextend # ibtmp1:12M:autoextend
innodb_log_group_home_dir = ./ # ./
innodb_log_files_in_group = 2 # 2
innodb_log_file_size =48M # 50331648(48M)
innodb_file_format = Barracuda # Barracuda
innodb_file_per_table = ein # ein
innodb_page_size = 16k # 16384 (16k)
innodb_thread_concurrency = 0 # 0
innodb_read_io_threads = 4 # 4
innodb_write_io_threads = 4 # 4
innodb_purge_threads = 4 # 4
innodb_print_all_deadlocks = ein # aus
innodb_deadlock_detect = ein # ein
innodb_lock_wait_timeout = 50 # 50
innodb_spin_wait_delay = 6 # 6
innodb_autoinc_lock_mode =2 # 1
innodb_stats_persistent = ein # ein
innodb_stats_persistent_sample_pages = 20 # 20
innodb_adaptive_hash_index = ein # ein
innodb_change_buffering =alle # alle
innodb_change_buffer_max_size = 25 # 25
innodb_flush_neighbors = 1 # 1
innodb_flush_method = O_DIRECT #  
innodb_doublewrite = ein # ein
innodb_log_buffer_size =16M # 16777216(16M)
innodb_flush_log_at_timeout = 1 # 1
innodb_flush_log_at_trx_commit = 1 # 1
autocommit =1 # 1

Der Inhalt von /tmp/6606.cnf ist wie folgt:

[mysqld]
####: für global
Benutzer =jianglexing #mysql
basedir =/usr/local/mysql # /usr/local/mysql/
datadir =/tmp/6606/ # /usr/local/mysql/data
server_id =6606 # 0
Port =6606 # 3306
socket =/tmp/6606/mysql.sock # /tmp/mysql.sock
auto_increment_increment =1 # 1
auto_increment_offset =1 # 1
Kleinbuchstaben-Tabellennamen = 1 # 0
secure_file_priv = # null


####: für Binlog
binlog_format =Zeile # Zeile
log_bin =mysql-bin # aus
binlog_rows_query_log_events = ein # aus
log_slave_updates = ein # aus
expire_logs_days =4 # 0
binlog_cache_size = 32768 # 32768 (32k)
binlog_checksum =keine # CRC32
sync_binlog =1 # 1


####: für Fehlerprotokoll
log_error =mysql-err.log # /usr/local/mysql/data/localhost.localdomain.err


####: für langsames Abfrageprotokoll


####: für gtid
gtid_mode = ein # aus
enforce_gtid_consistency = ein # aus


####: für die Replikation
master_info_repository =Tabelle # Datei
relay_log_info_repository =Tabelle # Datei


####: für Gruppenreplikation
transaction_write_set_extraction =XXHASH64 # aus
Name der Replikationsgruppe "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa" #  
loose-group_replication_start_on_boot =aus # aus
lose-group_replication_local_address = "127.0.0.1:24903" #
lose-group_replication_group_seeds = "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
loose-group_replication_bootstrap_group =aus # aus


####: für innodb
default_storage_engine = innodb # innodb
default_tmp_storage_engine = innodb # innodb
innodb_data_file_path =ibdata1:12M:autoextend # ibdata1:12M:autoextend
innodb_temp_data_file_path =ibtmp1:12M:autoextend # ibtmp1:12M:autoextend
innodb_log_group_home_dir = ./ # ./
innodb_log_files_in_group = 2 # 2
innodb_log_file_size =48M # 50331648(48M)
innodb_file_format = Barracuda # Barracuda
innodb_file_per_table = ein # ein
innodb_page_size = 16k # 16384 (16k)
innodb_thread_concurrency = 0 # 0
innodb_read_io_threads = 4 # 4
innodb_write_io_threads = 4 # 4
innodb_purge_threads = 4 # 4
innodb_print_all_deadlocks = ein # aus
innodb_deadlock_detect = ein # ein
innodb_lock_wait_timeout = 50 # 50
innodb_spin_wait_delay = 6 # 6
innodb_autoinc_lock_mode =2 # 1
innodb_stats_persistent = ein # ein
innodb_stats_persistent_sample_pages = 20 # 20
innodb_adaptive_hash_index = ein # ein
innodb_change_buffering =alle # alle
innodb_change_buffer_max_size = 25 # 25
innodb_flush_neighbors = 1 # 1
innodb_flush_method = O_DIRECT #  
innodb_doublewrite = ein # ein
innodb_log_buffer_size =16M # 16777216(16M)
innodb_flush_log_at_timeout = 1 # 1
innodb_flush_log_at_trx_commit = 1 # 1
autocommit =1 # 1

【3】Initialisieren Sie drei Datenbankinstanzen

cd /usr/local/mysql/
./bin/mysqld --defautls-file=/tmp/4406.cnf --datadir=/tmp/4406 --initialize-insecrue

./bin/mysqld --defautls-file=/tmp/5506.cnf --datadir=/tmp/5506 --initialize-insecrue

./bin/mysqld --defautls-file=/tmp/6606.cnf --datadir=/tmp/6606 --initialize-insecrue

【4】Konfigurieren Sie die erste Instanz der Gruppenreplikation

/usr/local/mysql/bin/mysqld --defaults-file=/tmp/4406.cnf &
mysql -h127.0.0.1 -uroot -P4406

--Benutzersatz sql_log_bin=0 hinzufügen;
    Erstellen Sie den Benutzer rpl_user@'%', identifiziert durch '123456';
    gewähre rpl_user@'%' Replikations-Slave, Replikations-Client auf *.*;
    Erstellen Sie den Benutzer rpl_user@'127.0.0.1' mit der Identifizierung '123456'.
    gewähre rpl_user@'127.0.0.1' Replikations-Slave, Replikations-Client auf *.*;
    Erstellen Sie den Benutzer rpl_user@'localhost' mit der Identifizierung '123456'.
    gewähre rpl_user@'localhost' Replikations-Slave und Replikations-Client auf *.*;
    setze sql_log_bin=1;

-- Replikations-Anmeldeinformationen hinzufügen change master zu 
      master_user='rpl_user',
      Master-Passwort = '123456'
      für Kanal „group_replication_recovery“;

-- Installieren Sie Gruppenreplikationsobjekte, installieren Sie das Plugin group_replication soname „group_replication.so“;

-- Gruppenreplikation starten, global group_replication_bootstrap_group=on festlegen;
    Gruppenreplikation starten;
    Setzen Sie die globale group_replication_bootstrap_group=off;

【5】Der Konfigurationsprozess der 5506-Instanz ist wie folgt:

/usr/local/mysql/bin/mysqld --defaults-file=/tmp/5506.cnf &
mysql -h127.0.0.1 -uroot -P5506

--Benutzersatz sql_log_bin=0 hinzufügen;
    Erstellen Sie den Benutzer rpl_user@'%', identifiziert durch '123456';
    gewähre rpl_user@'%' Replikations-Slave, Replikations-Client auf *.*;
    Erstellen Sie den Benutzer rpl_user@'127.0.0.1' mit der Identifizierung '123456'.
    gewähre rpl_user@'127.0.0.1' Replikations-Slave, Replikations-Client auf *.*;
    Erstellen Sie den Benutzer rpl_user@'localhost' mit der Identifizierung '123456'.
    gewähre rpl_user@'localhost' Replikations-Slave und Replikations-Client auf *.*;
    setze sql_log_bin=1;

-- Replikations-Anmeldeinformationen hinzufügen change master zu 
      master_user='rpl_user',
      Master-Passwort = '123456'
      für Kanal „group_replication_recovery“;

-- Installieren Sie Gruppenreplikationsobjekte, installieren Sie das Plugin group_replication soname „group_replication.so“;

-- Gruppenreplikation starten start group_replication; # Beachten Sie, dass dies keine Initialisierung ist, sondern nur ein Beitritt

【6】Die Vorgänge für Instanz 6606 sind dieselben wie für Instanz 5506. Die Konfiguration der Gruppenreplikation ist nun abgeschlossen.

Die oben aufgeführten Konfigurationsschritte für die MySQL-Gruppenreplikation (empfohlen) sind alle Inhalte, die der Editor mit Ihnen teilt. Ich hoffe, sie können Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Replikationskonfigurationsbeispiels zwischen MySQL-Containern
  • MySQL5.6 Replikations-Master-Slave-Replikation (Lese-/Schreibtrennung) Konfiguration vollständige Version
  • Einführung in die halbsynchrone MySQL-Replikation
  • Leistungsoptimierung für die semisynchrone Replikation in MySQL 5.7 Enhanced Edition
  • MySQL-MMM-Installationshandbuch (Multi-Master-Replikationsmanager für MySQL)
  • Zusammenfassung der Probleme basierend auf der MySQL-Replikation
  • mysql5.5 Master-Slave (Replikation) Konfigurationsmethode
  • mysql5.5 Master-Slave (Replikation) Master-Slave-Konfiguration
  • MySQL Master-Slave-Replikation, halbsynchrone Replikation

<<:  Gruselige Halloween-Linux-Befehle

>>:  Implementierungsschritte der objektorientierten Kapselung von js in einer kaskadierenden Dropdown-Menüliste

Artikel empfehlen

Diskussion zu Bildpfadproblemen in CSS (dasselbe Paket/anderes Paket)

In CSS-Dateien müssen Sie manchmal einen Hintergru...

Lösung für das Problem des MySQL-Threads beim Öffnen von Tabellen

Problembeschreibung Vor kurzem gab es einen MySQL...

Detaillierte Erklärung asynchroner Iteratoren in nodejs

Inhaltsverzeichnis Vorwort Was sind asynchrone It...

Tutorial zur Installation von MySQL 5.7.9 mit RPM-Paket unter CentOS 7

Aufgezeichnetes MySQL 5.7.9-Installationstutorial...

Zusammenfassung der für MySQL erforderlichen allgemeinen Kenntnisse

Inhaltsverzeichnis Primärschlüsseleinschränkung E...

So bereinigen Sie den von Docker belegten Speicherplatz

Docker nimmt viel Platz ein. Immer wenn wir Conta...

Einführung mehrerer benutzerdefinierter Schriftarten in CSS3

Heute habe ich ein Problem in HTML gefunden. Es s...

So verpacken Sie das Uniapp-Projekt als Desktop-Anwendung

Electron installieren cnpm installiere Electron -...

Drei Möglichkeiten zur Kommunikation zwischen Docker-Containern

Wir alle wissen, dass Docker-Container voneinande...

Dinge, die Sie nicht über die CSS-Pseudoelemente ::before und ::after wissen

CSS hat zwei Pseudoklassen, die nicht häufig verw...

So verwenden Sie das Marquee-Tag im XHTML-Code

Im Forum habe ich gesehen, dass der Internetnutzer...