Maison > base de données > tutoriel mysql > le corps du texte

Analyse détaillée de la copie dans Mysql

小云云
Libérer: 2017-12-08 11:59:57
original
1284 Les gens l'ont consulté

Cet article présente principalement l'analyse détaillée de la réplication dans Mysql. Il présente les concepts de base, les utilisations, les méthodes d'implémentation et les modes centralisés, puis partage le code d'implémentation spécifique, qui a une certaine valeur de référence. Les amis qui en ont besoin peuvent en savoir plus. .

1.le concept de réplication mysql

fait référence à la transmission des opérations DDL et DML de la base de données principale au serveur de réplication via le journal binaire, puis à la transmission sur le serveur de réplication. Ces fichiers journaux sont réexécutés, gardant les données sur les serveurs répliqués et maîtres synchronisées. Pendant le processus de réplication, un serveur agit en tant que maître et un ou plusieurs autres serveurs en tant qu'esclaves. Le maître réécrit les mises à jour des fichiers journaux binaires et conserve un index des fichiers pour suivre la rotation des journaux. Ces journaux enregistrent les mises à jour envoyées aux serveurs esclaves. Lorsqu'un esclave se connecte au maître, il informe le maître de l'emplacement de la dernière mise à jour réussie que l'esclave a lue dans le journal. L'esclave accepte toutes les mises à jour effectuées depuis, puis bloque et attend que le maître soit informé des nouvelles mises à jour.

2. Objectif de la réplication

Synchronisez les données via la réplication maître-esclave, puis séparez la lecture et l'écriture (mysql-proxy) pour améliorer la capacité de charge simultanée de la base de données, ou pour être utilisée comme machine principale et de sauvegarde pour garantir que l'application peut être basculée vers la machine de sauvegarde pour continuer à s'exécuter dans un court laps de temps après que l'hôte cesse de répondre.

Avantages :

(1) Le système de cluster de bases de données comporte plusieurs nœuds de base de données. En cas de panne d'un seul nœud, d'autres nœuds normaux. Les services peuvent continuer à être fournis.
(2) Si un problème survient sur le serveur maître, vous pouvez basculer vers le serveur esclave
(3) Les opérations de requête peuvent être effectuées sur le serveur esclave via la réplication, ce qui réduit la pression d'accès sur le serveur maître et réalise la distribution des données et l'équilibrage de charge
(4) La sauvegarde peut être effectuée sur le serveur esclave pour éviter d'affecter le service du serveur maître lors de la sauvegarde.

3. Mise en œuvre de la réplication (3 méthodes)

(1) DRBD est une solution de réplication de stockage basée sur un logiciel et sans partage. pour mettre en miroir le contenu du périphérique de bloc entre les serveurs.
(2) Cluster Mysql (également connu sous le nom de cluster mysql). La réplication MySQL (réplication) elle-même est une structure relativement simple, c'est-à-dire qu'un serveur esclave (esclave) lit le journal binaire à partir d'un serveur maître (maître), puis l'analyse et l'applique à lui-même.
(3) Un environnement de réplication simple ne nécessite que deux hôtes exécutant MySQL, et vous pouvez même démarrer deux instances mysqld sur un hôte de serveur physique. L’un sert de maître et l’autre d’esclave pour terminer la configuration de l’environnement de réplication. Cependant, dans les environnements d'application réels, vous pouvez utiliser la fonction de réplication MySQL pour créer d'autres architectures de réplication plus propices à l'expansion en fonction des besoins réels de l'entreprise, telles que l'architecture maître-esclave la plus couramment utilisée.
L'architecture maître-esclave fait référence à l'utilisation d'un serveur MySQL comme maître, d'un ou plusieurs serveurs MySQL comme esclave et à la copie des données du maître sur l'esclave. Dans les applications pratiques, le mode d'architecture maître-esclave est le plus couramment utilisé pour la réplication MySQL. Généralement, dans le cadre de cette architecture, les opérations d'écriture du système sont effectuées dans le maître, tandis que les opérations de lecture sont dispersées sur divers esclaves. Par conséquent, cette architecture est particulièrement adaptée aux problèmes élevés de lecture et d'écriture de l'Internet actuel.

L'opération de réplication de la base de données MySQL est grossièrement divisée en les étapes suivantes :

(1) Le maître active les journaux binaires. L'opération d'activation des journaux binaires est décrite en détail dans Log Management.
(2) Le processus d'E/S sur l'esclave se connecte au maître et demande le contenu du journal à partir de la position spécifiée du fichier journal spécifié (ou depuis le début du journal).
(3) Après avoir reçu la demande de processus d'E/S de l'esclave, le maître lit les informations du journal après la position spécifiée du journal spécifié en fonction des informations de la demande via le processus d'E/S responsable de la réplication, et les renvoie aux E/S de l'esclave. Outre les informations contenues dans le journal, les informations renvoyées incluent également le nom du fichier bin-log et l'emplacement du bin-log dans lequel les informations renvoyées ont été envoyées au maître.
(4) Après avoir reçu les informations, le processus d'E/S de l'esclave ajoutera le contenu du journal reçu à la fin du fichier journal-relais du côté esclave, et ajoutera le nom du fichier et le nom du fichier bin-log. du côté maître lu L'emplacement est enregistré dans le fichier master-info.
(5) Une fois que le processus SQL de Slave a détecté le nouveau contenu dans le journal-relais, il analysera immédiatement le contenu du journal-relais et l'exécutera lui-même.

4. Mode centralisé de réplication mysql

Dans les versions après mysql5.1, l'amélioration de la réplication est l'introduction d'une nouvelle technologie de réplication - Réplication basée sur les lignes. Cette technologie se concentre sur les enregistrements qui ont changé dans la table, plutôt que de copier le mode binlog précédent. À partir de mysql5.1.12, les trois modes suivants peuvent être utilisés pour y parvenir.

(1) Réplication basée sur les instructions (sbr)
(2) Réplication basée sur les lignes (rbr)
(3) Réplication en mode mixte (mbr)

En conséquence, il existe trois formats de binlog : instruction, ligne et mixte. En mode Mbr, le mode sbr est le mode par défaut. Le format du binlog peut être modifié dynamiquement au moment de l'exécution. La méthode de définition du mode de réplication maître-esclave est très simple. Ajoutez simplement un autre paramètre basé sur la configuration de réplication précédemment définie, comme suit :


binlog_format=”statement”
#binlog_format=”row”
#binlog_format=”mixed”
Copier après la connexion


Bien sûr, vous pouvez également modifier dynamiquement le format du binlog au moment de l'exécution


Mysql> set session binlog_format=”statement”
Copier après la connexion


5 .Contrôler le fonctionnement du serveur maître

Maître : 192.168.11.139
Esclave : 192.168.11.130

(1) Serveur maître :


mysql> show variables like '%datadir%';
+---------------+--------------------------+
| Variable_name | Value          |
+---------------+--------------------------+
| datadir    | /application/mysql/data/ |
+---------------+--------------------------+
Copier après la connexion


Activer la journalisation binaire sur le serveur maître :


mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin    | OFF  |
+---------------+-------+
row in set (0.00 sec)
Copier après la connexion


OFF signifie que le journal binaire est désactivé

3 étapes pour ouvrir le journal :

① Ouvrez le répertoire d'installation mysql/my.cnf
②Trouvez l'étiquette [mysqld] Dans la ligne sous cette étiquette, ajoutez l'instruction suivante :

log_bin[filename]

Dans cette instruction, log-bin indique que le fichier binaire doit être ouvert ; le nom de fichier est le nom du journal binaire. S'il n'est pas spécifié, la valeur par défaut est le nom d'hôte suivi de -bin comme nom de fichier, qui est stocké par défaut dans le répertoire datadir. Spécifiez binaire_log ici Si le fichier binaire est généré uniquement pour la base de données spécifiée, vous devez ajouter l'instruction suivante


Binlog-do-db=db_name(数据库名称)
Copier après la connexion


. S'il n'est pas généré pour la base de données spécifiée. Pour les journaux de fichiers binaires, vous devez ajouter les instructions suivantes


Binlog-ignore-db-db_name(数据库名称)
Copier après la connexion


③ Redémarrer le service mysql. Vous pouvez voir le fichier "binary_log.numeric number" dans le répertoire/dossier d'installation de mysql, tel que binaire_log.00001. Chaque fois que le service mysql sera redémarré à l'avenir, le fichier binaire sera régénéré et le numéro numérique dans le fichier. le nom du fichier augmentera.

Après un démarrage réussi, modifiez le fichier de configuration mysql my.cnf et définissez l'ID du serveur. Le code est le suivant


Server-id=1
Binlog-do-db=xscj
Binlog-ignore-db=mysql
Server-id=1:每一个数据库服务器都要指定一个唯一的server-id,通常主服务器为1,master和slave的server-id不能相同。
Binlog-do-db:表示需要复制的数据库,这里以xscj为例
Binlog-ignore-db:表示不需要复制的数据库
Copier après la connexion
<🎜. >


Créer l'utilisateur requis pour la réplication sur le maître


mysql> grant replication slave on *.* to rep_user@&#39;%&#39;;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec

mysql> show master status\G
*************************** 1. row ***************************
      File: binary_log.000001
    Position: 303
  Binlog_Do_DB: 
Binlog_Ignore_DB: 
row in set (0.00 sec)
Copier après la connexion


Sauvegarder les données de l'hôte maître, enregistrez-le dans le fichier /data/binary_dump.txt, puis importez-le dans la machine esclave. Les instructions d'exécution spécifiques sont les suivantes


<🎜. >
[root@localhost bin]# mysqldump -h localhost>/data/binary_dump.txt
Copier après la connexion


(2) Contrôler les opérations du serveur esclave


Modifier le fichier de configuration de la base de données du serveur esclave, la configuration est la suivante :


Server-id=2 ##设置从服务器id
Master-host=192.168.11.129
Master-user=rep_user
Master-password=  ##设置连接主服务器的密码
Replicate-do-db ##设置你要同步的数据库,可以设置多个
Master-port=<port> ##配置端口号

重启slave,在slave主机的mysql重新执行如下命令,关闭slave服务
Mysql>stop slave;
设置slave实现复制相关的信息,执行如下命令
Mysql>change master to
>master_host=&#39;&#39;,
>master_user=&#39;&#39;,
>master_password=&#39;&#39;,
>master_log_file=&#39;binary_log.000007&#39;,
>master_log_pos=120;

输入:show slave status\G用于提供有关从服务器线程的关键参数信息。
Copier après la connexion


Les commandes courantes sont les suivantes


Options

选项

功能

Slave start

启动复制线程

Slave stop

停止复制线程

Reset slave

重置复制线程

Show slave status

显示复制线程状态

Show slave statusg

显示复制线程状态(分行显示)

Show master statusG

显示主数据库的状态(分行显示)

Show master logs

显示主数据库日志

Change master to

动态改变到主数据库的配置

Show processlistv

显示有哪些线程正在运行

Fonction


Démarrage de l'esclave

Démarrer le fil de réplication

Arrêt de l'esclave

Arrêter le thread de réplication

Réinitialiser l'esclave

Réinitialiser le thread de réplication

Afficher l'état de l'esclave

Afficher l'état du thread de réplication Afficher l'état de l'esclave td> Afficher l'état du thread de réplication (affichage sur des lignes séparées) Afficher l'état principalG Afficher l'état de la base de données principale (affiché sur des lignes séparées) Afficher journaux principaux Afficher le journal de la base de données principale Changer le maître enModifications dynamiques de la configuration de la base de données maître Afficher processlistv Afficher quels threads sont en cours d'exécution Est-ce que tout le monde l'a appris ? Dépêchez-vous et essayez-le. Recommandations associées : Résumé des méthodes de copie des structures de tables dans mysql_MySQLCopie de tables de données dans MySQL Tutoriel sur la façon pour transférer des données vers une nouvelle table_MySQLAperçu, installation, pannes, techniques et outils de réplication MySQL (Partagé par Huo Ding)

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!