Heim >Datenbank >MySQL-Tutorial >MySQL – Datenbank-Dual-Machine-Hot-Standby-Konfigurationsmethode und Codebeispiele

MySQL – Datenbank-Dual-Machine-Hot-Standby-Konfigurationsmethode und Codebeispiele

黄舟
黄舟Original
2017-03-11 14:01:40962Durchsuche

MySQL-Datenbank verfügt nicht über einen inkrementellen Sicherungsmechanismus. Wenn die Datenmenge zu groß ist, ist die Sicherung ein großes Problem. Glücklicherweise bietet die MySQL-Datenbank einen Master-Slave-Sicherungsmechanismus, der tatsächlich alle Daten in der Master-Datenbank gleichzeitig in die Sicherungsdatenbank schreibt.

1. Beschreibung

1. Die MySQL-Datenbank verfügt nicht über einen inkrementellen Sicherungsmechanismus. Glücklicherweise bietet die MySQL-Datenbank einen Master-Slave-Sicherungsmechanismus, der tatsächlich alle Daten in der Master-Datenbank gleichzeitig in die Sicherungsdatenbank schreibt. Implementieren Sie ein Hot-Backup der MySQL-Datenbank.
2. Um ein Dual-Machine-Hot-Backup zu implementieren, müssen Sie zunächst die Versionsanforderungen des Master-Slave-Datenbankservers verstehen. Um Hot-Standby zu erreichen, muss die MySQL-Version höher als 3.2 sein. Ein weiteres Grundprinzip besteht darin, dass die Datenbankversion der Slave-Datenbank höher sein kann als die Datenbankversion des Master-Servers, jedoch nicht niedriger als die Datenbankversion des Master-Servers sein kann.

2. Konfiguration

1. Konfigurieren Sie den Hauptserver

Überprüfen Sie zunächst, ob die Version von Der Hauptserver unterstützt die Hot-Standby-Version. Überprüfen Sie dann, ob die Konfiguration des mysqld-Konfigurationsblocks in my.cnf (Unix-ähnlich) oder my.ini (Windows) über Log-Bin (Aufzeichnen des Datenbankänderungsprotokolls) verfügt, da der Replikationsmechanismus von MySQL ein protokollbasierter Replikationsmechanismus ist , Der Hauptserver muss Änderungsprotokolle unterstützen. Legen Sie dann die Datenbank fest, in die das Protokoll geschrieben werden soll, oder die Datenbank, in die das Protokoll nicht geschrieben werden soll. Auf diese Weise werden nur die Änderungen an der Datenbank, die Sie interessieren, in das Protokoll der Datenbank geschrieben.

Wenn mehrere Datenbanken vorhanden sind, verwenden Sie ",", um sie zu trennen
server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库
und legen Sie dann das Benutzerkonto für die Synchronisierung der Datenbank fest



Versionen vor 4.0. 2 Da REPLICATION nicht unterstützt wird, verwenden Sie die folgende Anweisung, um diese Funktion zu implementieren
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';


Nachdem Sie die Konfigurationsdatei des Hauptservers festgelegt haben, starten Sie die Datenbank neu
mysql> GRANT FILE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';


b. Sperren Sie die aktuellen Datenbanken und sichern Sie die aktuellen Daten.

Sperren Sie die Datenbank.


Es gibt zwei Möglichkeiten, die Datenbank zu sichern Das Datenverzeichnis von MySQL muss gesichert werden. Die zweite Methode besteht darin, die Datenbank mit dem Parameter „--master-data“ zu sichern Methode zum Sichern der Datenbank
mysql> FLUSH TABLES WITH READ LOCK;
c. Überprüfen Sie den Status des Masterservers



Notieren Sie die Werte der Datei- und Positionselemente für die spätere Verwendung.
mysql> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
d. Aktivieren Sie dann die Datenbanksperre



4. Konfigurieren Sie den Slave-Server
mysql> UNLOCK TABLES;

a. Legen Sie zunächst die Datenbankkonfigurationsdatei fest

b Importieren Sie die vom Master-Datenbankserver gesicherte Datenbank
server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。
master-host=db-master.mycompany.com //主服务器的IP地址或者域名
master-port=3306 //主数据库的端口号
master-user=pertinax //同步数据库的用户
master-password=freitag //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
report-host=db-slave.mycompany.com //报告错误的服务器
c . Starten Sie die Slave-Datenbank
und dann den Slave-Datenbankserver. Wenn beim Start der Parameter „--skip-slave-start“ nicht hinzugefügt wird, wird MySQL


eingegeben

d. Stellen Sie verschiedene Parameter des Hauptservers ein
mysql> slave stop; //停止slave的服务
e. Starten Sie den Thread, um die Datenbank zu synchronisieren
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_PORT=3306, //主服务器端口
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
Überprüfen Sie die Synchronisierung der Datenbank. Wenn die Synchronisierung erfolgreich sein kann, herzlichen Glückwunsch!
mysql> slave start;
Überprüfen Sie den Status der Master- und Slave-Server


3. Löschen Sie das Protokoll
mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程

Wenn das Protokoll zu groß ist, sind die Schritte zum Löschen des Protokolls wie folgt:


1. Master-Datenbank sperren

2. Stoppen Sie den Slave der Slave-Datenbank
mysql> FLUSH TABLES WITH READ LOCK;

3. Überprüfen Sie den Protokolldateinamen des Masters Datenbank und die Position der Protokolldatei
mysql> slave stop;

4. Entsperren Sie die Master-Datenbank
show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin.001 | 79 | | mysql |
+---------------+----------+--------------+------------------+

5. Aktualisieren Sie die Master-Datenbankinformationen in der Slave-Datenbank
mysql> UNLOCK TABLES;

6. Starten Sie den Slave der Slave-Datenbank
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_PORT=3306, //主服务器端口
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)

Das obige ist der detaillierte Inhalt vonMySQL – Datenbank-Dual-Machine-Hot-Standby-Konfigurationsmethode und Codebeispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn