Maison > base de données > tutoriel mysql > MySQL - Méthode de configuration de la mise en veille chaude sur deux machines de base de données et exemples de code

MySQL - Méthode de configuration de la mise en veille chaude sur deux machines de base de données et exemples de code

黄舟
Libérer: 2017-03-11 14:01:40
original
989 Les gens l'ont consulté

La base de données MySQL ne dispose pas de mécanisme de sauvegarde incrémentielle. Lorsque la quantité de données est trop importante, la sauvegarde est un gros problème. Heureusement, la base de données MySQL fournit un mécanisme de sauvegarde maître-esclave, qui écrit simultanément toutes les données de la base de données maître dans la base de données de sauvegarde.

1. Description

1. La base de données MySQL ne dispose pas de mécanisme de sauvegarde incrémentielle Lorsque la quantité de données est trop importante, la sauvegarde est un gros problème. Heureusement, la base de données MySQL fournit un mécanisme de sauvegarde maître-esclave, qui écrit simultanément toutes les données de la base de données maître dans la base de données de sauvegarde. Implémentez une sauvegarde à chaud de la base de données MySQL.
2. Afin de mettre en œuvre une sauvegarde à chaud sur deux machines, vous devez d'abord comprendre les exigences de version du serveur de base de données maître-esclave. Pour obtenir une veille chaude, la version de MySQL doit être supérieure à 3.2. Un autre principe de base est que la version de la base de données esclave peut être supérieure à la version de la base de données du serveur maître, mais elle ne peut pas être inférieure à la version de la base de données du serveur maître.

2. Configuration

1. Configurez le serveur principal

Vérifiez la version

Vérifiez d'abord si la version de le serveur principal prend en charge la version de veille chaude. Vérifiez ensuite si la configuration du bloc de configuration mysqld dans my.cnf (de type Unix) ou my.ini (windows) a un log-bin (enregistrement du journal des modifications de la base de données). Parce que le mécanisme de réplication de mysql est un mécanisme de réplication basé sur les journaux). , le serveur principal doit prendre en charge les journaux de modifications. Définissez ensuite la base de données dans laquelle le journal doit être écrit ou la base de données dans laquelle le journal ne doit pas être écrit. De cette façon, seules les modifications apportées à la base de données qui vous intéressent sont écrites dans le journal de la base de données.

server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库
Copier après la connexion

S'il existe plusieurs bases de données, utilisez "," pour séparer
puis définissez le compte utilisateur pour synchroniser la base de données

mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
Copier après la connexion

Versions antérieures à 4.0. 2, car REPLICATION n'est pas pris en charge, utilisez l'instruction suivante pour implémenter cette fonction

mysql> GRANT FILE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
Copier après la connexion

Après avoir défini le fichier de configuration du serveur principal, redémarrez la base de données

b. Verrouiller les bases de données actuelles et sauvegarder les données actuelles

Verrouiller la base de données

mysql> FLUSH TABLES WITH READ LOCK;
Copier après la connexion
Copier après la connexion

Il existe deux façons de sauvegarder la base de données. La première consiste à entrer directement. le répertoire de données de mysql et le packager. Vous devez sauvegarder le dossier de base de données. La deuxième méthode consiste à utiliser mysqldump pour sauvegarder la base de données mais en ajoutant le paramètre "--master-data". méthode pour sauvegarder la base de données
c. Vérifiez l'état du serveur maître

mysql> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
Copier après la connexion

Enregistrez les valeurs des éléments Fichier et Position pour une utilisation ultérieure.
d. Activez ensuite le verrouillage de la base de données

mysql> UNLOCK TABLES;
Copier après la connexion

4. Configurez le serveur esclave

a. Définissez d'abord le fichier de configuration de la base de données
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 //报告错误的服务器
Copier après la connexion
b Importez la base de données sauvegardée du serveur de base de données maître dans le serveur esclave
c. . Démarrez la base de données esclave

puis démarrez le serveur de base de données esclave. Si le paramètre "--skip-slave-start" n'est pas ajouté au démarrage, il entrera dans mysql

mysql> slave stop; //停止slave的服务
Copier après la connexion
.
d. Définir divers paramètres du serveur principal
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; //日志文件的开始位置(前面要求记住的参数)
Copier après la connexion
Copier après la connexion
e. Démarrez le fil pour synchroniser la base de données
mysql> slave start;
Copier après la connexion
Copier après la connexion

Vérifiez la synchronisation de la base de données. Si la synchronisation réussit, félicitations !
Vérifiez l'état des serveurs maître et esclave

mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程
Copier après la connexion

3. Effacer le journal

Si le journal est trop volumineux, les étapes pour effacer le journal sont les suivantes :

1. Verrouiller la base de données maître

mysql> FLUSH TABLES WITH READ LOCK;
Copier après la connexion
Copier après la connexion

2. Arrêtez l'esclave de la base de données esclave

mysql> slave stop;
Copier après la connexion

3. base de données et la position du fichier journal

show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin.001 | 79 | | mysql |
+---------------+----------+--------------+------------------+
Copier après la connexion

4. Déverrouiller la base de données maître

mysql> unlock tables;
Copier après la connexion

5. Mettre à jour les informations de la base de données maître dans la base de données esclave

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; //日志文件的开始位置(前面要求记住的参数)
Copier après la connexion
Copier après la connexion

6. Démarrez l'esclave de la base de données des esclaves

mysql> slave start;
Copier après la connexion
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal