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

わずかな予算での高可用性-最小限の2ノードのMySQLGaleraクラスターの導入

    たった2つのノードでGaleraクラスターをセットアップする方法について定期的に質問があります。

    ドキュメントには、ネットワークのパーティション分割を回避するために、少なくとも3つのGaleraノードが必要であることが明確に記載されています。ただし、2ノードの展開を検討する正当な理由がいくつかあります。たとえば、データベースの高可用性を実現したいが、3番目のデータベースノードに費やす予算が限られている場合などです。または、開発/サンドボックス環境でGaleraを実行していて、最小限のセットアップを好む場合もあります。

    Galeraは、クォーラムベースのアルゴリズムを実装して、一貫性を強制する主要コンポーネントを選択します。主要コンポーネントは過半数の票を獲得する必要があるため、2ノードシステムでは、過半数がないためにスプリットブレインが発生します。幸い、garbd(Galera Arbitrator Daemon)を追加することができます。これは、奇数ノードとして機能できる軽量のステートレスデーモンです。アービトレーターの障害はクラスターの動作に影響を与えず、新しいインスタンスはいつでもクラスターに再接続できます。クラスタには複数のアービトレータが存在する可能性があります。

    ClusterControlは、データベース以外のホストへのgarbdのデプロイをサポートしています。

    通常、Galeraクラスターが完全に機能するには、少なくとも3つのホストが必要ですが、デプロイ時に、プライマリコンポーネントを作成するには2つのノードで十分です。手順は次のとおりです。

    1. 2つのノードのGaleraクラスターをデプロイします。
    2. ClusterControlによってクラスターがデプロイされたら、ClusterControlノードにgarbdを追加します。

    最終的には次の設定になります。

    ガレラクラスターを展開する

    ClusterControl Deployセクションに移動して、クラスターをデプロイします。

    展開するテクノロジーを選択したら、SSHでホストに接続するためのユーザー、キー、またはパスワードとポートを指定する必要があります。新しいクラスターの名前と、ClusterControlに対応するソフトウェアと構成をインストールさせる場合にも必要です。

    SSHアクセス情報を設定した後、ベンダー/バージョンを選択し、データベース管理者パスワード、datadir、およびポートを定義する必要があります。使用するリポジトリを指定することもできます。

    ClusterControlは、Galeraクラスターには奇数のノードが必要であると警告しますが、クラスターに追加するノードは2つだけです。

    Galeraクラスターをデプロイすると、[ジョブ]ページで監視できるClusterControlジョブがトリガーされます。

    Garbdをインストールする

    展開が完了したら、ClusterControlホストにgarbdをインストールします。 ClusterControlからgarbdをデプロイするオプションがありますが、同じClusterControlサーバーにデプロイする場合、このオプションは機能しません。これは、データベースのバージョンとパッケージの依存関係に関連する問題を回避するためです。

    したがって、手動でインストールしてから、garbdをClusterControlにインポートする必要があります。

    CentOS7へのPerconaGarbdの手動インストールを見てみましょう。

    Perconaリポジトリファイルを作成します:

    $ vi /etc/yum.repos.d/percona.repo
    [percona-release-$basearch]
    name = Percona-Release YUM repository - $basearch
    baseurl = http://repo.percona.com/release/$releasever/RPMS/$basearch
    enabled = 1
    gpgcheck = 0
    [percona-release-noarch]
    name = Percona-Release YUM repository - noarch
    baseurl = http://repo.percona.com/release/$releasever/RPMS/noarch
    enabled = 1
    gpgcheck = 0
    [percona-release-source]
    name = Percona-Release YUM repository - Source packages
    baseurl = http://repo.percona.com/release/$releasever/SRPMS
    enabled = 0
    gpgcheck = 0

    次に、Percona XtraDBClustergarbdパッケージをインストールします。

    $ yum install Percona-XtraDB-Cluster-garbd-57

    次に、garbdを構成する必要があります。このためには、/ etc / sysconfig/garbファイルを編集する必要があります。

    $ vi /etc/sysconfig/garb
    # Copyright (C) 2012 Codership Oy
    # This config file is to be sourced by garb service script.
    # A comma-separated list of node addresses (address[:port]) in the cluster
    GALERA_NODES="192.168.100.192:4567,192.168.100.193:4567"
    # Galera cluster name, should be the same as on the rest of the nodes.
    GALERA_GROUP="Galera1"
    # Optional Galera internal options string (e.g. SSL settings)
    # see http://galeracluster.com/documentation-webpages/galeraparameters.html
    # GALERA_OPTIONS=""
    # Log file for garbd. Optional, by default logs to syslog
    # Deprecated for CentOS7, use journalctl to query the log for garbd
    # LOG_FILE=""

    Galeraノードの構成に従って、GALERA_NODESおよびGALERA_GROUPパラメーターを変更します。また、サービスを開始する前に、#REMOVE THISAFTERCONFIGURATIONという行を削除する必要があります。

    そして今、私たちは服装サービスを開始することができます:

    $ service garb start
    Redirecting to /bin/systemctl start garb.service

    これで、新しいgarbdをClusterControlにインポートできます。

    ClusterControl-> Select Cluster-> AddLoadBalancerに移動します。

    次に、[Garbd]と[ImportGarbd]セクションを選択します。

    ここでは、ホスト名またはIPアドレスと新しいGarbdのポートのみを指定する必要があります。

    garbdをインポートすると、[ジョブ]ページで監視できるClusterControlジョブがトリガーされます。完了すると、上部のバーに緑色のチェックマークが付いたgarbdが実行されていることを確認できます。

    以上です!

    これで、最小限の2ノードのGaleraクラスターの準備が整いました。


    1. 不正な整数(2147483647)がMySQLに挿入されていますか?

    2. ORACLEのスリープ機能

    3. データベースの破損

    4. MySQLでJSON列をクエリする方法