mysql 8.0.18 mgr-Installation und seine Umschaltfunktion

mysql 8.0.18 mgr-Installation und seine Umschaltfunktion

1. Systeminstallationspaket

yum -y install make gcc-c++ cmake bison-devel ncurses-devel readline-devel libaio-devel perl libaio wget lrzsz vim libnuma* bzip2 xz

2. Firewall und Selinux ausschalten

sed -i ‚s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config
0

/etc/init.d/iptables stoppen

echo "/etc/init.d/iptables stop">>/etc/rc.local

3. Ändern Sie die Systemeinschränkungsparameter

Katze >> /etc/security/limits.conf << EOF
#
###Brauch
#
* Soft-Nofile 20480
* hartes Nofile 65535
* weicher nproc 20480
* harter nproc 65535
Ende der Laufzeit

4. Konfigurieren Sie die Hostauflösung jedes Hosts

Katze >> /etc/hosts <<"EOF"

10.10.146.28 bj-db-m1 
10.10.1.139 bj-db-m2 
10.10.173.84 bj-db-m3 

Ende der Laufzeit

5. Ändern Sie die Kernelparameter

Katze >>/etc/sysctl.conf <<"EOF"
vm.swappiness=0
#Erhöhen Sie die Anzahl der von TCP unterstützten Warteschlangen net.ipv4.tcp_max_syn_backlog = 65535
#Reduzieren Sie die Ressourcenwiederverwendung beim Trennen von net.ipv4.tcp_max_tw_buckets = 8000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
#Ändern Sie den lokalen Portbereich net.ipv4.ip_local_port_range = 1024 65535
#Erlauben Sie, dass mehr Verbindungen in die Warteschlange aufgenommen werden net.ipv4.tcp_max_syn_backlog = 4096 
#Für einen Datenbankserver, der nur lokal verwendet wird net.ipv4.tcp_fin_timeout = 30
#Portüberwachungswarteschlange net.core.somaxconn=65535
#Datenempfangsrate net.core.netdev_max_backlog=65535
net.core.wmem_default=87380
net.core.wmem_max=16777216
net.core.rmem_default=87380
net.core.rmem_max=16777216
Ende der Laufzeit

sysctl -p

6. Laden Sie das Installationspaket herunter

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
# Entpacken Sie das Installationspaket tar -xJf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
# Rufen Sie das Verzeichnis auf und erstellen Sie einen Softlink, um zukünftige Upgrades zu erleichtern. cd /usr/local/
ln -s /opt/mysql-8.0.18-linux-glibc2.12-x86_64 mysql
# Benutzergruppe erstellenmysql hinzufügen
useradd -g mysql mysql -d /home/mysql -s /sbin/nologin

# Erstellen Sie das entsprechende Verzeichnis mkdir -p /data/mysql/mysql_3306/{logs,tmp,undolog}

7. Erstellen Sie die Konfigurationsdatei my.cnf

7-1. Erste Maschinenkonfiguration

# Zuerst if [ -f /etc/my.cnf ]; dann
 mv /etc/meine.cnf /etc/meine.cnf.`date +%Y%m%d%H%m`.bak
fi 
# Knoten1
Katze >/data/mysql/mysql_3306/my_3306.cnf <<"EOF"
[Kunde]
Port = 3306
Socket = /data/mysql/mysql_3306/tmp/mysql_3306.sock

[mysql]
prompt="\u@\h \R:\m:\s [\d]> "
kein automatisches Wiederaufwärmen

[mysqld]
Benutzer = MySQL
Port = 3306
Administratoradresse = 127.0.0.1
basedir = /usr/local/mysql
Datenverzeichnis = /data/mysql/mysql_3306/data
Socket = /data/mysql/mysql_3306/tmp/mysql_3306.sock
pid-Datei = mysql_3306.pid
Zeichensatzserver = utf8mb4
skip_name_resolve = 1

#replicate-wild-ignore-table=mysql.%
#replicate-wild-ignore-table=test.%
#replicate-wild-ignore-table=information_schema.%

# Zwei-Master konfigurieren
#server-1 
#auto-increment-offset = 1
#auto-increment-increment = 2 

#server-2    
#auto-increment-offset = 2
#auto-increment-increment = 2


# halbsynchrone Replikationseinstellungen #
#plugin_dir = /usr/local/mysql/lib/mysql/plugin
#plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
plugin_dir = /usr/local/mysql/lib/plugin #Offizieller Versionspfad plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" #Offizieller Versionspfad slave_parallel_workers = 4
Slave_Parallel_Typ = LOGISCHE_UHR
Slave_Preserve_Commit_Order = 1

Open_files_limit = 65535
back_log = 1024
max_Verbindungen = 1024
max_connect_errors = 1000000
table_open_cache = 1024
Tabellendefinitionscache = 1024
Tabelle_öffnen_Cache-Instanzen = 64
Thread-Stapel = 512 KB
externe Sperre = FALSE
max_allowed_packet = 32M
Sortierpuffergröße = 4 M
Join-Puffergröße = 4 M
Thread-Cache-Größe = 1536
interaktives_Timeout = 600
Wartezeitüberschreitung = 600
temporäre Tabellengröße = 32 M
maximale Heap-Tabellengröße = 32 M
slow_query_log = 1
log_timestamps = SYSTEM
slow_query_log_file = /data/mysql/mysql_3306/logs/slow.log
log-error = /data/mysql/mysql_3306/logs/error.log
lange_Abfragezeit = 0,1
log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 60
Mindestanzahl untersuchter Zeilen = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
Server-ID = 1423306
log-bin = /data/mysql/mysql_3306/logs/mysql-bin
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1 G
binlog_expire_logs_seconds=2592000 
master_info_repository = TABELLE
relay_log_info_repository = TABELLE
gtid_mode = ein
enforce_gtid_consistency = 1
binlog_checksum=KEINE
log_slave_updates
Slave-Zeilen-Suchalgorithmen = "INDEX_SCAN, HASH_SCAN"
binlog_format = Zeile
binlog_row_image=VOLL

relay_log_recovery = 1
Relay-Log-Bereinigung = 1
Schlüsselpuffergröße = 32 M
Lesepuffergröße = 8 M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 64 MB
myisam_sort_buffer_size = 128 M
myisam_max_sort_file_size = 10 G
myisam_repair_threads = 1
Sperrwartezeitüberschreitung = 3600
explizite_Vorgaben_für_Zeitstempel = 1
innodb_thread_concurrency = 0
innodb_sync_spin_loops = 100
innodb_spin_wait_delay = 30

#transaction_isolation = WIEDERHOLBARES LESEN
transaction_isolation = LESEN-COMMITTED
#innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2867 M
innodb_buffer_pool_instances = 4
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 32 M
innodb_log_file_size = 2G
innodb_log_files_in_group = 3
innodb_max_undo_log_size = 4G
innodb_undo_directory = /data/mysql/mysql_3306/undolog

# Passen Sie es entsprechend der IOPS-Fähigkeit Ihres Servers an. # Wenn Sie eine normale SSD verwenden, können Sie es auf 10.000 - 20.000 einstellen.
# Wenn Sie eine High-End-PCIe-SSD-Karte konfigurieren, können Sie sie höher einstellen, z. B. 50000 - 80000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_sync = 0
innodb_flush_neighbors = 0
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_open_files = 65535
innodb_max_dirty_pages_pct = 50
innodb_flush_method = O_DIRECT
innodb_lru_scan_depth = 4000
innodb_checksum_algorithm = crc32
innodb_lock_wait_timeout = 10
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_file_per_table = 1
innodb_online_alter_log_max_size = 4G
innodb_stats_on_metadata = 0

# einige Variablen für MySQL 8
log_error_verbosity = 3
innodb_print_ddl_logs = 1
binlog_expire_logs_seconds = 2592000
#innodb_dedicated_server = 0

innodb_status_file = 1
# Hinweis: Das Aktivieren von innodb_status_output & innodb_status_output_locks kann dazu führen, dass die Protokollfehlerdatei schneller wächst innodb_status_output = 0
innodb_status_output_locks = 0

#leistungsschema
Leistungsschema = 1
performance_schema_instrument = "%memory%=ein"
performance_schema_instrument = "%lock%=on"

#innodb-Monitor
innodb_monitor_enable="Modul_innodb"
innodb_monitor_enable="Modulserver"
innodb_monitor_enable="module_dml"
innodb_monitor_enable="module_ddl"
innodb_monitor_enable="Modul_trx"
innodb_monitor_enable="module_os"
innodb_monitor_enable="Modul_bereinigen"
innodb_monitor_enable="Modulprotokoll"
innodb_monitor_enable="Modulsperre"
innodb_monitor_enable="Modulpuffer"
innodb_monitor_enable="Modulindex"
innodb_monitor_enable="module_ibuf_system"
innodb_monitor_enable="Modulpufferseite"
innodb_monitor_enable="module_adaptive_hash"

#MGR
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::
schnell
max_allowed_packet = 32M

[mysqld_safe]
#malloc-lib=/usr/local/mysql/lib/jmalloc.so 
nett=-19
Offene-Dateien-Limit=65535

Ende der Laufzeit


7-2. Zweite Maschinenkonfiguration

# Zweite Maschinewenn [ -f /etc/my.cnf ]; dann
 mv /etc/meine.cnf /etc/meine.cnf.`date +%Y%m%d%H%m`.bak
fi 
# Knoten1
Katze >/data/mysql/mysql_3306/my_3306.cnf <<"EOF"
[Kunde]
Port = 3306
Socket = /data/mysql/mysql_3306/tmp/mysql_3306.sock

[mysql]
prompt="\u@\h \R:\m:\s [\d]> "
kein automatisches Wiederaufwärmen

[mysqld]
Benutzer = MySQL
Port = 3306
Administratoradresse = 127.0.0.1
basedir = /usr/local/mysql
Datenverzeichnis = /data/mysql/mysql_3306/data
Socket = /data/mysql/mysql_3306/tmp/mysql_3306.sock
pid-Datei = mysql_3306.pid
Zeichensatzserver = utf8mb4
skip_name_resolve = 1

#replicate-wild-ignore-table=mysql.%
#replicate-wild-ignore-table=test.%
#replicate-wild-ignore-table=information_schema.%

# Zwei-Master konfigurieren
#server-1 
#auto-increment-offset = 1
#auto-increment-increment = 2 

#server-2    
#auto-increment-offset = 2
#auto-increment-increment = 2


# halbsynchrone Replikationseinstellungen #
#plugin_dir = /usr/local/mysql/lib/mysql/plugin
#plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
plugin_dir = /usr/local/mysql/lib/plugin #Offizieller Versionspfad plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" #Offizieller Versionspfad slave_parallel_workers = 4
Slave_Parallel_Typ = LOGISCHE_UHR
Slave_Preserve_Commit_Order = 1

Open_files_limit = 65535
back_log = 1024
max_Verbindungen = 1024
max_connect_errors = 1000000
table_open_cache = 1024
Tabellendefinitionscache = 1024
Tabelle_öffnen_Cache-Instanzen = 64
Thread-Stapel = 512 KB
externe Sperre = FALSE
max_allowed_packet = 32M
Sortierpuffergröße = 4 M
Join-Puffergröße = 4 M
Thread-Cache-Größe = 1536
interaktives_Timeout = 600
Wartezeitüberschreitung = 600
temporäre Tabellengröße = 32 M
maximale Heap-Tabellengröße = 32 M
slow_query_log = 1
log_timestamps = SYSTEM
slow_query_log_file = /data/mysql/mysql_3306/logs/slow.log
log-error = /data/mysql/mysql_3306/logs/error.log
lange_Abfragezeit = 0,1
log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 60
Mindestanzahl untersuchter Zeilen = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
Server-ID = 1433306
log-bin = /data/mysql/mysql_3306/logs/mysql-bin
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1 G
binlog_expire_logs_seconds=2592000 
master_info_repository = TABELLE
relay_log_info_repository = TABELLE
gtid_mode = ein
enforce_gtid_consistency = 1
binlog_checksum=KEINE
log_slave_updates
Slave-Zeilen-Suchalgorithmen = "INDEX_SCAN, HASH_SCAN"
binlog_format = Zeile
binlog_row_image=VOLL

relay_log_recovery = 1
Relay-Log-Bereinigung = 1
Schlüsselpuffergröße = 32 M
Lesepuffergröße = 8 M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 64 MB
myisam_sort_buffer_size = 128 M
myisam_max_sort_file_size = 10 G
myisam_repair_threads = 1
Sperrwartezeitüberschreitung = 3600
explizite_Vorgaben_für_Zeitstempel = 1
innodb_thread_concurrency = 0
innodb_sync_spin_loops = 100
innodb_spin_wait_delay = 30

#transaction_isolation = WIEDERHOLBARES LESEN
transaction_isolation = LESEN-COMMITTED
#innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2867 M
innodb_buffer_pool_instances = 4
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 32 M
innodb_log_file_size = 2G
innodb_log_files_in_group = 3
innodb_max_undo_log_size = 4G
innodb_undo_directory = /data/mysql/mysql_3306/undolog

# Passen Sie es entsprechend der IOPS-Fähigkeit Ihres Servers an. # Wenn Sie eine normale SSD verwenden, können Sie es auf 10.000 - 20.000 anpassen.
# Wenn Sie eine High-End-PCIe-SSD-Karte konfigurieren, können Sie sie höher einstellen, beispielsweise 50000 - 80000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_sync = 0
innodb_flush_neighbors = 0
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_open_files = 65535
innodb_max_dirty_pages_pct = 50
innodb_flush_method = O_DIRECT
innodb_lru_scan_depth = 4000
innodb_checksum_algorithm = crc32
innodb_lock_wait_timeout = 10
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_file_per_table = 1
innodb_online_alter_log_max_size = 4G
innodb_stats_on_metadata = 0

# einige Variablen für MySQL 8
log_error_verbosity = 3
innodb_print_ddl_logs = 1
binlog_expire_logs_seconds = 2592000
#innodb_dedicated_server = 0

innodb_status_file = 1
# Hinweis: Das Aktivieren von innodb_status_output & innodb_status_output_locks kann dazu führen, dass die Protokollfehlerdatei schneller wächst innodb_status_output = 0
innodb_status_output_locks = 0

#leistungsschema
Leistungsschema = 1
performance_schema_instrument = "%memory%=ein"
performance_schema_instrument = "%lock%=ein"

#innodb-Monitor
innodb_monitor_enable="Modul_innodb"
innodb_monitor_enable="Modulserver"
innodb_monitor_enable="module_dml"
innodb_monitor_enable="module_ddl"
innodb_monitor_enable="Modul_trx"
innodb_monitor_enable="module_os"
innodb_monitor_enable="Modul_bereinigen"
innodb_monitor_enable="Modulprotokoll"
innodb_monitor_enable="Modulsperre"
innodb_monitor_enable="Modulpuffer"
innodb_monitor_enable="Modulindex"
innodb_monitor_enable="module_ibuf_system"
innodb_monitor_enable="Modulpufferseite"
innodb_monitor_enable="module_adaptive_hash"

#MGR
: : : : : : : : : : : : : : :
schnell
max_allowed_packet = 32M

[mysqld_safe]
#malloc-lib=/usr/local/mysql/lib/jmalloc.so 
nett=-19
Offene-Dateien-Limit=65535

Ende der Laufzeit

7-3. Die dritte Konfiguration

# Die dritte Station if [ -f /etc/my.cnf ]; dann
 mv /etc/meine.cnf /etc/meine.cnf.`date +%Y%m%d%H%m`.bak
fi 
# Knoten1
Katze >/data/mysql/mysql_3306/my_3306.cnf <<"EOF"
[Kunde]
Port = 3306
Socket = /data/mysql/mysql_3306/tmp/mysql_3306.sock

[mysql]
prompt="\u@\h \R:\m:\s [\d]> "
kein automatisches Wiederaufwärmen

[mysqld]
Benutzer = MySQL
Port = 3306
Administratoradresse = 127.0.0.1
basedir = /usr/local/mysql
Datenverzeichnis = /data/mysql/mysql_3306/data
Socket = /data/mysql/mysql_3306/tmp/mysql_3306.sock
pid-Datei = mysql_3306.pid
Zeichensatzserver = utf8mb4
skip_name_resolve = 1

#replicate-wild-ignore-table=mysql.%
#replicate-wild-ignore-table=test.%
#replicate-wild-ignore-table=information_schema.%

# Zwei-Master konfigurieren
#server-1 
#auto-increment-offset = 1
#auto-increment-increment = 2 

#server-2    
#auto-increment-offset = 2
#auto-increment-increment = 2


# halbsynchrone Replikationseinstellungen #
#plugin_dir = /usr/local/mysql/lib/mysql/plugin
#plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
plugin_dir = /usr/local/mysql/lib/plugin #Offizieller Versionspfad plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" #Offizieller Versionspfad slave_parallel_workers = 4
Slave_Parallel_Typ = LOGISCHE_UHR
Slave_Preserve_Commit_Order = 1

Open_files_limit = 65535
back_log = 1024
max_Verbindungen = 1024
max_connect_errors = 1000000
table_open_cache = 1024
Tabellendefinitionscache = 1024
Tabelle_öffnen_Cache-Instanzen = 64
Thread-Stapel = 512 KB
externe Sperre = FALSE
max_allowed_packet = 32M
Sortierpuffergröße = 4 M
Join-Puffergröße = 4 M
Thread-Cache-Größe = 1536
interaktives_Timeout = 600
Wartezeitüberschreitung = 600
temporäre Tabellengröße = 32 M
maximale Heap-Tabellengröße = 32 M
slow_query_log = 1
log_timestamps = SYSTEM
slow_query_log_file = /data/mysql/mysql_3306/logs/slow.log
log-error = /data/mysql/mysql_3306/logs/error.log
lange_Abfragezeit = 0,1
log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 60
Mindestanzahl untersuchter Zeilen = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
Server-ID = 1443306
log-bin = /data/mysql/mysql_3306/logs/mysql-bin
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1 G
binlog_expire_logs_seconds=2592000 
master_info_repository = TABELLE
relay_log_info_repository = TABELLE
gtid_mode = ein
enforce_gtid_consistency = 1
binlog_checksum=KEINE
log_slave_updates
Slave-Zeilen-Suchalgorithmen = "INDEX_SCAN, HASH_SCAN"
binlog_format = Zeile
binlog_row_image=VOLL

relay_log_recovery = 1
Relay-Log-Bereinigung = 1
Schlüsselpuffergröße = 32 M
Lesepuffergröße = 8 M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 64 MB
myisam_sort_buffer_size = 128 M
myisam_max_sort_file_size = 10 G
myisam_repair_threads = 1
Sperrwartezeitüberschreitung = 3600
explizite_Vorgaben_für_Zeitstempel = 1
innodb_thread_concurrency = 0
innodb_sync_spin_loops = 100
innodb_spin_wait_delay = 30

#transaction_isolation = WIEDERHOLBARES LESEN
transaction_isolation = LESEN-COMMITTED
#innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2867 M
innodb_buffer_pool_instances = 4
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 32 M
innodb_log_file_size = 2G
innodb_log_files_in_group = 3
innodb_max_undo_log_size = 4G
innodb_undo_directory = /data/mysql/mysql_3306/undolog

# Passen Sie es entsprechend der IOPS-Fähigkeit Ihres Servers an. # Wenn Sie eine normale SSD verwenden, können Sie es auf 10.000 - 20.000 einstellen.
# Wenn Sie eine High-End-PCIe-SSD-Karte konfigurieren, können Sie sie höher einstellen, beispielsweise 50000 - 80000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_sync = 0
innodb_flush_neighbors = 0
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_open_files = 65535
innodb_max_dirty_pages_pct = 50
innodb_flush_method = O_DIRECT
innodb_lru_scan_depth = 4000
innodb_checksum_algorithm = crc32
innodb_lock_wait_timeout = 10
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_file_per_table = 1
innodb_online_alter_log_max_size = 4G
innodb_stats_on_metadata = 0

# einige Variablen für MySQL 8
log_error_verbosity = 3
innodb_print_ddl_logs = 1
binlog_expire_logs_seconds = 2592000
#innodb_dedicated_server = 0

innodb_status_file = 1
# Hinweis: Das Aktivieren von innodb_status_output & innodb_status_output_locks kann dazu führen, dass die Protokollfehlerdatei schneller wächst innodb_status_output = 0
innodb_status_output_locks = 0

#leistungsschema
Leistungsschema = 1
performance_schema_instrument = "%memory%=ein"
performance_schema_instrument = "%lock%=ein"

#innodb-Monitor
innodb_monitor_enable="Modul_innodb"
innodb_monitor_enable="Modulserver"
innodb_monitor_enable="module_dml"
innodb_monitor_enable="module_ddl"
innodb_monitor_enable="Modul_trx"
innodb_monitor_enable="module_os"
innodb_monitor_enable="Modul_bereinigen"
innodb_monitor_enable="Modulprotokoll"
innodb_monitor_enable="Modulsperre"
innodb_monitor_enable="Modulpuffer"
innodb_monitor_enable="Modulindex"
innodb_monitor_enable="module_ibuf_system"
innodb_monitor_enable="Modulpufferseite"
innodb_monitor_enable="module_adaptive_hash"

#MGR
: : : : : : : : : : : : : : :
schnell
max_allowed_packet = 32M

[mysqld_safe]
#malloc-lib=/usr/local/mysql/lib/jmalloc.so 
nett=-19
Anzahl der geöffneten Dateien = 65535

Ende der Laufzeit

8. Berechtigungen ändern, initialisieren und starten

chown -R mysql.mysql /data/mysql/mysql_3306
chown -R mysql.mysql /usr/local/mysql/

# Initialisieren # /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql --initialize-insecure
# Die offizielle Empfehlung ist, --initialize zu verwenden, wodurch ein temporäres Passwort generiert wird, das sich nur schwer in das Fehlerprotokoll eintragen lässt. Ich verwende hier die passwortfreie Methode.
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql_3306/my_3306.cnf --initialize-insecure --user=mysql &

#Starten Sie die Datenbank /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql_3306/my_3306.cnf &

9. Protokolle anzeigen

#9. Überprüfen Sie das Protokoll# tail -f /data/mysql/mysql_3306/logs/error.log

10. Erstanmeldung

#10. Erster Login /usr/local/mysql/bin/mysql -S /data/mysql/mysql_3306/tmp/mysql_3306.sock

11. Passwort ändern

# Methode zum Ändern des Kennworts festlegen sql_log_bin = 0;

ALTER USER 'root'@'localhost' IDENTIFIZIERT MIT mysql_native_password VON 'GJjumB6g4FcwdF3R6AZc'. PASSWORT LÄUFT NIE AB;
Erstellen Sie den Benutzer „root“@„127.0.0.1“, identifiziert mit mysql_native_password durch „GJjumB6g4FcwdF3R6AZc“. Das Passwort läuft nie ab.
Gewähren Sie „root“@„127.0.0.1“ alle Berechtigungen für *.* mit der Gewährungsoption.

Erstellen Sie den Benutzer „admin_m“@„127.0.0.1“, identifiziert mit mysql_native_password durch „fcfmTbRw1tz2x5L5GvjJ“. Das Passwort läuft nie ab. 
Gewähren Sie 'admin_m'@'127.0.0.1' alle Berechtigungen für *.* mit der Gewährungsoption.

Erstellen Sie den Benutzer „admin_m“@„%“, identifiziert mit mysql_native_password durch „fcfmTbRw1tz2x5L5GvjJ“. Das Passwort läuft nie ab. 
Gewähren Sie 'admin_m'@'%' alle Berechtigungen für *.* mit der Gewährungsoption.

Erstellen Sie den Benutzer „test_w“@„%“, identifiziert mit mysql_native_password von „EeCrfUDO6wRzn72BBQ52“. Das Passwort läuft nie ab.
gewähre „test_w“@„%“ die Berechtigung zum Einfügen, Löschen, Aktualisieren und Auswählen auf db144.*;

Erstellen Sie den Benutzer „test_r“@„%“, identifiziert mit mysql_native_password von „EeCrfUDO6wRzn72BBQ52“. Das Passwort läuft nie ab.
gewähre „test_r“@„%“ die Berechtigung zum Einfügen, Löschen, Aktualisieren und Auswählen für db144.*;

Erstellen Sie den Benutzer „repl“@„%“, IDENTIFIZIERT mit mysql_native_password durch „replpfhOTnWffQdQL3F3“;
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
setze sql_log_bin = 1;

12. Verknüpfungseinstellungen

Verknüpfungen

ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib/
ln -s /usr/local/mysql/lib/libmysqlclient.so.21 /usr/lib/libmysqlclient.so.21
ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/
ln -s /usr/local/mysql/lib/libmysqlclient.so.21 /usr/lib64/libmysqlclient.so.21


ln -s /data/mysql/mysql_3306/tmp/mysql_3306.sock /tmp/mysql.sock
ln -s /usr/local/mysql/bin/* /usr/bin/

Katze >>~/.bashrc <<"EOF"
##########


Alias ​​mysql.3306.start="/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql_3306/my_3306.cnf &"
Alias ​​mysql.3306.stop="/usr/local/mysql/bin/mysqladmin -h127.0.0.1 -P 3306 -uroot -p'GJjumB6g4FcwdF3R6AZc' Herunterfahren &"
Alias ​​mysql.3306.login="/usr/local/mysql/bin/mysql -h127.0.0.1 -P 3306 -uroot -p'GJjumB6g4FcwdF3R6AZc'"


##########
Ende der Laufzeit


Quelle /root/.bash_profile

Katze >>/etc/ld.so.conf <<"EOF"
/usr/local/mysql/lib
Ende der Laufzeit

ldconfig 
mysql.3306.login

13. MGR-Konfiguration

13-1. Erste Maschinenkonfiguration

# MGR erste Maschinenkonfiguration:
# Schritt 1: Erstellen Sie einen Benutzer für den Replikationssatz sql_log_bin=0;
Erstellen Sie den Benutzer „repuser“@„%“, identifiziert durch „JhXpMK44ju8Vp5bxvO2N“;

gewähre 'repuser'@'%' Replikations-Slave, Replikations-Client auf *.*;

Erstellen Sie den Benutzer „repuser“@„127.0.0.1“, identifiziert durch „JhXpMK44ju8Vp5bxvO2N“;

gewähre 'repuser'@'127.0.0.1' Replikations-Slave, Replikations-Client auf *.*;

Erstellen Sie den Benutzer „repuser“@„localhost“, identifiziert durch „JhXpMK44ju8Vp5bxvO2N“;

gewähre 'repuser'@'localhost' Replikations-Slave, Replikations-Client auf *.*;

setze sql_log_bin=1;

# Schritt 2: Konfigurieren Sie den für die Replikation verwendeten Benutzer. Ändern Sie „Master“ in „master_user='repuser',master_password='JhXpMK44ju8Vp5bxvO2N'“ für den Kanal „group_replication_recovery“.

# Schritt 3: Installieren Sie das MySQL-Gruppenreplikations-Plugin. # Hinweis: Wenn Sie plugin_load="group_replication=group_replication.so" in my.cnf schreiben, müssen Sie das Plugin group_replication soname 'group_replication.so' nicht installieren.

# Überprüfen Sie, ob die Installation erfolgreich war, indem Sie „plugins anzeigen;plugins anzeigen“ verwenden.

# Schritt 4: Erstellen Sie eine Gruppe (der offizielle Begriff lautet „Initialisieren Sie eine Replikationsgruppe“, setzen Sie global group_replication_bootstrap_group=on;
Gruppenreplikation starten;
Setzen Sie die globale group_replication_bootstrap_group=off;

Wählen Sie * aus Performance_schema.Replikationsgruppenmitgliedern;


13-2. Zweite und dritte Maschinenkonfiguration

##########################################################################
#MGR konfiguriert andere Slave-Knoten #Auf allen Slave-Hosts in MySQL ausführen # Schritt 1: Erstellen Sie einen Benutzer für die Replikation, setzen Sie sql_log_bin=0;
Erstellen Sie den Benutzer „repuser“@„%“, identifiziert durch „JhXpMK44ju8Vp5bxvO2N“;

gewähre 'repuser'@'%' Replikations-Slave, Replikations-Client auf *.*;

Erstellen Sie den Benutzer „repuser“@„127.0.0.1“, identifiziert durch „JhXpMK44ju8Vp5bxvO2N“;

gewähre 'repuser'@'127.0.0.1' Replikations-Slave, Replikations-Client auf *.*;

Erstellen Sie den Benutzer „repuser“@„localhost“, identifiziert durch „JhXpMK44ju8Vp5bxvO2N“;

gewähre 'repuser'@'localhost' Replikations-Slave, Replikations-Client auf *.*;

setze sql_log_bin=1;

# Schritt 2: Konfigurieren Sie den für die Replikation verwendeten Benutzer. Ändern Sie „Master“ in „master_user='repuser',master_password='JhXpMK44ju8Vp5bxvO2N'“ für den Kanal „group_replication_recovery“.

# Schritt 3: Installieren Sie das MySQL-Gruppenreplikations-Plugin. # Hinweis: Wenn Sie plugin_load="group_replication=group_replication.so" in my.cnf schreiben, müssen Sie das Plugin group_replication soname 'group_replication.so' nicht installieren.

# Überprüfen Sie, ob die Installation erfolgreich war, indem Sie „plugins anzeigen;plugins anzeigen“ verwenden.

# Schritt 4: Treten Sie der zuvor erstellten Replikationsgruppe bei, start group_replication;
Wählen Sie * aus Performance_schema.Replikationsgruppenmitgliedern;
######################################################################################

# Überprüfen Sie den Status mysql> select * from performance_schema.replication_group_members;
+------------------------------------------+--------------------------+-------------+-------------+--------------+-------------+----------------+
| KANALNAME | MITGLIEDS-ID | MITGLIEDSHOST | MITGLIEDSPORT | MITGLIEDSSTATUS | MITGLIEDSROLE | MITGLIEDSVERSION |
+------------------------------------------+--------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | d955da6d-0048-11ea-b7b4-525400f4342d | bj-db-m1 | 3306 | ONLINE | PRIMARY | 8.0.18 |
| group_replication_applier | e050c34f-0048-11ea-917d-52540021fab9 | bj-db-m3 | 3306 | ONLINE | SECONDARY | 8.0.18 |
| group_replication_applier | e6c56347-0048-11ea-9e8b-5254007c241f | bj-db-m2 | 3306 | ONLINE | SECONDARY | 8.0.18 |
+------------------------------------------+--------------------------+-------------+-------------+--------------+-------------+----------------+
3 Zeilen im Satz (0,00 Sek.)

14. Umstellung von einem einzelnen Master auf mehrere Master

######################################################################
# Wechseln von Einzelmaster zu Multimaster. # Der MGR-Umschaltmodus erfordert einen Neustart der Gruppenreplikation, daher müssen Sie zuerst die Gruppenreplikation auf allen Knoten herunterfahren.
#Setzen Sie group_replication_single_primary_mode=OFF und andere Parameter und starten Sie dann die Gruppenreplikation.
1) Stoppen Sie die Gruppenreplikation (wird auf allen MGR-Knoten ausgeführt):
Stoppen Sie die Gruppenreplikation. 
Setzen Sie den globalen Gruppenreplikationsmodus „single_primary_mode“ auf „OFF“.
Setzen Sie global group_replication_enforce_update_everywhere_checks=ON;

2) Wählen Sie einen beliebigen MGR-Knoten zur Ausführung aus (wählen Sie hier beispielsweise MGR-Knoten1 aus):
Setzen Sie global group_replication_recovery_get_public_key=1;
Setzen Sie GLOBAL group_replication_bootstrap_group=ON;
STARTEN SIE GROUP_REPLICATION;
Setzen Sie GLOBAL group_replication_bootstrap_group=OFF;

3) Führen Sie es dann auf anderen MGR-Knoten aus (hier bezieht es sich auf MGR-Knoten2 und MGR-Knoten3):
Setzen Sie global group_replication_recovery_get_public_key=1;
STARTEN SIE GROUP_REPLICATION;

4) MGR-Gruppeninformationen anzeigen (können auf jedem MGR-Knoten angezeigt werden)
WÄHLEN SIE * AUS Performanceschema.Replikationsgruppenmitglieder;


# Sie können sehen, dass der Status aller MGR-Knoten online ist, die Rolle PRIMARY ist und der MGR-Multimastermodus erfolgreich eingerichtet wurde.

##########################################################################

15. Umstellung von mehreren Mastern auf einen einzigen Master

##########################################################################
# Zurück vom Multi-Master-Modus in den Single-Master-Modus wechseln 1) Gruppenreplikation stoppen (auf allen MGR-Knoten ausführen):
Stoppen Sie die Gruppenreplikation.
Setzen Sie global group_replication_enforce_update_everywhere_checks=OFF;
Setzen Sie den globalen Gruppenreplikationsmodus „single_primary_mode“ auf „ON“.

2) Wählen Sie einen Knoten als Masterknoten aus und führen Sie ihn auf dem Masterknoten aus (hier wird MGR-Knoten1 als Masterknoten ausgewählt).
Setzen Sie GLOBAL group_replication_bootstrap_group=ON;
STARTEN SIE GROUP_REPLICATION;
Setzen Sie GLOBAL group_replication_bootstrap_group=OFF;
 
3) Führen Sie die folgenden Schritte auf den verbleibenden Knoten aus, d. h. den Slave-Knoten (mit den Slave-Knoten sind hier MGR-Knoten2 und MGR-Knoten3 gemeint):
STARTEN SIE GROUP_REPLICATION;

4) MGR-Gruppeninformationen anzeigen (können auf jedem MGR-Knoten angezeigt werden)
WÄHLEN SIE * AUS Performanceschema.Replikationsgruppenmitglieder;
##########################################################################

16. Störungsvorkehrungen

# Vorsichtsmaßnahmen bei Störungen:
# Stellen Sie im Single-Master-Modus den Knoten MGR-node1 wieder her. Nach der Wiederherstellung müssen Sie die Gruppenreplikationsfunktion des Knotens manuell aktivieren. # Wenn ein Knoten ausfällt, muss er nach der Wiederherstellung wieder dem MGR-Cluster beitreten. Der richtige Weg ist:
STOPPEN SIE DIE GRUPPENREPLIKATION;
STARTEN SIE GROUP_REPLICATION;

# Wenn ein Knoten hängt, werden andere Knoten weiterhin synchronisiert.
# Wenn der ausgefallene Knoten wiederhergestellt ist, müssen Sie nur die Gruppenreplikationsfunktion des Knotens manuell aktivieren ("START GROUP_REPLICATION;").
# Sie können dem MGR-Gruppenreplikationscluster normal beitreten und Daten von anderen Knoten automatisch synchronisieren.


# Wenn bei der E/A-Replikation eine Ausnahme auftritt. # Nach der Bestätigung, dass die Daten korrekt sind. # Suchen Sie die GTID der Masterdatenbank. mysql> zeige globale Variablen wie „%gtid%“ an.
+----------------------------------------------+------------------------------------------+
| Variablenname | Wert |
+----------------------------------------------+------------------------------------------+
| binlog_gtid_simple_recovery | EIN |
| enforce_gtid_consistency | EIN |
| Gruppenreplikations-GTID-Zuweisungsblockgröße | 1000000 |
| gtid_executed | 58f6e65e-9309-11e9-9d88-525400184a0a:1-946050:1000003 |
| gtid_executed_compression_perioden | 1000 |
| gtid_mode | EIN |
| gtid_owned | |
| gtid_purged | |
| session_track_gtids | AUS |
+----------------------------------------------+------------------------------------------+
Zeilen im Set (0,00 Sek.)

# Stoppen Sie GROUP_REPLICATION im fehlerhaften Slave;
Master zurücksetzen;
Setzen Sie global gtid_purged='58f6e65e-9309-11e9-9d88-525400184a0a:1-946055:1000003';
STARTEN SIE GROUP_REPLICATION;

# Whitelist-Netzwerksegment hinzufügen, Group_Replication stoppen;
Setzen Sie die globale group_replication_ip_whitelist="127.0.0.1/32,172.16.60.0/24,172.16.50.0/24,172.16.51.0/24";
Gruppenreplikation starten;
Variablen wie „group_replication_ip_whitelist“ anzeigen;

# Bitte beachten: Bevor Sie die Whitelist konfigurieren, müssen Sie zuerst die Gruppenreplikation deaktivieren und „stop group_replication;“ ausführen.

Zusammenfassen

Das Obige ist die Einführung des Herausgebers in die mgr-Konstruktion von MySQL 8.0.18 und seine Umschaltfunktionen. Ich hoffe, es wird für alle hilfreich sein!

Das könnte Sie auch interessieren:
  • So konfigurieren Sie MGR Single Master und mehrere Slaves in MySQL 8.0.15
  • Was sind die Vorteile von MySQL MGR?
  • Detaillierte Erläuterung der Wissenspunkte zum Umschalten zwischen MySQL MGR-Einzelmaster- und Multimastermodus
  • MySQL 8.0.18 verwendet Klon-Plugin, um die MGR-Implementierung neu zu erstellen
  • Detaillierte Erläuterung der Methode zur Bestimmung des einzelnen Masterknotens von MySQL 5.7 MGR
  • Häufige Probleme und Lösungen beim Erstellen von MySQL MGR

<<:  Zabbix-Konfiguration DingTalk-Alarmfunktions-Implementierungscode

>>:  Docker installiert Redis und führt den visuellen Client für den Betrieb ein

Artikel empfehlen

Entpackte Version der MySQL-Installation und aufgetretene Fehler und Lösungen

1 Installation Laden Sie die entsprechende entpac...

Tutorial zur Installation von MySQL 8.0.11 mit RPM unter Linux (CentOS7)

Inhaltsverzeichnis 1. Installationsvorbereitung 1...

Anwendungsszenarien für React useMemo und useCallback

Inhaltsverzeichnis verwendenMemo useCallback verw...

Linux CentOS6.5 yum installiere mysql5.6

In diesem Artikel wird der einfache Prozess der I...

So verwenden Sie einen Docker-Container für den Zugriff auf das Host-Netzwerk

Vor Kurzem wurde ein System bereitgestellt, das n...

Implementierung eines geplanten MySQL-Sicherungsskripts unter Windows

Wenn Sie auf einem Windows-Server regelmäßig Date...

MySQL verwendet Binlog-Protokolle zur Implementierung der Datenwiederherstellung

MySQL Binlog ist ein sehr wichtiges Protokoll in ...

Detailliertes Tutorial zum Bereitstellen von Jenkins basierend auf Docker

0. Als ich dieses Dokument erstellte, war es unge...

Detaillierte Erläuterung der Hochverfügbarkeitskonfiguration von Docker

Docker Compose Docker Compose unterteilt die verw...

So verstehen Sie den Unterschied zwischen ref toRef und toRefs in Vue3

Inhaltsverzeichnis 1. Grundlagen 1.Referenz 2. to...

Detaillierte Schritte zur Installation eines Hadoop-Clusters unter Linux

Inhaltsverzeichnis 1. Erstellen Sie ein Hadoop-Ve...

Installationsschritte für die chinesische Eingabemethode von Ubuntu 20.04

Dieser Artikel installiert die Google-Eingabemeth...