編集済み 4 数日前 によって ExtremeHow 編集チーム
ディストリビューション型オペレーティングシステムマイエスキューエルレプリケーションデータベースサーバー設定SQLリナックスオープンソースシステム管理コマンドラインインターフェース
翻訳が更新されました 4 数日前
MySQLレプリケーションは、1つのMySQLデータベースサーバー(マスター)から1つまたは複数のMySQLデータベースサーバー(スレーブ)にデータを自動的にコピーするプロセスです。このセットアップは、パフォーマンス、信頼性、負荷分散を向上させるために非常に役立ちます。このガイドでは、Debian LinuxサーバーでMySQLレプリケーションをセットアップするために必要な手順を説明します。サーバーの準備、レプリケーション設定の構成、およびレプリケーションが正しく機能していることを確認する方法を取り上げます。それでは始めましょう。
MySQLレプリケーションは、データベースサーバー間でデータを非同期でコピーすることができます。プライマリサーバーはマスターとして知られ、レプリケートされたデータを受け取るセカンダリサーバーはスレーブと呼ばれます。このアーキテクチャは、読み取り集約型のデータベース環境、データのバックアップとリカバリプロセス、データ分析、および地理的に分散されたデータセンターなど、多くのシナリオで有益です。
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
を押して保存して終了します。
行った変更を適用するために、MySQLサービスを再起動します:
sudo systemctl restart mysql
次に、スレーブサーバーがレプリケーション接続に使用するユーザーアカウントを作成するために、マスターサーバー上で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アドレスから接続できます。
スレーブを設定する前に、現在のマスターログファイルとステータスを記録する必要があります。この情報を入手するために、次のコマンドを使用します:
SHOW MASTER STATUS;
File
と Position
の値を記録しておきます。これらはスレーブサーバーを設定する際に必要となります。出力は次のように表示されるかもしれません:
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 123 | | | +------------------+----------+--------------+------------------+
マスターサーバーを設定した後、次のステップはスレーブサーバーを設定することです。
マスターの設定と同様に、各スレーブサーバー上の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
構成はマスターサーバーからのレプリケーションストリームの処理を容易にします。
編集後、前と同様に設定ファイルを保存して閉じます。
スレーブ上で変更を適用するために、MySQLサーバーを再起動します:
sudo systemctl restart mysql
スレーブサーバー上で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;
スレーブサーバーが正しく設定されており、マスターに接続されているかどうかを確認するには、以下を実行します:
SHOW SLAVE STATUS\G;
出力のSlave_IO_Running
や Slave_SQL_Running
フィールドを確認します。両方がYes
と表示されているはずです。これはスレーブが正しく機能していることを示します。Relay_Master_Log_File
と Exec_Master_Log_Pos
の値も確認し、レプリケーションの進行を確認します。
マスターとスレーブの両方のサーバーを設定した後、レプリケーションセットアップが期待通りに機能していることを確認するためにテストすることが重要です。
レプリケーションをテストするには、マスターサーバーで簡単なデータエントリを挿入して、それがスレーブに表示されるかどうかを確認します。
マスターサーバー上で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');
スレーブサーバー上でMySQLコマンドラインにログインし、データがレプリケートされているかどうかを確認します:
mysql -u root -p
USE testdb; SELECT * FROM testtable;
マスターテーブルに挿入された行がスレーブテーブルに表示されているはずです。レプリケーションが正常に機能している場合、次のように表示されます:
+----+------------------+ | id | value | +----+------------------+ | 1 | Replication Test | +----+------------------+
設定中または設定後に問題が発生した場合には、以下の一般的なトラブルシューティング手順を検討してください:
ping
や telnet
コマンドを試してみてください)。示されているように、DebianでのMySQLレプリケーションは、複数のシステム間でデータベースの変更を処理および再現するためのマスターとスレーブサーバーの両方を構成することを含みます。このセットアップは、信頼性とデータアクセス効率を大幅に向上させることができます。レプリケーションのセットアップには、データベースのアーキテクチャの理解といくらかの努力が必要ですが、これらの手順に従うことでプロセスは管理可能で成功するでしょう。
常にMySQLサーバーを定期的に監視し、複製されたデータの一貫性とパフォーマンスを定期的にチェックして、システムがスムーズに効率的に動作するようにすることをお勧めします。
記事の内容に誤りがある場合, あなたは