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

Gruselige Halloween-Linux-Befehle

Auch wenn nicht Halloween ist, lohnt es sich, sic...

Java verwendet Apache.POI, um HSSFWorkbook nach Excel zu exportieren

Verwenden Sie HSSFWorkbook in Apache.POI, um nach...

Analyse der Unterschiede zwischen Mysql InnoDB und MyISAM

MySQL unterstützt viele Arten von Tabellen (d. h....

Zusammenfassung gängiger MySQL-DDL-Operationen

Bibliotheksverwaltung Erstellen einer Bibliothek ...

So leiten Sie über den Nginx-Lastausgleich zu https um

Kopieren Sie das Zertifikat und den Schlüssel im ...

Detaillierte Erklärung der MySQL-Datenbank-Trigger

Inhaltsverzeichnis 1 Einleitung 2 Trigger-Einführ...

So stellen Sie MySQL- und Redis-Dienste mit Docker bereit

Inhaltsverzeichnis So stellen Sie den MySQL-Diens...

js, um einen gleitenden Karusselleffekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

vue3+ts+EsLint+Prettier Standardcode-Implementierung

Inhaltsverzeichnis verwenden Verwendung von EsLin...

Lösung für das Problem, dass der Z-Index in CSS3 nicht wirksam wird

Ich habe vor kurzem eine Kombination aus CSS3 und...