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

Quelles sont les techniques de reprise après sinistre et de basculement de base de données pour apprendre MySQL ?

WBOY
Libérer: 2023-07-31 19:55:54
original
1040 Les gens l'ont consulté

Quelles sont les techniques de reprise après sinistre et de basculement de base de données pour apprendre MySQL ?

1. Introduction générale
À l'ère d'Internet d'aujourd'hui, la base de données est le cœur de l'application et stocke une grande quantité de données. Cependant, les serveurs de bases de données rencontrent également diverses pannes, telles que des pannes matérielles, des interruptions de réseau, des pannes de courant, etc. Afin de garantir une haute disponibilité continue et la sécurité des données, la reprise après sinistre et le basculement des bases de données sont devenus des tâches importantes dans l’exploitation et la maintenance des bases de données. En tant que l'une des bases de données relationnelles les plus populaires, MySQL dispose d'une variété de technologies de reprise après sinistre et de basculement. Voici quelques techniques couramment utilisées.

2. Compétences en matière de reprise après sinistre MySQL

  1. Réplication maître-esclave
    La réplication maître-esclave est l'une des technologies les plus couramment utilisées dans la reprise après sinistre MySQL. Presque toutes les versions de MySQL prennent en charge la réplication maître-esclave. Grâce à la réplication maître-esclave, les données de la base de données principale peuvent être copiées vers une ou plusieurs bases de données esclaves pour garantir la sauvegarde et la disponibilité des données. Lorsque la base de données principale tombe en panne, la base de données secondaire peut être facilement mise à niveau vers la base de données principale pour obtenir un basculement rapide.

Les étapes de configuration pour la réplication maître-esclave sont les suivantes :
1) Activez la fonction de journal binaire (binlog) sur la base de données maître et configurez un server_id unique.
2) Configurez les paramètres de réplication sur la base de données esclave, tels que la spécification de master_host, master_user, master_password, etc.
3) Démarrez la base de données esclave, connectez-la à la base de données maître et copiez les données.

Exemple de code :

Sur le maître :

# 在配置文件中开启binlog
[mysqld]
server_id=1
log_bin=mysql-bin
Copier après la connexion

Sur l'esclave :

# 在配置文件中配置复制参数
[mysqld]
server_id=2
log_bin=mysql-bin

[mysqldump]
master_host=master_ip
master_user=replication_user
master_password=replication_password
Copier après la connexion
  1. Chaîne de réplication
    La chaîne de réplication fait référence à la connexion de plusieurs bases de données de manière maître-esclave pour former une structure de réplication en chaîne. Cette méthode peut réaliser une sauvegarde distribuée et un basculement des données.

Exemple de code :

Sur Master1 :

[mysqld]
server_id=1
log_bin=mysql-bin

# 配置与下一个主库的连接
log_slave_updates=1
relay_log=mysql-relay-bin
replicate_do_db=db1
replicate-ignore-db=mysql
replicate-ignore-db=source_db
replicate-ignore-db=destination_db
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema
replicate-ignore-db=innodb
replicate-ignore-db=slave_lab
replicate-wild_ignore-table=server1_db1.binlogtest*
replicate-wild_ignore-table=*.hg.*,*.git.*
replicate-wild-ignore-table=db2_v2p2_gfhb.*.*
replicate-wild=wild123.blog_table_name_to_replicate
[mysqldump]
master_host=master2_ip
master_user=master2_user
master_password=master2_password
Copier après la connexion

Sur Master2 :

[mysqld]
server_id=2
log_bin=mysql-bin

# 配置与下一个主库的连接
log_slave_updates=1
relay_log=mysql-relay-bin
replicate_do_db=db2
replicate-ignore-db=mysql
replicate-ignore-db=source_db
replicate-ignore-db=destination_db
replicate-ignore-db=performance_schema
replicate-ignore-db=information_schema
replicate-ignore-db=innodb
replicate-ignore-db=slave_lab
replicate-wild_ignore-table=server2_db1.binlogtest*
replicate-wild_ignore-table=*.hg.*,*.git.*
replicate-wild-ignore-table=db3_v2p2_gfhb.*.*
replicate-wild=wild321.blog_table_name_to_replicate
[mysqldump]
master_host=master3_ip
master_user=master3_user
master_password=master3_password
Copier après la connexion

Les deux premières étapes sont configurées sur la première bibliothèque principale et la configuration sur la deuxième bibliothèque principale est similaire. Chaque base de données sert de base de données esclave de la base de données maître suivante, formant ainsi une chaîne de réplication.

3. Compétences de basculement MySQL

  1. Détection et commutation automatique des défauts
    De manière générale, le basculement MySQL nécessite une intervention manuelle pour la commutation, mais cette méthode entraînera un certain temps d'arrêt. Afin d'obtenir une détection et une commutation automatiques des pannes, des mécanismes de détection de battement de cœur et de basculement (failover) peuvent être utilisés.

Détection des battements de cœur : vérifiez si la base de données principale est active en envoyant régulièrement des paquets de battements de cœur à la base de données principale.
Mécanisme de basculement : lorsque la détection du rythme cardiaque détecte que la base de données principale n'est pas disponible, la base de données esclave est automatiquement promue vers la base de données principale et les configurations pertinentes sont mises à jour.

Exemple de code :

#!/usr/bin/env python
import os
import time

VIP = '192.168.1.100'
Script = '/opt/mysql_failover.sh'

def detect_db():
    while True:
        ret = os.system('ping -c 1 '+VIP)
        if ret:
            print('MySQL is down')
            os.system(Script + ' down')
        else:
            print('MySQL is up')
            os.system(Script + ' up')
        time.sleep(5)

detect_db()
Copier après la connexion
  1. Configuration d'un cluster haute disponibilité
    En plus de la détection et de la commutation automatiques des pannes, les clusters MySQL haute disponibilité peuvent également être configurés pour implémenter le basculement. Les solutions de cluster à haute disponibilité couramment utilisées incluent Pacemaker et Keepalived.

Pacemaker est une solution open source mature qui gère les ressources et la gestion dynamique dans un cluster via un gestionnaire de ressources et un moteur de décision.
Keepalived est une solution légère à haute disponibilité qui s'appuie sur VRRP (Virtual Router Redundancy Protocol) et LVS (Linux Virtual Server) pour le basculement.

Les deux solutions ci-dessus peuvent fournir des fonctions de haute disponibilité et de basculement automatique. Pour des détails de configuration spécifiques, veuillez vous référer à la documentation officielle.

Pour résumer, apprenez les compétences de reprise après sinistre et de basculement de la base de données MySQL, vous pouvez utiliser la réplication maître-esclave pour réaliser la sauvegarde et le basculement des données, la chaîne de réplication pour réaliser une sauvegarde distribuée, la détection automatique des pannes et la commutation pour obtenir un basculement automatique et configurer des niveaux élevés. clusters de disponibilité Assurer une haute disponibilité. L'application flexible de ces techniques peut non seulement garantir la disponibilité continue de la base de données, mais également améliorer la stabilité et la fiabilité du système.

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!