Dieser Artikel beschreibt den eigentlichen Prozess der Master-Slave-Synchronisierung einer MySQL-Datenbank. Teilen Sie uns die Einzelheiten zu Ihrer Information mit: Fortsetzung des vorherigen Artikels: Erste Schritte mit MySQL-Datenbank: Sichern der Datenbank Beschreibung der InstallationsumgebungSystemumgebung: [root@~]# cat /etc/redhat-release CentOS-Version 6.5 (endgültig) [root@~]# uname -r 2.6.32-431.el6.x86_64 Datenbank: Da es sich um eine simulierte Umgebung handelt, befinden sich die Master- und Slave-Bibliotheken auf demselben Server und die Server-IP-Adresse lautet 192.168.1.7
MySQL-Datenbankdienst installierenHerunterladen des Pakets Heute verwenden wir das binäre Installationspaket, um den MySQL-Datenbankdienst bereitzustellen. Weitere Installations- und Bereitstellungsmethoden finden Sie im vorherigen Artikel [root@~]#wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.51-linux2.6-x86_64.tar.gz Datenverzeichnis und Softwareinstallationsverzeichnis erstellen [root@~]#mkdir /data{3306,3307} -p [root@~]#mkdri /Anwendung Dekomprimierungssoftware [root@~]#tar zxf mysql-5.5.51-linux2.6-x86_64.tar.gz [root@~]#mv mysql-5.5.51-linux2.6-x86_64 /anwendung/mysql-5.5.51 [root@~]#ln -s /anwendung/mysql-5.5.51 /anwendung/mysql Benutzer erstellen [root@~]#groupadd mysql [root@~]#useradd -g mysql -M mysql Initialisieren der Datenbank [root@~]#/Anwendung/mysql/scripts/mysql_install_db --basedir=/Anwendung/mysql --datadir=/data/3306/data --user=mysql [root@~]#/Anwendung/mysql/scripts/mysql_install_db --basedir=/Anwendung/mysql --datadir=/data/3307/data --user=mysql Erstellen einer Konfigurationsdatei [root@~]#vi /data/3306/my.cnf [Kunde] Port = 3306 Socket = /data/3306/mysql.sock [mysql] kein automatisches Wiederaufwärmen [mysqld] Benutzer = MySQL Port = 3306 Socket = /data/3306/mysql.sock basedir = /anwendung/mysql Datenverzeichnis = /Daten/3306/Daten Open_files_limit = 1024 back_log = 600 max_Verbindungen = 800 max_connect_errors = 3000 Tabellencache = 614 externe Sperre = FALSE max_allowed_packet = 8M Sortierpuffergröße = 1 M Join-Puffergröße = 1 M Thread-Cache-Größe = 100 Thread_Parallelität = 2 Abfrage-Cachegröße = 2 M query_cache_limit = 1M query_cache_min_res_unit = 2k Thread-Stapel = 192 KB temporäre Tabellengröße = 2 M maximale Heap-Tabellengröße = 2 M lange_Abfragezeit = 1 pid-Datei = /data/3306/mysql.pid log-bin = /data/3306/mysql-bin #Der entscheidende Punkt der Master-Slave-Synchronisation: Der Slave muss relay-log = /data/3306/relay-bin nicht öffnen Relay-Log-Info-Datei = /data/3306/relay-log.info binlog_cache_size = 1M max_binlog_cache_size = 1M max_binlog_size = 2M Ablaufdatum der Protokolle: 7 Schlüsselpuffergröße = 16 M Lesepuffergröße = 1 M read_rnd_buffer_size = 1M bulk_insert_buffer_size = 1M Kleinbuchstaben-Tabellennamen = 1 Namensauflösung überspringen Slave-Überspringfehler = 1032,1062 replizieren-ignorieren-db=mysql server-id = 1 #Die Master- und Slave-IDs können nicht identisch sein [mysqldump] schnell max_allowed_packet = 2M [mysqld_safe] log-error=/data/3306/mysql3306.err pid-Datei=/data/3306/mysqld.pid Datenbank-Startskript: [root@~]#vi /data/3306/mysql #!/bin/sh Port = 3306 Benutzer="root" pwd="123456" Pfad="/Anwendung/mysql/bin" sock="/data/${port}/mysql.sock" start_mysql() { wenn [ ! -e "$sock" ];dann printf "MySQL wird gestartet...\n" /bin/sh ${Pfad}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null & anders printf "MySQL läuft...\n" Ausfahrt fi } stop_mysql() { wenn [ ! -e "$sock" ];dann printf "MySQL wurde gestoppt...\n" Ausfahrt anders printf "MySQL wird gestoppt...\n" ${Path}/mysqladmin -u ${user} -p${pwd} -S /data/${port}/mysql.sock herunterfahren fi } restart_mysql() { printf "MySQL wird neu gestartet...\n" stop_mysql Schlaf 2 mysql starten } Fall $1 in Start) mysql starten ;; stoppen) stop_mysql ;; Neustart) mysql_neustarten ;; *) printf "Verwendung: /data/${port}/mysql {start|stop|restart}\n" esac Hinweis: Die Konfigurationsdatei der Master-Slave-Bibliothek ist dieselbe wie die Startdatei. Sie müssen nur den Port und die Server-ID ändern, um die Konfiguration abzuschließen. Autorisieren Sie das Verzeichnis und erhöhen Sie die Ausführungsberechtigung der Startdatei [root@~]#chown -R mysql.mysql /data [root@~]#find /data -name mysql -exex chmod +x {} \; Starten der Datenbank [root@~]#/data/3306/mysql start [root@~]#/data/3307/mysql start Ändern des Standard-Datenbankkennworts [root@~]#mysqladmin -uroot Passwort '123456' -S /data/3306/mysql.sock [root@~]#mysqladmin -uroot Passwort '123456' -S /data/3307/mysql.sock Testanmeldung, Sie können sich bei zwei Datenbanken anmelden, um den gesamten Installationsvorgang abzuschließen Konfigurieren der Hauptbibliothek1) Sichern Sie die Hauptdatenbank mkdir /sicherung Melden Sie sich bei der Hauptdatenbank an, um einen Benutzer zu erstellen und zu autorisieren [root@~]#mysql -uroot -p123456 -S /data/3306/mysql.sock mysql> gewähre Replikations-Slave auf *.* an rep@'192.168.1.%', identifiziert durch'123456'; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) Tabellensperrvorgang ausführen [root@~]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3306/mysql.sock -e "Tabelle mit Lesesperre leeren;" Sichern der Masterdatenbank [root@~]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3306/mysql.sock -e "master status anzeigen;" >/backup/mysql.log [root@~]#/application/mysql/bin/mysqldump -uroot -p123456 -S /data/3306/mysql.sock -A -B |gzip >/backup/mysql.sql.gz Den Status der gesperrten Tabelle aufheben [root@~]#/application/mysql/bin/mysql -uroot -p123456 -S /data/3306/mysql.sock -e "Tabellen entsperren;" Hinweis: Die oben genannten Vorgänge können auch durch Anmelden bei der Hauptdatenbank ausgeführt werden. Beachten Sie jedoch, dass Sie nach dem Ausführen des Vorgangs zum Sperren der Tabelle ein weiteres Fenster öffnen müssen, um die Daten zu sichern. Sie können nicht direkt beenden, um zu verhindern, dass Daten geschrieben werden und unvollständige Sicherungsdaten entstehen. Am besten verwenden Sie nicht-interaktive Operationen. Konfigurieren Sie die Slave-Bibliothek, um eine Master-Slave-Synchronisierung zu erreichenEntpacken Sie die Sicherungsdatei der Hauptbibliothek und stellen Sie die Datenbank wieder her [root@backup ]#gzip -d mysql.sql.gz [root@backup ]#/Anwendung/mysql/bin/mysql -uroot -p123456 -S /data/3307/mysql.sock < mysql.sql LOG anzeigen [root@backup ]#cat mysql.log +------------------+----------+--------------+------------------+ | Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 424 | | | +------------------+----------+--------------+------------------+ Melden Sie sich bei der Slave-Bibliothek an und führen Sie die folgenden Vorgänge aus mysql> ÄNDERN SIE MASTER IN -> MASTER_HOST='192.168.1.7', #Server-IP -> MASTER_PORT=3306, #Master-Datenbank-Port-> MASTER_USER='rep', #Synchronisierter Benutzer-> MASTER_PASSWORD='123456', #Synchronisiertes Benutzerpasswort-> MASTER_LOG_FILE='mysql-bin.000002', #Binlog-Datei-> MASTER_LOG_POS=424; #Position pointmysql> start slave; #Synchronisierung starten Warten Sie 60 Sekunden, um den Synchronisierungsstatus zu überprüfen [root@backup ]# mysql -S /data/3307/mysql.sock -e "show slave status\G"|egrep "Seconds_Behind_Master|_Running" Slave_IO_Running: Ja Slave_SQL_Running: Ja Sekunden_Hinter_Master: 0 Solange die obige Situation eintritt, bedeutet dies, dass die Master-Slave-Synchronisation erfolgreich ist Testen der Master-Slave-SynchronisationErstellen Sie eine Datenbank in der Hauptbibliothek [root@backup ~]# mysql -S /data/3306/mysql.sock -e "Datenbank Tongbuku erstellen" [root@backup ~]# mysql -S /data/3306/mysql.sock -e "Datenbanken anzeigen" +-----------------------------+ | Datenbank | +-----------------------------+ | Informationsschema | |mysql | | Leistungsschema | | Prüfung | |Tongbuku | +-----------------------------+ Überprüfen Sie den Synchronisierungsstatus der Slave-Bibliothek [root@backup ~]# mysql -S /data/3307/mysql.sock -e "Datenbanken anzeigen" +-----------------------------+ | Datenbank | +-----------------------------+ | Informationsschema | |mysql | | Leistungsschema | | Prüfung | |Tongbuku | +-----------------------------+ Dies zeigt an, dass der Master-Slave-Synchronisierungsstatus normal ist. Sie können auch eine Tabelle in der neuen Datentabelle der Masterdatenbank erstellen und neue Daten einfügen, um den Master-Slave-Synchronisierungsstatus zu testen. Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“. Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist. Das könnte Sie auch interessieren:
|
<<: Das Vue-Projekt realisiert das Zeichnen eines Wasserzeichens in einem bestimmten Bereich
>>: Lernen Sie den Funktionsmechanismus von jsBridge in einem Artikel kennen
Simulationstabellen und Datenskripte Kopieren Sie...
So verwenden Sie CSS, um die Bogenbewegung von El...
Hintergrund Die Menge neuer Daten in der Geschäft...
Inhaltsverzeichnis Was ist ein Slot Grundlegendes...
Einführung in JWT Was ist JWT Der vollständige Na...
1. Übersicht Zabbix ist eine sehr leistungsstarke...
Wenn Sie CSS verwenden, vergessen Sie nicht, DOCTY...
In diesem Artikel finden Sie das Installations-Tu...
Heute haben wir ein weiteres typisches Problem im...
Inhaltsverzeichnis 1. Verwendung in Komponenten 2...
Inhaltsverzeichnis 2. Feldverkettung 2. Geben Sie...
In diesem Artikel wird kurz die Installation von ...
Installieren Sie CentOS 7 nach der Installation v...
1. Funktionseinführung sed (Stream EDitor) ist ei...
Ursprünglicher abgeleiteter Befehl: bin/sqoop imp...