MariaDBサーバーはもはやMySQLの真の模倣ではありません。それは成熟したフォークに成長し、独自のデータベースシステムがアップストリームで提供するものと同様の新しい機能を実装します。 MariaDB 10.3は、エンタープライズ機能のリストを大幅に拡張し、新しいSQL_MODE =Oracleにより、Oracleデータベースをオープンソースデータベースに移行したい企業にとってエキサイティングな選択肢になります。ただし、運用管理はまだやるべきことがいくつかある分野であり、MariaDBでは独自のスクリプトを作成する必要があります。
おそらく、自動化システムを調べる良い機会ですか?
自動化された手順は正確で一貫性があります。それらはあなたに切望されていた再現性を与えることができるので、あなたは生産システムの変更のリスクを最小限に抑えることができます。ただし、最新のオープンソースデータベースは非常に高速に開発されるため、管理システムをすべての新機能と同等に保つことはより困難です。
自然な次のステップは、自動化プラットフォームを探すことです。システムの展開に使用できるプラットフォームはたくさんあります。 Puppet、Chef、Ansibleは、おそらくその新しいトレンドの最良の例です。これらのプラットフォームは、さまざまなソフトウェアサービスの迅速な展開に適しています。これらはデプロイメントに最適ですが、それでもコードを維持し、機能の変更をカバーする必要があり、通常、作業の1つの側面のみをカバーします。バックアップ、パフォーマンス、メンテナンスなどには、引き続き外部ツールまたはスクリプトが必要です。
一方、完全に管理されたエクスペリエンスのための洗練されたインターフェイスとさまざまな追加サービスを備えたクラウドプラットフォームがあります。ただし、実行できない場合があります。たとえば、クラウドを使用している可能性があるが、それでもオンプレミスのフットプリントが大きいハイブリッド環境。
では、MariaDBデータベース専用の管理レイヤーはどうですか?
ClusterControlは、MariaDBおよびその他のオープンソースデータベースのデプロイと管理を自動化するように設計されています。 ClusterControlの中核となるのは、新しいデータベースインスタンスとクラスターの展開、バックアップの管理、高可用性とフェイルオーバー、トポロジの変更、アップグレード、新しいノードのスケーリングなど、定期的に実行する必要のあるデータベースタスクを自動化できる機能です。
>ClusterControlのインストール
ClusterControlを開始するには、専用の仮想マシンまたはホストが必要です。ここでは、VMとサポートされているシステムの要件について説明します。少なくとも、オンプレミスまたはクラウドのいずれかで、小さなVM 2 GB RAM、2 CPUコア、および20GBストレージスペースから開始できます。
主なインストール方法は、すべての手順(OSの構成、パッケージのダウンロードとインストール、メタデータの作成など)をガイドするインストールウィザードをダウンロードすることです。
インターネットにアクセスできない環境では、オフラインインストールプロセスを使用できます。
ClusterControlはエージェントレスであるため、追加のソフトウェアをインストールする必要はありません。データベースホストへのSSHアクセスのみが必要です。また、より高解像度の監視データのためのエージェントベースの監視もサポートしています。
すべてのターゲットノード(ClusterControlおよびすべてのデータベースホスト)にパスワードなしのSSHを設定するには、ClusterControlサーバーで次のコマンドを実行します。
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
クラスタ制御を試す最も便利な方法の1つは、Dockerコンテナで実行するオプションかもしれません。
docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol
デプロイが成功すると、{ホストのIPアドレス}:{ホストのポート}でClusterControl Web UIにアクセスできるようになります。例:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
MariaDBクラスターのインストール
ClusterControlインターフェースに入ったら、最初に行うことは、新しいデータベースをデプロイするか、既存のデータベースをインポートすることです。バージョン1.7.2では、バージョン10.3のサポートが導入されました(10.0、10.1、10.2とともに)。今週リリースされた1.7.3では、クラウドへのインストールの展開が改善されていることがわかります。
ClusterControl:デプロイ/インポートこのブログを書いている時点では、現在のバージョンは10.3.16です。デフォルトでは、最新のパッケージが取得されます。 [データベースクラスターのデプロイ]オプションを選択し、表示される指示に従います。
今こそ、ClusterControlノードとDBノード間の接続に必要なデータを提供するときです。このステップでは、組織内で使用するクリーンなVMまたはOSのイメージを用意します。 MariaDBを選択するときは、SSHでサーバーに接続するためのユーザー、キー、またはパスワードとポートを指定する必要があります。
ClusterControl:データベースクラスターのデプロイSSHアクセス情報を設定した後、スーパーユーザールートとなるMariaDBのデータベースにアクセスするためのデータを入力する必要があります。使用するリポジトリを指定することもできます。 ClusterControlを使用してデータベースサーバー/クラスターをデプロイする場合、3種類のリポジトリを使用できます。
- ベンダーリポジトリを使用します。データベースベンダーの優先ソフトウェアリポジトリを設定して使用することにより、ソフトウェアをプロビジョニングします。 ClusterControlは、データベースベンダーリポジトリによって提供されるものの最新バージョンをインストールします。
- ベンダーリポジトリを設定しないでください。 ClusterControlによってリポジトリが設定されることはありません。 ClusterControlは、システム構成(デフォルトのリポジトリファイル)に依存します。
- 現在のデータベースベンダーのリポジトリを作成してミラーリングしてから、ローカルのミラーリングされたリポジトリを使用してデプロイします。これにより、ソフトウェアパッケージの現在のバージョンを「フリーズ」することができます。
すべてが設定されたら、デプロイボタンを押します。デプロイプロセスでは、mariabackupなどのMariaDBが提供する追加のツールや、データベース管理で人気のある外部ベンダーのツールのインストールも処理されます。
新しいクラスターをインポートする
ClusterControlにインポートすることにより、既存のセットアップを管理するオプションもあります。このような環境は、ClusterControlまたは他のメソッド(puppet、chef、ansible、docker…)によって作成できます。プロセスは単純で、専門知識は必要ありません。
まず、既存のデータベースサーバーへのSSHアクセスクレデンシャルを入力する必要があります。次に、データベース、サーバーデータディレクトリ、およびバージョンへのアクセス資格情報を入力します。デプロイするときと同じように、IPまたはホスト名でノードを追加し、[インポート]を押します。タスクが完了すると、ClusterControlからクラスターを管理する準備が整います。この時点で、ノードまたはクラスターの自動回復のオプションを定義することもできます。
ClusterControl:既存の10.3データベースクラスターをインポートしますMariaDBのスケーリング、DBクラスターへのノードの追加
ClusterControlを使用すると、サーバーにサーバーを追加するのは簡単な手順です。 GUIまたはCLIからそれを行うことができます。上級ユーザーの場合は、ClusterControl Developer Studioを使用し、リソースベースの条件を記述してクラスターを自動的に拡張できます。
ClusterControl:MariaDBノードの追加ClusterControlは、既存のバックアップを使用するオプションをサポートしているため、追加の作業で本番マスターノードを圧倒する必要はありません。
MariaDBの保護
デフォルトのMariaDBインストールには、緩和されたセキュリティが付属しています。これは最近のバージョンで改善されていますが、実稼働グレードのシステムでは、デフォルトのmy.cnf構成を微調整する必要があります。 ClusterControlのデプロイメントには、デフォルト以外のmy.cnf設定が付属しています(クラスターの種類によって異なります)。
ClusterControlは人為的エラーを取り除き、一連のセキュリティ機能へのアクセスを提供して、データベースをハッキングやその他の脅威から自動的に保護します。
ClusterControl:セキュリティパネルClusterControlは、MariaDB接続のSSLサポートを有効にします。 SSLを有効にすると、アプリケーション(ClusterControlを含む)とデータベース間の通信に別のレベルのセキュリティが追加されます。 MariaDBクライアントは、データベースサーバーへの暗号化された接続を開き、機密情報を転送する前にそれらのサーバーのIDを確認します。
ClusterControlは、すべてのデータベースノードでの証明書の作成を含む、必要なすべての手順を実行します。このような証明書は、後で[キー管理]タブで管理できます。
ClusterControlを使用すると、監査を有効にすることもできます。 MariaDBが提供する監査プラグインを使用します。継続的監査は、データベース環境を監視するための必須のタスクです。データベースを監査することにより、実行されたアクションまたはアクセスされたコンテンツに対する説明責任を達成できます。さらに、監査には、SOXなどの一連の正確な規制やEU GDPR規制をサポートするための財務データに関連するコンポーネントなど、いくつかの重要なシステムコンポーネントが含まれる場合があります。ガイド付きプロセスでは、監査対象と監査ログファイルの保守方法を選択できます。
監視とアラート
データベースシステムを使用する場合は、それらを監視できる必要があります。これにより、傾向を特定したり、アップグレードや改善を計画したり、発生する可能性のある問題やエラーに効果的に対応したりできます。
ClusterControl:概要新しいClusterControlは、PromQLクエリ言語のデータストアとしてPrometheusを使用しています。ダッシュボードのリストには、サーバー一般、サーバーキャッシュ、InnoDBメトリック、レプリケーションマスター、レプリケーションスレーブ、システムの概要、およびクラスターの概要のダッシュボードが含まれます。
ClusterControl:DashBoardClusterControlは、Prometheusエージェントをインストールし、メトリックを構成し、GUIを介してPrometheusエクスポーター構成へのアクセスを維持するため、エクスポーター(Prometheus)のコレクターフラグなどのパラメーター構成をより適切に管理できます。
データベースオペレーターとして、データベースで重大な問題が発生した場合は常に通知を受ける必要があります。アラートを取得するためのClusterControlの3つの主な方法は次のとおりです。
- メール通知
- 統合
- アドバイザー
メール通知はユーザーレベルで設定できます。 [設定]>[メール通知]に移動します。重要度と送信するアラートの種類のどちらかを選択できる場所。
次の方法は、統合サービスを使用することです。これは、特定のカテゴリのイベントをServiceNowチケット、Slack、PagerDutyなどの他のサービスに渡して、組織内で高度な通知方法と統合を作成できるようにするためのものです。
最後の1つは、インテリジェントなチェックとトリガーを作成できるAdvisorセクションに高度なメトリック分析を含めることです。
ClusterControl:アドバイザSQLモニタリング
SQLモニタリングは3つのセクションに分かれています。
- 上位のクエリ -かなりの量のリソースを使用するクエリに関する情報を表示します。 クエリモニター:上位のクエリ
- クエリの実行 -これは、すべてのデータベースクラスタノードから1つのビューに結合された情報のプロセスリストです。これを使用して、データベース操作に影響を与えるクエリを強制終了できます。 クエリモニター:クエリの実行
- クエリの外れ値 -実行時間が平均より長いクエリのリストを表示します。 クエリモニター:クエリの外れ値
バックアップとリカバリ
MariaDBを稼働させ、監視を行ったので、次のステップであるデータのバックアップがあることを確認します。
ClusterControl:バックアップリポジトリClusterControlは、MariaDBバックアップ管理用のインターフェースを提供し、スケジューリングとクリエイティブレポートをサポートします。バックアップ方法には2つのオプションがあります。
- 論理バックアップ(テキスト):mysqldump
- バイナリバックアップ:xtrabackup(下位バージョン)、mariabackup
優れたバックアップ戦略は、データベース管理システムの重要な部分です。 ClusterControlは、バックアップとリカバリ/復元のための多くのオプションを提供します。
ClusterControlのバックアップ保持は構成可能です。バックアップを任意の期間保持するか、バックアップを削除しないかを選択できます。 AES256暗号化は、不正な要素からバックアップを保護するために採用されています。迅速な復旧のために、バックアップを新しいクラスターに直接復元できます。ClusterControlは、新しいデータベースセットアップの起動からデータの復旧までの完全な復元プロセスを処理し、エラーが発生しやすい手動の手順をプロセスから削除します。
バックアップは完了時に自動的に検証され、クラウドストレージサービス(AWS、Azure、Google)にアップロードされます。データセンターのローカルバックアップとクラウドにアップロードされたバックアップに対して、さまざまな保持ポリシーを定義できます。
ノードとクラスターの自動回復
ClusterControlは、障害の検出と処理の高度なサポートを提供します。また、さまざまなプロキシをデプロイしてHAスタックと統合できるため、アプリケーションを新しいマスターノードにリダイレクトするためにアプリケーション接続文字列やDNSエントリを調整する必要はありません。
マスターサーバーがダウンすると、ClusterControlは自動フェイルオーバーを実行するジョブを作成します。 ClusterControlは、新しいマスターを選択し、フェールオーバースレーブサーバーを展開し、ロードバランサーを構成するためのすべてのバックグラウンド作業を実行します。
ClusterControlの自動フェイルオーバーは、次の原則に基づいて設計されました。
- フェイルオーバーする前に、マスターが本当に死んでいることを確認してください
- フェイルオーバーは1回のみ
- 一貫性のないスレーブにフェイルオーバーしないでください
- マスターにのみ書き込む
- 障害が発生したマスターを自動的に回復しないでください
組み込みのアルゴリズムを使用すると、多くの場合、フェイルオーバーを非常に迅速に実行できるため、データベース環境で最高のSLAを保証できます。
ClusterControl:自動回復プロセスは高度に構成可能です。これには、環境の詳細にリカバリを採用するために使用できる複数のパラメータが付属しています。さまざまなオプションの中には、replication_stop_on_error、replication_auto_rebuild_slave、replication_failover_blacklist、replication_failover_whitelist、replication_skip_apply_missing_txs、replication_onfail_failover_scriptなどがあります。
フェイルオーバーは、稼働時間を維持するために、障害またはメンテナンスイベント中に正常なスタンバイコンポーネントに移動するプロセスです。迅速に実行できるほど、オンラインに戻ることができます。ダウンタイムを最小限に抑え、TimescaleDBの自動化されたアプローチを通じてSLAを満たすことを検討している場合は、このブログが最適です。
MaxScaleロードバランサー
MariaDB 10.3に加えて、ClusterControlはMaxScale2.3ロードバランサーのオプションを追加します。 MaxScaleは、高可用性環境を構築するために使用できるSQL対応プロキシです。多数の機能が付属していますが、主な目標は、負荷分散と高可用性を実現することです。
ClusterControl:MaxScaleMaxScaleを使用して、マスターMariaDBノードの状態を追跡し、障害が発生した場合は、高速の自動フェイルオーバーを実行できます。自動フェイルオーバーは、障害から迅速に回復できる高可用性ソリューションを構築する上で非常に重要です。
負荷分散データベースセッション
読み取り/書き込み分割は、読み取りスケーリングを可能にするための重要な機能です。アプリケーションがMaxScaleに接続するだけで十分であり、トポロジを検出し、どのMariaDBがマスターとして機能し、どのMariaDBがスレーブとして機能するかを判別します。これに応じてトラフィックをルーティングします。
概要
このブログが、ClusterControlおよびMariaDB10.3管理モジュールに慣れるために役立つことを願っています。最良のオプションは、ClusterControlをダウンロードして、それぞれをテストすることです。