ブログに戻る

Ubuntu上のMySQLでレプリケーションを設定する

Ubuntu上のMySQLでレプリケーションを設定する

MySQLレプリケーションは、ユーザーが1つ以上のMySQLデータベースの複数のコピーを管理できるようにする興味深い機能です。データは自動的にソースからレプリカデータベースにコピーされます。メインのデータベースに影響を与えることなくデータを操作したり、データのバックアップ、データベースアクセスのスケーリングなど、多くの状況で役立ちます。

このガイドでは、あるサーバー上のMySQLインスタンスをソースデータベースとしてセットアップし、別のサーバー上のMySQLインスタンスをそのレプリカとして機能するように構成する手順について説明します。.

前提条件

このガイドでは、MySQLレプリケーションの非常にシンプルな例を示します。これには1つのソースと1つのレプリカデータベースが含まれます。ソースデータベースがデータベースのプライマリコピーであり、レプリカデータベースはソースデータベースのレプリカになります。デモンストレーションでは、2台のサーバーが次のIPアドレスで構成されています:

  • ソースサーバー: 31.171.240.179
  • レプリカサーバー: 31.171.250.139

各サーバーは最新のUbuntu 20.04サーバー構成でセットアップされています。まず、Ubuntuサーバーのセットアップ方法を示すチュートリアルの手順に従ってください。なお、レプリカデータベースの数は増やすことも可能です。このガイドでは、すでにMySQLがインストールおよび構成されていることを前提としています。MySQLのインストールについてサポートが必要ですか?このガイドでは、MySQLのインストールと基本的な使用方法の手順を詳しく説明しています。.

簡単に言うと、必要なパッケージは次のとおりです:

両方のシステムのファイアウォールは、ポート3306で両方のシステムからのトラフィックを許可するように構成する必要があります。これはMySQLのデフォルトポートです。デモンストレーションを交えたUFWの基本に関する詳細については、ブログ記事をご覧ください。

ソースデータベースの構成

  • MySQL構成の微調整

MySQLは、my.cnfをプライマリ構成ファイルとして使用します。サーバーをmy.cnfとして指定するために、ソースを更新します。まず、テキストエディタで構成ファイルを開きます:

次に、mysqldセクションの下に次の行を追加します:

Replication in MySQL 4

これらの行はどういう意味ですか?

  • bind-address: これは、サービスとIPアドレスの間の関連付けを定義するエントリです。デフォルトでは、値は127.0.0.1 (localhost) になっている場合があります。新しい値はサーバーのIPアドレスになります。
  • server-id: MySQLレプリケーションでは、各サーバーに一意のサーバーIDが必要です。任意の数値を指定できます。わかりやすくするために、ここでは1.
  • log_bin: レプリケーションの実際の詳細を保存します。レプリカデータベースは、ログに登録されたすべてをコピーします。
  • binlog_do_db: このエントリは、レプリカサーバーでのレプリケーション対象となるデータベースを指定します。複数のデータベースを指定することもできます。ここでは、サンプルデータベースはnewdatabase.

変更を加えた後、構成ファイルを保存します。MySQLは、変更をmy.cnf:

  • レプリカユーザーへの権限の付与

次のステップは、レプリカユーザーを作成し、適切な権限を付与することです。これはMySQLシェルから行う必要があります。まず、MySQLシェルを起動します:

次に、レプリカデータベース用の専用ユーザーを作成します。ユーザー名とパスワードは適宜変更してください:

次に、ユーザーに適切な権限を付与します:

You can learn more about the MySQLのユーザーと権限に関する詳細については、ブログ記事をご覧ください。次に、変更を有効にするためにグラントテーブルをリロードします:

FLUSH PRIVILEGES

  • データベースの微調整

レプリカ上にソースデータベースのコピーが必要です。手動で構造を構築することも可能ですが、ほとんどの場合、それは非常に不便です。そのため、データベースを直接エクスポートするのが最も最適な解決策です。この例では、ソースデータベースは newdatabase です。現在のデータベースを変更します:

次のコマンドはデータベースをロックし、新しい変更を防ぎます:

次に、データベースのステータスを確認します:

Replication in MySQL 3

この位置から、レプリカデータベースはソースからのレプリケーションを開始します。これらの数値は後で役立つため、記録しておいてください。同じウィンドウから変更が行われた場合、MySQLは自動的にデータベースのロックを解除します。そのため、以下の手順は別のターミナルのタブまたはウィンドウで実行することをお勧めします。データベースはまだロックされています。ポータブルなSQLファイルにエクスポートします:

タスクが完了しました。次に、データベースのロックを解除します:

最後に、シェルを終了します:

レプリカの設定

それでは、レプリカデータベースを設定します。

  • ソースデータベースのインポート

レプリカサーバー上にソースデータベースのコピーが必要です。そのために、先ほどエクスポートしたSQLファイルを使用します。MySQLシェルを起動します:

その後、同じデータベース名を使用して空のデータベースを作成します:

次に、シェルを終了します:

次に、SQLファイルをデータベースにインポートします:

sudo mysql -u

  • MySQL設定の微調整

MySQL設定ファイルで宣言する必要がある項目がいくつかあります。テキストエディタで設定ファイルを開きます:

以下のエントリは、mysqld セクションの下に配置します。そうしないと機能しません。最初はサーバーIDです。前述のように、ソース・レプリカのレプリケーション構成内のすべてのサーバーで一意である必要があります。デモンストレーション用として、以下のように設定されています:2:

次に、以下の行を追加します:

Replication in MySQL 2

ここでは、relay-log のみが新しいエントリです。これは、レプリケーション中にレプリカサーバーが作成するログです。ログの形式はバイナリログと同じです。設定ファイルを保存し、MySQLを再起動します:

  • レプリケーションの有効化

最後に、MySQL内からレプリケーションを有効にする準備が整いました。MySQLシェルを起動します:

次のコマンドを実行します。まず、IPアドレス、ユーザー名、パスワードを適宜変更してください:

CHANGE MASTER TO MASTER_HOST

このコマンドは以下を実行します:

  • 現在のサーバーがソースサーバーのレプリカとしてマークされます。
  • レプリカサーバーに適切なログイン資格情報が設定されます。
  • レプリカサーバーは、どこからレプリケーションを開始すればよいかを認識します。ソースサーバーで確認したデータベースのステータスを覚えていますか?ソースのログファイルとログポジションはそこから取得されます。

最後に、レプリカサーバーをアクティブにします:

START REPLICA

  • その他

レプリカの現在の状態の詳細を確認する必要がありますか?MySQLシェルで次のコマンドを実行します。末尾の \G は、テキストを読みやすく再配置するためのものです:

Replication in MySQL 1

接続に問題がある場合は、レプリカサーバーを起動してスキップしてみてください:

まとめ

MySQLレプリケーションには多くの考慮事項があります。これは基本的な構成の簡単なデモンストレーションに過ぎません。しかし、複数のソース・レプリカ構成に簡単に拡張することができます。同じ手順は、より高度で複雑な構成にも適用されます。設定後は、常にテストを行うことをお勧めします。いくつかの insertdelete または update コマンドをソースデータベースで実行してみてください。設定が正しく機能していれば、レプリカデータベースにすべてが適切に反映されるはずです。

さらに、MySQLでできることについて、当ブログの他のリソースもご覧ください。

ハッピーコンピューティング!

 

author

Hark Labs

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。