ウィンドウズマックソフトウェア設定セキュリティ生産性リナックスAndroidパフォーマンス設定Apple すべて

DebianでMySQLレプリケーションをセットアップする方法

編集済み 4 数日前 によって ExtremeHow 編集チーム

ディストリビューション型オペレーティングシステムマイエスキューエルレプリケーションデータベースサーバー設定SQLリナックスオープンソースシステム管理コマンドラインインターフェース

DebianでMySQLレプリケーションをセットアップする方法

翻訳が更新されました 4 数日前

MySQLレプリケーションは、1つのMySQLデータベースサーバー(マスター)から1つまたは複数のMySQLデータベースサーバー(スレーブ)にデータを自動的にコピーするプロセスです。このセットアップは、パフォーマンス、信頼性、負荷分散を向上させるために非常に役立ちます。このガイドでは、Debian LinuxサーバーでMySQLレプリケーションをセットアップするために必要な手順を説明します。サーバーの準備、レプリケーション設定の構成、およびレプリケーションが正しく機能していることを確認する方法を取り上げます。それでは始めましょう。

1. MySQLレプリケーションの理解

MySQLレプリケーションは、データベースサーバー間でデータを非同期でコピーすることができます。プライマリサーバーはマスターとして知られ、レプリケートされたデータを受け取るセカンダリサーバーはスレーブと呼ばれます。このアーキテクチャは、読み取り集約型のデータベース環境、データのバックアップとリカバリプロセス、データ分析、および地理的に分散されたデータセンターなど、多くのシナリオで有益です。

2. 準備

MySQLレプリケーションを設定する前に、次の前提条件を満たしていることを確認してください。

3. マスターサーバーの設定

まず、元のデータを保持し、スレーブサーバーに更新を送信するマスターサーバーを設定します。

ステップ1: MySQLマスターサーバーの構成

まず、マスターサーバー上のMySQL設定ファイルを開きます。このファイルは通常/etc/mysql/mysql.conf.d/mysqld.cnfにあります。nanoなどのテキストエディタを使用して編集します:

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

設定ファイルの [mysqld] セクションを探し、次の行を変更または追加します:

[mysqld] log-bin = mysql-bin server-id = 1

log-bin ディレクティブは、データベースへのすべての変更をログに記録するためにレプリケーションに必要なバイナリロギングを有効にします。server-id は、レプリケーションセットアップに参加する各サーバーのための一意の正の整数である必要があります。この場合、マスターのサーバーIDとして 1 を使用しています。

編集後、ファイルを保存して閉じます。nano を使用している場合は、CTRL + X を押してから Y を押し、ENTER を押して保存して終了します。

ステップ2: マスターサーバーでのMySQLの再起動

行った変更を適用するために、MySQLサービスを再起動します:

sudo systemctl restart mysql

ステップ3: レプリケーションユーザーの作成

次に、スレーブサーバーがレプリケーション接続に使用するユーザーアカウントを作成するために、マスターサーバー上でMySQLコマンドラインにログインします。次のコマンドを使用します:

mysql -u root -p

ログインしたら、次のSQLコマンドを実行してレプリケーションユーザーを作成し、特権を付与します。'replica_user''password' を選択したユーザー名とパスワードに置き換えます:

CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES;

これらのコマンドは、レプリケーション特権を持つ新しいMySQLユーザーを作成します。ホストに '%' を使用すると、スレーブは任意のIPアドレスから接続できます。

ステップ4: マスターのステータス取得

スレーブを設定する前に、現在のマスターログファイルとステータスを記録する必要があります。この情報を入手するために、次のコマンドを使用します:

SHOW MASTER STATUS;

FilePosition の値を記録しておきます。これらはスレーブサーバーを設定する際に必要となります。出力は次のように表示されるかもしれません:

+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 123 | | | +------------------+----------+--------------+------------------+

4. スレーブサーバーの設定

マスターサーバーを設定した後、次のステップはスレーブサーバーを設定することです。

ステップ1: MySQLスレーブサーバーの構成

マスターの設定と同様に、各スレーブサーバー上のMySQL設定を開きます。/etc/mysql/mysql.conf.d/mysqld.cnfを編集します:

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

[mysqld] セクションが次の設定を持っていることを確認します:

[mysqld] server-id = 2 relay-log = mysql-relay-bin

server-id はユニークで、レプリケーションセットアップ内の他のすべてのサーバーとは異なっている必要があります。ここでは、2 を使用しています。relay-log 構成はマスターサーバーからのレプリケーションストリームの処理を容易にします。

編集後、前と同様に設定ファイルを保存して閉じます。

ステップ2: スレーブサーバーでのMySQLの再起動

スレーブ上で変更を適用するために、MySQLサーバーを再起動します:

sudo systemctl restart mysql

ステップ3: スレーブをマスターに接続するように設定

スレーブサーバー上でMySQLコマンドラインクライアントにログインします:

mysql -u root -p

ログインしたら、CHANGE MASTER TO コマンドを使用してスレーブをマスターに接続します。'master_host''replica_user''password''mysql-bin.X' および position_number をそれぞれマスターサーバーのIPアドレス、レプリカユーザー名、パスワード、ログファイル、および前に取得した位置に置き換えます:

CHANGE MASTER TO MASTER_HOST = 'master_host', MASTER_USER = 'replica_user', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.X', MASTER_LOG_POS = position_number;

マスター情報を構成した後、次のコマンドでスレーブプロセスを開始します:

START SLAVE;

ステップ4: スレーブステータスの確認

スレーブサーバーが正しく設定されており、マスターに接続されているかどうかを確認するには、以下を実行します:

SHOW SLAVE STATUS\G;

出力のSlave_IO_RunningSlave_SQL_Running フィールドを確認します。両方がYesと表示されているはずです。これはスレーブが正しく機能していることを示します。Relay_Master_Log_FileExec_Master_Log_Pos の値も確認し、レプリケーションの進行を確認します。

5. レプリケーションセットアップのテスト

マスターとスレーブの両方のサーバーを設定した後、レプリケーションセットアップが期待通りに機能していることを確認するためにテストすることが重要です。

ステップ1: データ同期のテスト

レプリケーションをテストするには、マスターサーバーで簡単なデータエントリを挿入して、それがスレーブに表示されるかどうかを確認します。

マスターサーバー上でMySQLにログインし、簡単なデータベースとテーブルを作成します:

mysql -u root -p
CREATE DATABASE testdb; USE testdb; CREATE TABLE testtable (id INT PRIMARY KEY AUTO_INCREMENT, value VARCHAR(255)); INSERT INTO testtable (value) VALUES ('Replication Test');

ステップ2: スレーブサーバーでのデータ確認

スレーブサーバー上でMySQLコマンドラインにログインし、データがレプリケートされているかどうかを確認します:

mysql -u root -p
USE testdb; SELECT * FROM testtable;

マスターテーブルに挿入された行がスレーブテーブルに表示されているはずです。レプリケーションが正常に機能している場合、次のように表示されます:

+----+------------------+ | id | value | +----+------------------+ | 1 | Replication Test | +----+------------------+

6. 一般的なトラブルシューティングのヒント

設定中または設定後に問題が発生した場合には、以下の一般的なトラブルシューティング手順を検討してください:

結論

示されているように、DebianでのMySQLレプリケーションは、複数のシステム間でデータベースの変更を処理および再現するためのマスターとスレーブサーバーの両方を構成することを含みます。このセットアップは、信頼性とデータアクセス効率を大幅に向上させることができます。レプリケーションのセットアップには、データベースのアーキテクチャの理解といくらかの努力が必要ですが、これらの手順に従うことでプロセスは管理可能で成功するでしょう。

常にMySQLサーバーを定期的に監視し、複製されたデータの一貫性とパフォーマンスを定期的にチェックして、システムがスムーズに効率的に動作するようにすることをお勧めします。

記事の内容に誤りがある場合, あなたは


コメント