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

OracleDatabaseからMariaDBへの移行-知っておくべきこと

    Gartnerは、2022年までに、既存の商用データベースの50%がオープンソースデータベースに変換されると予測しています。さらに、新しい社内アプリケーションの70%は、オープンソースデータベースプラットフォームで開発されます(オープンソースDBMS市場の現状、2018年)。

    これらは、人気のあるプロプライエタリデータベースソフトウェアの成熟度、安定性、および重要性を考慮すると高い数値です。トップ10のデータベースのほとんどがオープンソースであるトップデータベースランキングでも同じことが観察される可能性があります。

    https://db-engines.com/en/ranking

    何が企業にそのような動きをするように促しているのですか?

    データベースシステムを移行する理由はたくさんあります。一部の人にとって、主な理由はライセンスと所有権のコストです。しかし、それは本当にコストについてだけですか?そして、重要な本番システムをその新しいオープンソースの世界に移すのに十分安定したオープンソースですか?

    オープンソースデータベース、特に組織に導入された新しいデータベースは、多くの場合、プロジェクトチームの開発者から提供されます。無料であり(直接プロジェクトの外部支出に影響を与えない)、現在の技術的要件を満たしているため、これが選択されました。

    しかし、移行や人件費などの多くの要因を考慮する必要があるため、無料の側面は実際にはコストなしで実現するわけではありません。移行がスムーズであればあるほど、プロジェクトに費やす時間と費用は少なくなります。

    データベースの移行は、特にOracleからPostgreSQL、OracleからPercona、MySQLなどの異種のプロプライエタリデータベースの移行では困難な場合があります。複雑なスキーマ構造、データ型、およびPL / SQLのようなデータベースコードは、ターゲットデータベースのものとはかなり異なる可能性があり、
    データ移行を開始する前にスキーマとコードの変換手順が必要です。

    同僚のPaulNamuagによる最近の記事で、彼はOracleをPerconaに移行する方法を検討しました。

    今回は、OracleからMariaDBに移行する前に知っておくべきことを見ていきます。

    MariaDBは、Oracleデータベースをオープンソースの世界に移行するのに役立つエンタープライズ機能と移行機能を約束します。

    このブログ投稿では、以下について説明します。

    • 移行する理由
    • ストレージエンジンの違い
    • データベース接続に関する考慮事項
    • インストールと管理の簡素化
    • セキュリティの違い
    • レプリケーションとHA
    • PL/SQLおよびデータベースコード
    • クラスタリングとスケーリング
    • バックアップとリカバリ
    • クラウドの互換性
    • その他の考慮事項

    Oracleから移行する理由

    ほとんどの企業は、OracleまたはSQL Server、あるいはその両方の組み合わせを実行し、独立して動作する分離されたオープンソースデータベースの小さなポケットを備えています。中小企業は、特に新しいアプリケーションのために、主にオープンソースデータベースを展開する傾向があります。しかし、これは変化しており、多くの場合、大規模な組織でもオープンソースが主な選択肢です。

    これら2つのデータベースシステムを簡単に比較すると、次のようになります。

    • 無料のOracleExpressEditionのみですが、MariaDBと比較すると機能が非常に限られています。広範な機能を使用するには、OracleStandardEditionまたはOracleEnterpriseEditionのいずれかを購入する必要があります。
    • 一方、MariaDBとMySQLコミュニティは、潜在的な機能のギャップを最小限に抑えるために懸命に取り組んでいました。セキュリティコンプライアンス、ホットバックアップ、およびその他の多くのエンタープライズ機能がMariaDBで利用できるようになりました。

    MariaDB / MySQLには、大規模なOracleセットアップよりも常に柔軟なものがあります。それらの1つは、レプリケーションの容易さと水平クラスターのスケーラビリティーです。

    ストレージエンジンの違い

    まず、いくつかの基本から始めましょう。 MySQLまたはMariaDBの制限に関する多くの伝説や神話を今でも聞くことができます。これらは主に、メインストレージエンジンがMyISAMであった暗黒時代を指しています。

    MyISAMは、MariaDB 5.5でInnoDBに置き換えられるまで、MySQL3.23のデフォルトのストレージエンジンでした。これは、優れたパフォーマンスを備えた軽量の非トランザクションエンジンですが、行レベルのロックやInnoDBの信頼性を提供しません。

    InnoDB(デフォルトのストレージエンジン)を使用すると、MariaDBは、共有ロック(S)と排他ロック(X)の2つの標準行レベルロックを提供します。行を読み取るために共有ロックが取得され、他のトランザクションがロックされた行を読み取ることができます。異なるトランザクションが独自の共有ロックを取得する場合もあります。
    特定のロックは行に書き込むために取得され、追加のトランザクションが同じ行をロックするのを防ぎます。

    InnoDBは、これら2つのシステム間の最大のトランザクション機能のギャップを確実にカバーしています。

    MariaDBはプラグイン可能な性質があるため、さらに多くのストレージエンジンを提供するため、特定のワークロードに合わせて調整することができます。つまりスペースが重要な場合は、優れた圧縮率を提供するTokuDB、パーティショニングとデータシャーディング用に最適化されたSpider、ビッグデータスケーリング用のColumnStoreを使用できます。

    それでも、Oracleから移行する場合は、最初にInnoDBストレージエンジンを使用することをお勧めします。

    接続に関する考慮事項

    MariaDBは、ODBCおよびJDBCドライバーを含むデータベースアクセス、およびPerl、Python、PHPのアクセスライブラリに対する優れたサポートをOracleと共有しています。 MySQLとOracleはどちらも、バイナリラージオブジェクト、文字、数値、および日付のデータ型をサポートしています。したがって、アプリケーションサービスに適したコネクタを見つけるのに問題はありません。

    MariaDBには、Oracleでわかっているように、クラスター化されたデータベースのデータベース接続を維持するための専用のリスナープロセスがありません。また、柔軟なデータベースサービスもありません。代わりに、Unixソケット(同じサーバー上のDB-アプリに接続するためのローカルで最も安全な方法)、リモート接続(デフォルトでは、MariaDBはリモートログインを許可しません)、およびWindowsで使用可能なパイプとメモリの間で手動で構成する必要がありますシステムのみ。クラスターの場合、SCANアドレスをロードバランサーに置き換える必要があります。 MariaDBは、他の製品MaxScaleを使用することをお勧めしますが、MariaDBで動作するProxySQLやHAproxyなどの他の製品もありますが、いくつかの制限があります。 MariaDBに外部ロードバランサーを使用するのは難しい場合がありますが、比較すると、Oracleデータベースでは利用できない優れた機能を見つけることができます。

    ロードバランサは、Oracleトランスペアレントアプリケーションフェイルオーバー(TAF)、Oracle Firewall DB、またはOracleConnectionManagerなどの高度なセキュリティ機能をお探しの方にもお勧めです。適切なロードバランサーの選択について詳しくは、次のホワイトペーパーをご覧ください。

    これらのテクノロジーは無料で、スクリプトベースのインストールを使用して手動で展開できますが、ClusterControlなどのシステムは、ポイントアンドクリックインターフェイスを使用してプロセスを自動化します。 ClusterControlでは、キャッシングテクノロジーを導入することもできます。

    インストールと管理のシンプルさ

    利用可能な最新のOracleDBバージョンには、待望のインストール機能が追加されました。Oracle18cは、RPMを使用してOracleLinuxにインストールできるようになりました。クックブックやPuppetコードスニペットの自動化を作成したい人にとって、専用のJavaベースのインストールは常に問題でした。事前定義されたサイレントインストールを使用することもできますが、ファイルは時々変更され、それでも依存関係地獄に対処する必要がありました。 RPMベースのインストールは間違いなく良い動きでした。

    では、MariaDBではどのように機能しますか?

    Oracleの世界から移行している人にとって、インスタンスのデプロイ、新しいデータベースの作成、さらには複雑なレプリケーションフローの設定がどれほど高速であるかを見るのは常に嬉しい驚きです。インストールと構成のプロセスは、おそらく移行プロセスの最もスムーズな部分です。適切な設定を選択するには時間と知識が必要ですが。

    Oracleは、MySQLのバイナリディストリビューションのセットを提供しています。これらには、多数のプラットフォーム用の圧縮tarファイル(拡張子が.tar.gzのファイル)の形式の汎用バイナリ配布と、プラットフォーム固有のパッケージのバイナリが含まれます。 Windowsプラットフォームでは、GUIを介して標準のインストールウィザードを見つけることができます。

    1行のコマンドでデータベースを作成できるため、Oracle Database Configuration Assistant(DBCA)は基本的に必要ありません。

    CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
        [create_specification] ...
    
    create_specification:
        [DEFAULT] CHARACTER SET [=] charset_name
      | [DEFAULT] COLLATE [=] collation_name

    同じMariaDBインスタンスの下に、異なるデータベース照合と文字セットを持つデータベースを作成することもできます。

    レプリケーションの設定は、マスターでバイナリログを有効にし(Oracleのアーカイブログと同様)、スレーブで次のコマンドを実行してマスターに接続するだけです。

    CHANGE MASTER TO
    MASTER_HOST = host,
    MASTER_PORT = port,
    MASTER_USER = replication_user,
    MASTER_PASSWORD = password,
    MASTER_AUTO_POSITION = 1;

    セキュリティとコンプライアンス

    Oracleは強化されたデータベースセキュリティを提供します。

    ユーザー認証は、場所、ユーザー名、およびパスワードに加えてグローバルな役割を指定することにより、Oracleで実行されます。 Oracleでは、ユーザー認証は、データベース認証、外部認証、プロキシ認証など、さまざまな認証方法で実行されます。

    長い間、MariaDBまたはMySQLでは役割を利用できませんでした。 MariaDBは、MySQL 8.0に登場した後、バージョン10.2でロールを追加しました。

    一般的なOracleDBセットアップで頻繁に使用されるオプションであるロールは、MariaDBで簡単に変換できるため、単一ユーザーの権限調整に時間を浪費する必要はありません。

    ユーザー、パスワードの作成、変更:すべてOracleDBと同様に機能します。

    エンタープライズセキュリティコンプライアンス標準を達成するために、MariaDBは次のような組み込み機能を提供します:

    • 監査プラグイン
    • 保存データの暗号化
    • 証明書、TSS接続
    • PAMプラグイン

    監査プラグインのオファー Oracleで利用可能な一種のきめ細かい監査(FGA)またはAUDISQL。同じ機能セットを提供するわけではありませんが、通常、セキュリティコンプライアンス監査を満たすには十分です。

    保存データの暗号化 保存データの暗号化は、HIPAAやPCIDSSなどのセキュリティ規制の要件になる可能性があります。このような暗号化は、複数のレベルで実装できます。ファイルが保存されているディスク全体を暗号化できます。 MySQLまたはMariaDBの最新バージョンで利用可能な機能を使用して、MySQLデータベースのみを暗号化できます。暗号化をアプリケーションに実装して、データベースに保存する前にデータを暗号化することもできます。すべてのオプションには長所と短所があります。ディスク暗号化は、ディスクが物理的に盗まれた場合にのみ役立ちますが、実行中のデータベースサーバーではファイルは暗号化されません。

    PAMプラグイン LDAP設定を使用してロギング機能をタイトなユーザーアカウントに拡張します。実際、LDAPとOracleデータベースの統合よりもセットアップがはるかに簡単だと思います。

    レプリケーションとHA

    MariaDBは、レプリケーションのシンプルさと柔軟性でよく知られています。デフォルトでは、スタンバイ/スレーブサーバーに対して読み取りまたは書き込みを行うことができます。幸い、MySQL 10.Xバージョンは、グローバルトランザクションID、イベントチェックサム、マルチスレッドスレーブ、クラッシュセーフなスレーブ/マスターなど、レプリケーションをさらに改善するための多くの重要な機能強化をもたらしました。 MySQLレプリケーションの読み取りと書き込みに慣れているDBAは、その兄であるOracleからの同様のまたはさらに単純なソリューションを期待します。残念ながら、デフォルトではありません。

    Oracleの標準のフィジカル・スタンバイの実装は、読み取り/書き込み操作のために閉じられています。実際、Oracleは論理的なバリエーションを提供しますが、多くの制限があり、HA用に設計されていません。この問題の解決策は、Active Data Guardと呼ばれる追加の有料機能です。これを使用して、REDOログを適用しながらスタンバイからデータを読み取ることができます。

    Active Data Guardは、Oracle Database Enterprise Edition(最高コストのライセンス)でのみ利用可能なOracleの無料のDataGuard災害復旧ソフトウェアに対する有料のアドオンソリューションです。プライマリデータベースから送信された変更を継続的に適用しながら、読み取り専用アクセスを提供します。アクティブなスタンバイデータベースとして、プライマリデータベースから読み取りクエリ、レポート、および増分バックアップをオフロードするのに役立ちます。この製品のアーキテクチャは、プライマリデータベースで発生する可能性のある障害からスタンバイデータベースを分離できるように設計されています。

    Oracleデータベース12cのエキサイティングな機能と、Oracle DBAが見逃してしまう機能は、データ破損の検証です。 Oracle Data Guardの破損チェックは、データがスタンバイ・データベースにコピーされる前に、データが正確に整列していることを確認するために実行されます。このメカニズムを使用して、プライマリ上のデータブロックをスタンバイデータベースから直接復元することもできます。

    MariaDBは、次のようなさまざまなレプリケーション方法とレプリケーション機能を提供します。

    • 同期
    • 非同期
    • 準同期

    MariaDBレプリケーションの機能セットは豊富です。同期レプリケーションを使用すると、書き込みトランザクションを失うことなくフェイルオーバーを設定できます。非同期レプリケーションの遅延を減らすために、スレーブでの順序どおりの並列レプリケーションを使用することをお勧めします。圧縮できるイベントは、通常はかなりのサイズになる可能性のあるイベントです。クエリイベント(ステートメントベースのレプリケーションのDDLおよびDMLの場合)と行イベント(行ベースのレプリケーションのDMLの場合)です。他の圧縮オプションと同様に、MariaDB圧縮レプリケーションは透過的です。前述のように、プロセス全体は、OracleDataGuardの物理的および論理的なレプリケーションと比較して非常に簡単です。

    PL/SQLおよびデータベースコード

    ここで、難しい部分、PL/SQLに行き着きます。

    レプリケーションとMariaDBを使用したHAが最高の地位を占めています。 OracleはPL/SQLの王様であり、間違いなくそこにあります。

    PL / SQLは、多くの組織でオープンソースの世界に移行する際の主な障害です。しかし、MariaDBはここで諦めません。

    MariaDB 10.3(MariaDB TX 3.0とも呼ばれます)には、SEQUENCE構造、Oracleスタイルのパッケージ、ROWデータ型などの驚くべき新機能が追加されており、移行がはるかに簡単になっています。

    新しいパラメータSQL_MODE=ORACLEを使用すると、MariaDBは、場合に応じて、コードを書き直すことなく、従来のOracle PL/SQLの束を解析できるようになります。

    MariaDBTX3.0のコアOraclePL/ SQL互換性を使用したカスタマーストーリーページで確認できるように、シンガポール開発銀行(DBS)は、ビジネスクリティカルなアプリケーションの半分以上をOracleからわずか12か月で移行できました。 MariaDBへのデータベース。

    新しい互換モードは、次の構文に役立ちます。

    • ループ構文
    • 変数宣言
    • 非ANSIストアドプロシージャコンストラクト
    • カーソル構文
    • ストアドプロシージャパラメータ
    • データ型の継承(%TYPE、%ROWTYPE)
    • PL/SQLスタイルの例外
    • 基本的なSQLタイプの同義語(VARCHAR2、NUMBER、…)

    しかし、古いバージョン10.2を見ると、OracleとMariaDBの間の互換性の一部は以前に次のように表示されていました。

    • 一般的なテーブル式
    • 再帰SQLクエリ
    • Windows関数、NTILETE、RANK、DENESE_RANK。

    ネイティブPL/SQL解析、または場合によってはネイティブOracleプロシージャを直接実行すると、開発コストを大幅に削減できます。

    SQL_MODE =Oracleによって追加されたもう1つの非常に便利な機能は、シーケンスです。 MariaDB Server 10.3でのシーケンスの実装は、SQL:2003標準に準拠しており、Oracleとの構文互換性が含まれています。

    シーケンスを作成するには、createステートメントを使用します:

    CREATE SEQUENCE Sequence_1 
      START WITH 1  
      INCREMENT BY 1;

    作成されたシーケンスは、たとえば次のような挿入で使用できます:

    INSERT INTO database (database_id, database_name) VALUES(Sequence_1.NEXTVAL, 'MariaDB');

    クラスタリングとスケーリング

    MariaDBは、非同期、アクティブ-アクティブ、マルチマスターデータベースクラスターです。

    MariaDBクラスターは、OracleのMySQLクラスターとして知られているものとは異なります-NDB。

    MariaDBクラスターは、Codership(Galera)が提供するマルチマスターレプリケーションプラグインに基づいています。バージョン5.5以降、Galeraテクノロジー(wsrep API)はMariaDBの不可欠な部分です。 Galeraプラグインのアーキテクチャは、認証、レプリケーション、グループ通信フレームワークの3つのコアレイヤーに基づいています。

    認定レイヤーは、書き込みセットを準備し、それらの認定チェックを実行して、それらが適用できることを保証します。

    レプリケーションレイヤーはレプリケーションプロトコルを管理し、総合的な順序付け機能を提供します。

    Group Communication Frameworkは、他のシステムがgcommバックエンドスキーマを介して接続できるようにするプラグインアーキテクチャを実装しています。

    Oracle RACとの主な違いは、各ノードがデータを分離していることです。 Oracle RACは通常、補完的なHAソリューションと誤解されますが、ディスクは通常同じディスクアレイにあります。 MariaDBは、冗長ストレージを提供するだけでなく、専用ファイバーを必要とせずに地理的に配置されたクラスタリングもサポートします。

    バックアップとリカバリ

    Oracleは、ホットバックアップ、バックアップ、インポート、エクスポートなど、多くのバックアップメカニズムを提供しています。

    MySQLとは異なり、MariaDBはmariabackupと呼ばれるホットバックアップ用の外部ツールを提供します。これは、暗号化および圧縮されたテーブルで動作するように設計されたPercona XtraBackupのフォークであり、MariaDBデータベースに推奨されるバックアップ方法です。

    MariaDB Server 10.1ではMariaDB圧縮と保存データ暗号化が導入されましたが、既存のバックアップソリューションはこれらの機能の完全バックアップ機能をサポートしていませんでした。そのため、MariaDBはXtraBackup(バージョン2.3.8)を拡張することを決定し、このソリューションにMariabackupという名前を付けました。

    PerconaとMariabackupは同様の機能を提供しますが、違いに興味がある場合は、ここで見つけることができます。

    MariaDBが提供していないのは、データベースバックアップのリカバリカタログです。幸い、これはClusterControlなどのサードパーティシステムで拡張できます。

    クラウドの互換性

    クラウドインフラストラクチャは、最近ますます人気が高まっています。クラウドVMはエンタープライズグレードのサーバーほど信頼性が高くない場合がありますが、主要なクラウドプロバイダーは、サービスの可用性を高めるためのさまざまなツールを提供しています。 EC2アーキテクチャまたはAmazonRDSのようなDBaaSから選択できます。

    AmazonRDSはMariaDBサーバー10.3をサポートします。 SQL_MODE =Oracleはサポートされていませんが、移行を容易にする一連の機能を見つけることができます。 Amazonクラウドは、モニタリング、バックアップ、マルチA-Zデプロイメントなどの一般的な管理タスクをサポートします。

    もう1つの人気のあるクラウドプロバイダーであるGoogleCloudも、最新のMariaDBバージョンを提供しています。コンテナまたはBintamiライブラリ認定のVMイメージとしてデプロイできます。

    Azureは、MariaDBの独自の実装も提供します。これはAmazonRDSに似ていますが、バックアップ、スケーリング、高可用性の構築があります。保証されたSLAは99.99%で、これは1か月あたり4分23秒のダウンタイムに相当します。

    その他の考慮事項

    この記事の冒頭で述べたように、OracleからMariaDBへの移行は多段階のプロセスです。一般的なアドバイスの1つは、すべてのデータベースを一度に移行しようとしないことです。ほとんどのシナリオでは、移行を小さなバッチに分割することが最善のアプローチです。

    テクノロジーに慣れていない場合は、試してみてください。プラットフォームに自信を持って、長所と短所を知っておく必要があります。テストは自信を築き、移行に関する意思決定に影響を与えます。

    最も困難なPL/SQL移行プロセスに役立つ興味深いツールがあります。非常に興味深いのは、dbconvert、AWS SchemaConversionTool-AWSドキュメントです。

    何年にもわたって、MariaDBは、重要で複雑なデータトランザクションシステムを実行するためのエンタープライズサポートと成熟度を獲得してきました。最近のバージョンでは、MariaDBにSQL_Mode =Oracleとの互換性などの優れた新機能が追加され、移行プロセスがこれまでになく簡単になりました。

    最後に、3月12日にウェビナーに参加して、OracleデータベースからMariaDBへの移行に関して知っておく必要のあるすべてのことを説明します。


    1. ソフトウェアレビュー–MSSQLのステラ修復

    2. ORDER BY DATEは、最初にNULLSを表示し、次に最新の日付を表示します

    3. MariaDBの日付形式の文字列

    4. 収集方法:OracleデータベースのPRIORおよびNEXT関数