MariaDB TXについて聞いたことがあるかもしれませんし、それが何であるか疑問に思っているかもしれません。
MariaDB Server 10.3との違いはありますか?
このブログ投稿では、MariaDBTXの概要とその概要を説明します。
つまり、MariaDB TXは、MariaDBが複数のオファリングを組み合わせて、フル機能のトランザクションデータベースを構築するサブスクリプションです。
MariaDBTXで使用されるデータベースはMariaDBServer10.3であり、同期マルチマスターレプリケーション用のGaleraClusterも含まれています。プロキシレイヤーの場合、MariaDBTXはMaxScaleを使用します。
これらの2つの主要な製品に少し焦点を当てて、それらの機能について説明しましょう。
MariaDB Server 10.3
これは、Oracleがアップストリームで実装するものに加えて、新しい機能を実装する、機能が完全なフォークに進化しました。 MariaDB 10.3には、エンタープライズ向けの機能のリストが付属しています。MariaDBServer 10.3は、MySQLのドロップイン代替品ではなくなりました。
Oracleの互換性
MariaDB10.3にはSQL_MODE=ORACLEが付属しており、MariaDB10.3で使用されているSQL構文とOraclePL/SQLとの互換性が向上しています。 MariaDB TXには、次の互換性機能が含まれています。
- ストアドプロシージャパラメータ
- 非ANSIストアドプロシージャコンストラクト
- カーソル構文
- ループ構文
- 変数宣言
- データ型の継承(%TYPE、%ROWTYPE)
- PL/SQLスタイルの例外
- 基本的なSQLタイプの同義語(VARCHAR2、NUMBER、…)
これにより、アプリケーションをOracleデータベースからMariaDBTXに簡単に移行できます。
Oracle PL / SQLコードの最大80%を、変更を加えることなくMariaDBで実行できるようになりました。これは全体的な学習曲線に深刻な影響を与え、MariaDBTXで実行するためにレガシーコードを書き直すのに必要な時間を短縮します。
また、MariaDB TXにはサポートパッケージが付属しており、移行のベストプラクティスを共有したり、計画プロセスを直接支援したりして、移行の煩わしさをさらに軽減できるコンサルタントにアクセスできます。
SQLの改善
MariaDB TXは、ウィンドウ関数や共通テーブル式などの開発者にとって非常に役立つ新機能を含む、SQL構文の改善ももたらします。また、一時的な副次句は、特定の時点に基づいて特定の行の複数のバージョンにアクセスできるため、非常に便利です。
すべての機能を以下に示します:
- 一時的な副次句(例:AS OF)
- ユーザー定義の集計関数
- 順序集合集計関数
- 交差/除外
- テーブル値コンストラクター
- DDL/SELECTロックタイムアウト
- 一般的なテーブル式
- ウィンドウ関数
- JSON関数
外部ストレージエンジン
MariaDBのデフォルトのエンジンは、トランザクション型のオールラウンドストレージエンジンであるInnoDBです。
ほとんどのワークロードに適しており、OLTP(オンライントランザクション処理)ワークロードに最適です。ただし、MariaDBTXで使用できるストレージエンジンはこれだけではありません。 XAトランザクションのサポートを維持しながら、複数のMariaDBインスタンス間でデータを分割するために使用できるSpiderエンジンにアクセスできます。
使用できるもう1つのストレージエンジンは、ストレージとライトアンプリフィケーションの削減に最適化されたエンジンであるMyRocksです。 FacebookでLSNベースのバトルテストが行われ、SSDストレージに大量のデータを保存するのに最適です。強力な圧縮を実装し、特定のワークロードに必要な書き込み回数を減らすことでコストを削減します(したがって、SSDの消耗を最小限に抑えます)。 。
ガレラクラスター
MariaDB TXを使用すると、仮想的に同期するマルチマスターレプリケーションであるGaleraClusterに簡単にアクセスできます。 Galera Clusterを使用して、可用性の高いWANにまたがるクラスターを設計できます。
Galera Clusterは、クォーラム対応プロトコルの上に構築されているため、ネットワークパーティショニングが問題になることはなく、スプリットブレインが問題になることはありません。 Galera Clusterは、新しいノードまたは障害が発生したノードを自動プロビジョニングする手段を提供し、管理フットプリントを削減します。
運用機能
MariaDB TXは、運用タスクに関連するいくつかの機能も提供します。 Instant ADD COLUMNは、最も一般的なスキーマ変更の1つの影響を減らすのに役立ちます。非表示の列は、古いコードと新しいコードの間の互換性を維持するのに役立ちます。仮想列のインデックスはパフォーマンスを向上させます。
Mariabackup
MariaDB TXは、バイナリログの暗号化を含む保存データ暗号化を実装します。 MariaDB TXユーザーがロックフリーバックアップの恩恵を受けることができるようにするために、Mariabackupが作成されました。これはXtrabackupの改良されたフォークであり、MariaDBTX暗号化機能では正しく機能しませんでした。これで、データを安全に暗号化しながら、Mariabackupを使用してホットな物理バックアップを楽しむことができます。
MariaDB MaxScale
MariaDB 10.3に加えて、MariaDB TXには、高可用性環境の構築に使用できるSQL対応プロキシであるMaxScale2.3が付属しています。多数の機能が付属しているので、ここでそれらの中で最も重要なものについて説明します。
自動フェイルオーバー
MaxScaleを使用して、マスターMariaDBノードの状態を追跡し、障害が発生した場合は、高速の自動フェイルオーバーを実行できます。自動フェイルオーバーは、障害から迅速に回復できる高可用性ソリューションを構築する上で非常に重要です。
読み取り/書き込み分割
読み取り/書き込み分割は、読み取りスケーリングを可能にするための重要な機能です。アプリケーションがMaxScaleに接続するだけで十分であり、トポロジを検出し、どのMariaDBがマスターとして機能し、どのMariaDBがスレーブとして機能するかを判別します。次に、これに応じてトラフィックをルーティングします。 SELECTクエリはスレーブに送信され、書き込みはマスターに送信されます。すべてが自動的に行われ、トポロジは常に監視され、フェイルオーバーが発生した場合、トラフィックは変更に基づいて再ルーティングされます。
透過クエリルーティング
トラフィックのMariaDBTXへのエントリポイントであるMaxScaleを使用して、読み取りと書き込みの分割を行うことができます。これでも不十分な場合があり、特定のクエリの送信先を制御する方法があると便利です。これはMaxScaleで可能です。正規表現を使用してクエリを照合し、それらをマスターに送信するかスレーブに送信するかを決定できます。これは、書き込み後の読み取りの問題のため、またはデータセットの最新のビューが必要なために、マスターでSELECTクエリを実行する必要がある特定の場合に役立ちます。
クエリ結果のキャッシュ
パフォーマンスを向上させるには、クエリキャッシュが必須です。 MariaDBで使用可能なクエリキャッシュは、クエリのシリアル化を強制するため、高度な同時実行環境では機能せず、読み取り専用ワークロードの場合でもパフォーマンスが大幅に低下します。キャッシュに外部ソリューションを使用することが常に実行可能であるとは限りません。結局のところ、維持、保護、および健全性を維持するためのさらに別のデータベースが必要になります。 MaxScaleを他の機能にすでに使用している場合は、キャッシュとして使用する方がよい場合があります。
クエリのブロック
データベースは非効率的なクエリに悩まされることがあり、システムに高い負荷がかかります。そのクエリを書き直すのに時間がかかりすぎる可能性があります(誰かがそれを書き直し、ステージングで変更をテストしてから、最終的に本番環境にデプロイする必要があります)。 MaxScaleは、クエリブロッキングなどの機能でここで役立ちます。これにより、基本的に、特定のクエリがデータベースにヒットするのを防ぐことができます。この機能を使用して、SQLファイアウォールを構築することもできます。SQLインジェクションまたはその他の潜在的に危険で悪意のあるアクティビティを指すパターンに一致するすべてのクエリを削除します。
ご覧のとおり、MariaDB TXには、連携してトランザクションデータ処理用の高可用性でスケーラブルなデータベースを構築するように設計された機能とソフトウェアのリストが付属しています。
MariaDBTXのエンタープライズ監視と管理
ClusterControlはMariaDBTXを完全にサポートします。 MariaDBServer10.3とMaxScale2.3の両方を簡単にデプロイできます。 ClusterControlは、MariaDBレプリケーションセットアップとMariaDBGaleraClusterをサポートしています。
ClusterControlインスタンスからMariaDBTXをデプロイするノードへのSSH接続がある限り、数回クリックするだけで接続できます。
まず、ClusterControlがMariaDBTXノードに到達する方法を定義する必要があります。
次に、ベンダーとしてMariaDBを選択し、サポートされているバージョンの1つを選択します。 MariaDBのルートパスワードを渡します。
最後に、トポロジを決定します。 MariaDB TXは、追加のスレーブを使用して、マスター-マスター、アクティブ-スタンバイセットアップにデプロイできます。レプリケーションはMariaDBGTIDを使用します。
MariaDB Galera Clusterの場合、最初のステップはまったく同じです。次に、ベンダーとしてMariaDBを選択し、バージョンを決定して、MariaDBGaleraClusterでノードを定義する必要があります。
クラスターをデプロイすると、ClusterControlの機能を使用してMariaDBTXクラスターを監視および管理できます。たとえば、MaxScaleロードバランサーの追加は数回クリックするだけです:
デプロイしたら、ClusterControlを使用してMaxScaleを管理できます:
新しいGaleraノードまたは非同期レプリケーションスレーブを追加することで、Galeraクラスターをスケーリングすることもできます。スレーブまたは遅延スレーブをレプリケーションセットアップに追加したり、スレーブをマスターに昇格させて残りのセットアップを再スレーブ化することでトポロジの変更を実行したりできます。 ClusterControlはクラスターを監視し、インシデントが発生した場合に障害が発生したノードまたはクラスターの回復を試みます。バックアップの場合、ClusterControlを使用すると、mysqldumpとMariabackupの両方を使用してバックアップスケジュールを定義できるため、MariaDBTXの暗号化機能を簡単に利用できます。
監視および傾向分析の部分では、ClusterControlはエージェントレスモードのいずれかで使用できます。
または、Prometheusやエージェントと一緒に使用して、MariaDBTXクラスターで何が起こっているかについてさらに優れた洞察を提供することもできます。
この紹介ブログ投稿が、MariaDB TXとは何か、およびClusterControlがそれを管理するのにどのように役立つかを理解するのに役立つことを願っています。