Linux で高可用性データベースのマスター/スレーブ レプリケーション監視を構成する方法
はじめに:
最新のテクノロジー環境では、データベースが重要なコンポーネントであり、多くのアプリケーションがデータベースに依存しています。可用性とデータ保護を考慮すると、データベースの高可用性とマスター/スレーブ レプリケーションは非常に重要な機能です。この記事では、Linux 上で高可用性データベースのマスター/スレーブ レプリケーション監視を構成する方法を紹介し、サンプル コードを使用してその手順を示します。
マスター/スレーブ レプリケーションの仕組み:
マスター/スレーブ レプリケーションは一般的なデータベース レプリケーション方法であり、1 つのデータベース サーバーがマスター サーバー (マスター) として機能し、他のサーバーがスレーブ サーバー (スレーブ) として機能します。 )。マスターサーバーが受信した書き込み操作はスレーブサーバーにコピーされます。このアーキテクチャには、データの冗長性、読み取りと書き込みの分離、障害回復という利点があります。
メイン サーバーの構成:
まず、データベース サーバーをインストールする必要があります。この記事では MySQL を例として取り上げます。
MySQL サーバーのインストール:
sudo apt update sudo apt install mysql-server
メイン サーバーの構成:
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
MySQL サービスを再起動します:
sudo systemctl restart mysql
スレーブ サーバーを構成します:
MySQL サーバーのインストール:
sudo apt update sudo apt install mysql-server
スレーブ サーバーの構成:
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
MySQL サービスを再起動します:
sudo systemctl restart mysql
マスターとスレーブの関係を設定します:
「マスター サーバーでレプリケーション用のユーザーを作成する」で:
mysql -u root -p GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; EXIT;
スレーブ サーバーでマスター サーバー情報を構成します:
mysql -u root -p CHANGE MASTER TO MASTER_HOST='主服务器的IP地址', MASTER_USER='replication_user', MASTER_PASSWORD='password'; START SLAVE; EXIT;
構成監視:
データベースのマスター/スレーブ レプリケーションの高可用性を確保するには、そのステータスを監視し、障害を適時に検出して処理する必要があります。以下は、Python で書かれた簡単な監視スクリプトです。
必要な Python パッケージをインストールします:
sudo apt update sudo apt install python3-pip pip3 install mysql-connector-python pip3 install smtplib
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()
結論:
上記の手順により、Linux 上で可用性の高いデータベースのマスター/スレーブ レプリケーション監視を構成できます。データベースのステータスを継続的に監視することは、障害の回復と可用性にとって重要です。サンプル コードを使用すると、データベースのマスター/スレーブ レプリケーションの問題を適時に検出して処理し、ビジネスの円滑な運営を確保できます。
以上がLinux で高可用性データベースのマスター/スレーブ レプリケーション監視を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。