ホームページ  >  記事  >  運用・保守  >  Linux で高可用性データベースのマスター/スレーブ レプリケーション監視を構成する方法

Linux で高可用性データベースのマスター/スレーブ レプリケーション監視を構成する方法

王林
王林オリジナル
2023-07-05 09:15:07725ブラウズ

Linux で高可用性データベースのマスター/スレーブ レプリケーション監視を構成する方法

はじめに:
最新のテクノロジー環境では、データベースが重要なコンポーネントであり、多くのアプリケーションがデータベースに依存しています。可用性とデータ保護を考慮すると、データベースの高可用性とマスター/スレーブ レプリケーションは非常に重要な機能です。この記事では、Linux 上で高可用性データベースのマスター/スレーブ レプリケーション監視を構成する方法を紹介し、サンプル コードを使用してその手順を示します。

マスター/スレーブ レプリケーションの仕組み:
マスター/スレーブ レプリケーションは一般的なデータベース レプリケーション方法であり、1 つのデータベース サーバーがマスター サーバー (マスター) として機能し、他のサーバーがスレーブ サーバー (スレーブ) として機能します。 )。マスターサーバーが受信した書き込み操作はスレーブサーバーにコピーされます。このアーキテクチャには、データの冗長性、読み取りと書き込みの分離、障害回復という利点があります。

メイン サーバーの構成:
まず、データベース サーバーをインストールする必要があります。この記事では MySQL を例として取り上げます。

  1. MySQL サーバーのインストール:

    sudo apt update
    sudo apt install mysql-server
  2. メイン サーバーの構成:
    MySQL 構成ファイルの編集:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

    ファイル内で次の行を見つけて変更します:

    bind-address            = 0.0.0.0
    server-id               = 1
    log_bin                 = /var/log/mysql/mysql-bin.log
  3. MySQL サービスを再起動します:

    sudo systemctl restart mysql

スレーブ サーバーを構成します:

  1. MySQL サーバーのインストール:

    sudo apt update
    sudo apt install mysql-server
  2. スレーブ サーバーの構成:
    MySQL 構成ファイルの編集:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

    Findファイル内の次の行を追加して、変更を続行します:

    bind-address            = 0.0.0.0
    server-id               = 2
    log_bin                 = /var/log/mysql/mysql-bin.log
    relay_log               = /var/log/mysql/mysql-relay-bin.log
  3. MySQL サービスを再起動します:

    sudo systemctl restart mysql

マスターとスレーブの関係を設定します:

  1. 「マスター サーバーでレプリケーション用のユーザーを作成する」で:

    mysql -u root -p
    GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    EXIT;
  2. スレーブ サーバーでマスター サーバー情報を構成します:

    mysql -u root -p
    CHANGE MASTER TO MASTER_HOST='主服务器的IP地址', MASTER_USER='replication_user', MASTER_PASSWORD='password';
    START SLAVE;
    EXIT;
  3. マスター/スレーブ レプリケーションが適切に動作していることを確認します。 :
    メイン サーバー上にデータベースとテーブルを作成し、データを挿入します。次に、スレーブサーバー上で該当データが見えるか確認します。

構成監視:
データベースのマスター/スレーブ レプリケーションの高可用性を確保するには、そのステータスを監視し、障害を適時に検出して処理する必要があります。以下は、Python で書かれた簡単な監視スクリプトです。

  1. 必要な Python パッケージをインストールします:

    sudo apt update
    sudo apt install python3-pip
    pip3 install mysql-connector-python
    pip3 install smtplib
  2. monitor.py ファイルを作成し、次のコードをファイルにコピーします:

    import smtplib
    import mysql.connector
    from email.mime.text import MIMEText
    
    def send_email(message):
     sender = "your_email@gmail.com"
     receiver = "recipient_email@gmail.com"
     subject = "Database Replication Alert"
     msg = MIMEText(message)
     msg['Subject'] = subject
     msg['From'] = sender
     msg['To'] = receiver
    
     try:
         with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
             smtp.login(sender, "your_password")
             smtp.sendmail(sender, receiver, msg.as_string())
             print("Email sent successfully!")
     except Exception as e:
         print("Email failed to send: " + str(e))
    
    def monitor_replication():
     try:
         connection = mysql.connector.connect(host="localhost", user="replication_user", password="password", database="test")
         cursor = connection.cursor()
         cursor.execute("SELECT COUNT(*) FROM my_table")
         result = cursor.fetchone()
         cursor.close()
         connection.close()
         print("Replication is working fine, number of records: " + str(result[0]))
     except mysql.connector.Error as error:
         message = "Replication failed: " + str(error)
         print(message)
         send_email(message)
    
    if __name__ == "__main__":
     monitor_replication()
  3. monitor.py の構成情報 (送信者と受信者の電子メール アドレス、送信者の電子メール パスワードなど) を変更します。
  4. monitor.py スクリプトを実行し、スケジュールされたタスクに追加して、データベースのマスター/スレーブ レプリケーションのステータスを定期的に監視します。

結論:
上記の手順により、Linux 上で可用性の高いデータベースのマスター/スレーブ レプリケーション監視を構成できます。データベースのステータスを継続的に監視することは、障害の回復と可用性にとって重要です。サンプル コードを使用すると、データベースのマスター/スレーブ レプリケーションの問題を適時に検出して処理し、ビジネスの円滑な運営を確保できます。

以上がLinux で高可用性データベースのマスター/スレーブ レプリケーション監視を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。