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

Verwenden Sie das ab-Tool, um einen API-Stresstest auf dem Server durchzuführen

Inhaltsverzeichnis 1 Eine kurze Einführung in den...

9 großartige JavaScript-Framework-Skripte zum Zeichnen von Diagrammen im Web

9 großartige JavaScript-Framework-Skripte zum Zei...

So installieren Sie Redis5.0.3 im Docker

1. Ziehen Sie das offizielle 5.0.3-Image [root@lo...

So stellen Sie Gitlab mit Docker-Compose bereit

Docker-Compose stellt Gitlab bereit 1. Docker ins...

5 Möglichkeiten, um festzustellen, ob ein Objekt in JS ein leeres Objekt ist

1. Konvertieren Sie das JSON-Objekt in eine JSON-...

Zwei Möglichkeiten zum Aktivieren der Firewall im Linux-Dienst

Es gibt zwei Möglichkeiten: 1. Servicemethode Übe...

Der grundlegendste Code für Webseiten

◆Zu Favoriten hinzufügen veranschaulichen Klicken...

JavaScript BOM-Standortobjekt + Navigatorobjekt + Verlaufsobjekt

Inhaltsverzeichnis 1. Standortobjekt 1. URL 2. Ei...

So ändern Sie das Root-Passwort von Mysql5.7.10 auf dem MAC

Starten Sie MySQL zunächst im Skip-Grant-Tables-M...

js, um den Effekt des Ziehens des Schiebereglers zu erzielen

In diesem Artikel finden Sie den spezifischen Cod...

202 kostenlose, hochwertige XHTML-Vorlagen (2)

Nach dem vorherigen Artikel 202 kostenlose hochwe...

Zwei Möglichkeiten, die CSS-Priorität zu verstehen

Methode 1: Werte hinzufügen Gehen wir zu MDN, um ...

HTML-Code für Multiheader-Tabellen

1. Code der Multiheader-Tabelle Code kopieren Der ...

Analyse der Schwierigkeiten im Hot-Standby der MySQL-Datenbank

Ich habe Ihnen zuvor die Konfigurationsmethode fü...