MySQLを簡単にHAクラスター化する方法 ~サンプルスクリプト編~

    こんにちは、サイオステクノロジー 宇野です。

    WindowsでHULFTやJP1、Oracleといったソフトウェアやデータベースの保護をする場合、LifeKeeperにはアプリケーションリカバリーキット(ARK)があり、ARKを利用すると、スクリプトを書かずにHAクラスターを簡単に構築することができます。

    ただしARKは全てのアプリケーションに対応しているものではありません。その代替案として、Linux版ではQSP(Quick Service Protection)、Windows版ではサンプルスクリプトを利用することで、簡単にHAクラスターを構築できるようになっています。

    本日はアプリケーションリカバリーキット(ARK)のないアプリケーションを保護する際に有効なサンプルスクリプトについて紹介します。

    サンプルスクリプトについて

    サンプルスクリプトとは前述のようにARKが用意されていないソフトウェアやデータベースを簡単に保護するためのもので、”Windows サービス”機能でアプリケーションの起動、停止、監視が可能であることが前提条件となります。

    ARKで実現しているアプリケーションの起動や停止、アプリケーションの監視を、SCコマンドによる START, STOP, QUERYに置き換えてリソースとして登録を行い起動、停止、監視用のスクリプトを作成することなく、簡単にリソースとして登録することが可能です。そのためスクリプトの開発コストを抑えることが出来ます。

    ただし監視内容が SC QUERY の結果のみとなりますので、ポートの疎通確認などQUERY以外の監視を行いたいといった対応が行えません。また、全てのアプリケーションに対する動作保証はありませんので、事前に動作を確認いただく必要があります。

    今回はARKとして提供のない MySQL Server 8.0を保護対象とした事例を紹介します。
    他のアプリケーションをリソース保護する場合は、手順を読み替えて利用してください。

    また、今回の動作確認で使用した構成は以下です。

    OS

    Windows Server 2019 SE

    保護アプリケーション

    MySQL8.0.31

    クラスターソフトウェア

    LifeKeeper for Windows 8.9.0

    レプリケーションソフトウェア

    DataKeeper for Windows 8.9.0

    サンプルスクリプト利用手順

    1. 事前に、両ノードに同じ設定でMySQL Serverをインストールしてください。 MySQL Serverのデータ領域を共有ディスクに指定することで、クラスターノードでデータの共有が可能です。今回はDataKeeperでEドライブをレプリケーションしたボリュームリソースを使用し、ノード間で共有可能なEドライブにMySQLのデータを作成します。

    2. サンプルスクリプトの対象となるアプリケーションはWindows サービスに登録があることが前提です。Windowsサービスからアプリケーションを確認します。

    3.サービスの中から保護するMySQL Server(MySQL80)を選択します。

    4. アクティブノードの“MySQL80”のプロパティを開きます。以下の3つの作業を行います。

    • サービス名”MySQL80”を利用しますので別途記録しておく
    • “スタートアップの種類”を“手動”に変更する
    • サービスを停止する

    *サービス名は保護するアプリケーションにより変わります。

    5. 設定変更をしましたら“OK”をクリックして変更を保存します。LifeKeeperで保護するということは起動や停止をLifeKeeperが管理します。そのためサービス機能での起動は不要となります。

    6. スタンバイノードのMySQLも同様に変更を行います。

    7. MySQL Serverをリソースとして保護します。LifeKeeper GUIを起動して“リソース階層の作成”をクリックします。

    8. リソース作成ウィザードが起動します。以下の値を入力してリソース作成ウィザードを進めます。
    *リソース作成ウィザードのアプリケーション情報を他のサービスに切り替えることで、他のサービスを保護することが可能です。

    ■リソース作成ウィザード

    プライマリサーバ

    WIN2019A(ホスト名を指定)

    バックアップサーバ

    WIN2019B(ホスト名を指定)

    保護するアプリケーション

    汎用アプリケーション

    restoreスクリプト

    C:\LK\Admin\kit\app\templates\example_service\restore.pl

    removeスクリプト

    C:\LK\Admin\kit\app\templates\example_service\remove.pl

    quickcheckスクリプト

    C:\LK\Admin\kit\app\templates\example_service\quickcheck.pl

    deekCheckスクリプト

    <空欄>

    recoverスクリプト

    C:\LK\Admin\kit\app\templates\example_service\recover.pl

    アプリケーション情報

    MySQL80 (サービス名を記入)

    LocalRecoveryを有効にする

    はい

    リソースタグ名

    MySQL8.0 (任意)

    • restoreスクリプトを指定すると、remove,recoverスクリプトは同一フォルダのファイルを自動的に認識、入力されます。quickcheckスクリプトだけは自動認識されませんので、スクリプト名を手動で入力する必要があります。

     

    ■拡張ウィザード

    バックアップ優先順位

    10

    9. MySQL8.0の保護が完了します。

    10. 共有ディスクとなるVol.EをMySQL8.0の子リソースとして依存関係を作成します。依存関係を作成することで、フェイルオーバー時にデータ部でもあるVol.Eを一緒に切り替えることができます。MySQL8.0リソースの上で右クリックをして“依存関係の作成”を選択します。

    11. 子リソースとして Vol.Eを選択して進めます。

    12. 以下のようにMySQL8.0を最上位とした依存関係が作成されます。

     

    以上がサンプルスクリプトを使用したMySQL8.0リソースの作成手順です。手順には含めませんでしたが、以下のようにIPリソースを作成してMySQLリソースと依存関係を作成することでVIPを登録することも可能です。ARKのないサービス保護には簡易的な上記の方法を検討頂ければと考えています。

     

    参考資料(外部資料リンク)