sql >> データベース >  >> RDS >> Mysql

クラスター間レプリケーションの概要

    現在、データベースを別のサーバー/データセンターに複製することは非常に一般的であり、場合によっては必須でもあります。データベースを完全に別の環境に複製する理由はいくつかあります。

      別のデータセンターに移行します。
    • アップグレード(ハー​​ドウェア/ソフトウェア)要件。
    • ディザスタリカバリ(DR)サイトで完全に同期された運用システムを維持し、いつでも引き継ぐことができます
    • 低コストのDR計画の一部としてスレーブデータベースを維持します。
    • ジオロケーション要件の場合(データは特定の国にローカルに存在する必要があります)。
    • テスト環境を用意します。 トラブルシューティングの目的。 レポートデータベース。

    そして、このレプリケーションタスクを実行するにはさまざまな方法があります:

    • バックアップ/復元 :本番データベースをバックアップして新しいサーバー/環境に復元するのがこれを行うための古典的な方法ですが、データを最新の状態に保つことができず、待つ必要があるため、これは昔ながらの方法でもあります。最近のデータが必要な場合は、復元プロセスごとに。クラスタ(マスタースレーブ、マルチマスター)があり、それを再作成する場合は、最初のバックアップを復元してから、残りのノードを再作成する必要があります。これは、時間のかかる作業になる可能性があります。
    • >
    • クローンクラスター :前のものと似ていますが、バックアップと復元のプロセスは、1つの特定のデータベースサーバーだけでなく、クラスター全体に対して行われます。このようにして、同じタスクでクラスター全体のクローンを作成でき、残りのノードを手動で再作成する必要はありません。この方法には、クローン間でデータを最新の状態に保つという問題があります。
    • レプリケーション :この方法にはバックアップ/復元オプションが含まれますが、最初の復元後、レプリケーションプロセスによってデータがマスターノードと同期されたままになります。このように、データベースクラスタがある場合は、バックアップを1つのノードに復元し、すべてのノードを手動で再作成する必要があります。

    このブログでは、このタスクを改善するために前述の方法を組み合わせて使用​​できる新しいClusterControl1.7.4機能を紹介します。

    クラスター間レプリケーションとは何ですか?

    2つのクラスター間のレプリケーションは、2つのデータセンターにまたがって実行するようにクラスターを拡張することと同じではありません。 2つのクラスター間でレプリケーションを設定する場合、実際には、自律的に動作できる2つの別個のシステムがあります。レプリケーションはそれらの同期を維持するために使用されるため、スレーブシステムは更新された状態になり、引き継ぐことができます。

    ClusterControl 1.7.4から、実行中のソースクラスターを直接複製するか、ソースクラスターの最近のバックアップを使用して、新しいクラスターを作成できます。

    クラスターのクローンを作成すると、データを受信するスレーブクラスター(SC)と、スレーブクラスターに変更を送信するマスタークラスター(MC)が作成されます。

    ClusterControlは、次のクラスタータイプのクラスター間レプリケーションをサポートします。

    • PerconaXtraDBClusterバージョン5.6.x以降。
    • MariaDBGaleraClusterバージョン10.x以降。
    • PostgreSQL9.6以降。

    Percona XtraDB /MariaDBGaleraクラスターのクラスター間レプリケーション

    MySQLベースのエンジンの場合、この機能を使用するにはGTIDが必要であり、マスタークラスターとスレーブクラスター間の非同期レプリケーションが使用されます。

    このジョブのために現在のクラスターを準備するために、実行するアクションがいくつかあります。まず、現在のクラスターの少なくとも1つのノードで、バイナリログを有効にする必要があります。次に、データベースノードで構成されたバックアップユーザーをClusterControl構成ファイルに追加する必要があります。これは管理タスクに使用されます。これらのアクションはすべて、ClusterControlUIまたはClusterControlCLIを使用して実行できます。

    これで、Percona XtraDB /MariaDBGaleraクラスター間レプリケーションを作成する準備が整いました。ジョブが終了すると、次のようになります。

    • スレーブクラスター内の1つのノードは、マスタークラスター内の1つのノードから複製されます。
    • レプリケーションはクラスター間で双方向になります。
    • スレーブクラスター内のすべてのノードは、デフォルトで読み取り専用になります。ノードの読み取り専用フラグを1つずつ無効にすることができます。
    • アクティブ-アクティブクラスタリングは、エンジンが競合の検出または解決を提供しないため、アプリケーションがいずれかのクラスター上のばらばらのデータセットにのみアクセスしている場合にのみ推奨されます。

    ClusterControlUIまたはClusterControlCLIの両方から、次のことができるようになります。

      このレプリケーションクラスターを作成します。 アクティブ-アクティブ構成を有効にします。 クラスタートポロジを変更します。 レプリケーションクラスターを再構築します。 レプリケーションスレーブを停止/開始します。
    • レプリケーションスレーブをリセットします(ClusterControl CLI atmを使用してのみ実装されます)。
    考慮事項
      バックアップユーザーはClusterControl構成ファイルに手動で追加する必要があります。
    • バックアップユーザーの資格情報は、現在のクラスターと新しいクラスターの両方で同じである必要があります。
    • スレーブクラスターの作成時に指定するMySQLルートパスワードは、マスタークラスターで使用されるルートパスワードと同じである必要があります。
    既知の制限
      自動フェイルオーバーはまだサポートされていません。マスターに障害が発生した場合、別のマスターにフェイルオーバーするのは管理者の責任です。
    • ClusterControl UIにはまだ実装されていないため、ClusterControlCLIからレプリケーションスレーブを「リセット」することのみが可能です。
    • 読み取り専用モードのクラスターのみを再構築できます。読み取り専用クラスターとしてカウントするには、クラスター内のすべてのノードが読み取り専用である必要があります。

    PostgreSQLのクラスター間レプリケーション

    ClusterControlクラスター間レプリケーションは、ストリーミングレプリケーションを使用するPostgreSQLでサポートされています。

    要件として、ClusterControlロール'master'を持つPostgreSQLサーバーが必要であり、スレーブクラスターをセットアップするとき、管理者の資格情報はマスタークラスターと同一である必要があります。

    これで、PostgreSQLクラスター間レプリケーションを作成する準備が整いました。ジョブが終了すると、次のようになります。

    • スレーブクラスター内の1つのノードは、マスタークラスター内の1つのノードから複製されます。
    • レプリケーションはクラスター間で単方向になります。 スレーブクラスターのノードは読み取り専用になります。

    ClusterControlUIまたはClusterControlCLIの両方から、次のことができるようになります。

      このレプリケーションクラスターを作成します。 レプリケーションクラスターを再構築します。 レプリケーションスレーブを停止/開始します。
    考慮事項
    • 管理者資格情報は、マスタークラスターとスレーブクラスターで同一である必要があります。
    既知の制限
      スレーブクラスターの最大サイズは1ノードです。 スレーブクラスターをバックアップからステージングすることはできません。 トポロジの変更はサポートされていません。 単方向レプリケーションのみがサポートされています。
    結論

    この新しいClusterControl機能を使用すると、クラスターレプリケーションを個別にまたは手動で作成するために各手順を実行する必要がなく、使用した結果、時間と労力を節約できます。試してみてください!


    1. SCDタイプ6

    2. SCUMMダッシュボードを使用したMySQLの効果的な監視:パート3

    3. postgreql関数の実行中にトランザクションをコミットする

    4. PostgreSQLの数値の前にプラス/マイナス記号を付ける