9 MySQLデータベースへのインストール

MySQLデータベースにOracle GoldenGateインストールするための要件と方法について説明します。

トピック:

9.1 MySQLデータベースのディスク要件

次の説明に従って、ディスク空き領域を割り当てます。

  • Oracle GoldenGateダウンロード・ファイルのサイズを確認するには、Oracle Software Delivery Cloudから選択したビルドをダウンロードする前に、「サイズ」列を表示します。表示される値は、圧縮形式でのファイルのサイズです。ディスクで解凍した後のOracle GoldenGateインストール・ディレクトリのサイズは、それより大幅に大きくなります。

  • クラスタ環境にOracle GoldenGateをインストールするには、すべてのクラスタ・ノードで使用可能な共有ファイル・システムにOracle GoldenGateのバイナリとファイルをOracleユーザーとしてインストールします。「MySQLクラスタ用の設定」を参照してください。

  • Oracle GoldenGate証跡(作業用データが含まれているファイル)をホストするシステムに追加で1GBのディスク領域を割り当てます。証跡によって消費される領域は処理されるデータ量に応じて異なるため、これとは多少異なる容量が必要となる場合があります。『Oracle GoldenGateの管理』で証跡のサイズ設定のガイドラインを参照してください。

9.1.1 一時ディスクの要件

デフォルトでは、Oracle GoldenGateによってOracle GoldenGateインストール・ディレクトリのdirtmpサブディレクトリにディスクにスワップされるデータが保持されます。キャッシュ・マネージャは、ファイル・システムのすべての空き容量を使用可能とみなします。このディレクトリは、トランザクションのサイズの増加に伴ってトランザクションの量が増加すると、すぐに一杯になります。I/O競合とディスク関連のExtractの失敗を防ぐには、ディスクをこのディレクトリ専用にします。CACHEMGRパラメータのCACHEDIRECTORYオプションを使用して、このディレクトリに名前とサイズを割り当てることができます。CACHEMGRCACHESIZEオプションにより、トランザクション・データのキャッシュに使用できる仮想メモリー量(キャッシュ・サイズ)の弱い制限が設定されます。これらのオプションのデフォルト値およびシステム調整が必要な場合の詳しい説明については、『Oracle GoldenGateリファレンス』を参照してください。

9.2 データベース・キャラクタ・セット

MySQLには、ユーザーが異なるレベルで異なるキャラクタ・セットを指定できる機能があります。

レベル

データベース

create database test charset utf8;

create table test( id int, name char(100)) charset utf8;

create table test ( id int, name1 char(100) charset gbk, name2 char(100) charset utf8));

サポートの制限

  • データベースのキャラクタ・セットをutf8mb4/utf8に指定すると、デフォルトの照合はutf8mb4_unicode_ci/utf8_general_ciになります。collation_server=utf8mb4_binを指定すると、データベースはデータをバイナリとして解釈します。たとえば、CHAR列の長さを4に指定した場合、4バイトを超えるデータを挿入しようとすると、データが長すぎることがターゲット・データベースから警告されますが、返されるバイト長は16 (utf8mb4の場合)になります。これはデータベースの制限のため、Oracle GoldenGateではバイナリ照合をサポートしていません。この問題を解決するには、キャラクタ・セットがutf8mb4およびcollation_server=utf8_bin (UTF-8)に設定されている場合に、collation_server=utf8mb4_binを指定します。

  • 次のキャラクタ・セットはサポートされていません

    • armscii8
    • keybcs2
    • utf16le
    • geostd8

9.3 データベース・ストレージ・エンジン

データベース・ストレージ・エンジンの要件は次のとおりです。

  • Oracle GoldenGateでは、ソースMySQLデータベース用にInnoDBストレージ・エンジンがサポートされます。

  • ターゲットMySQLデータベースでは、Oracle GoldenGate ReplicatプロセスはMySQLネイティブAPIを介してデータベースに接続します。

  • NDBクラスタ・エンジンはサポートされています。

9.4 サポートされるバージョン

Oracle GoldenGate for MySQLは、MySQL 5.6および5.7、Amazon Aurora MySQL 5.7、Maria DB 10.2の取得と配信をサポートしています。

リモートの取得のサポート対象は、MySQL、Amazon Relational Database Service for MySQLおよびAmazon Aurora Databaseです。

DDLレプリケーションは、MySQL 5.7.10以降でサポートされます。

9.5 MySQLのOracle GoldenGateプロセス用データベース・ユーザー

Oracle GoldenGateプロセスのデータベース・ユーザーの要件は次のとおりです。

  • Oracle GoldenGate専用のデータベース・ユーザーを作成します。データベースに接続する必要のあるすべてのOracle GoldenGateプロセスに対して同じユーザーでもかまいません。

    • Extract (ソース・データベース)

    • Replicat (ターゲット・データベース)

    • DEFGEN (ソース・データベースまたはターゲット・データベース)

  • DDLを使用するには、MySQLユーザーがデータベース・プラグインをインストールする権限を持っている必要があります。さらに、ソース・ユーザーに対する挿入権限が必要です。

  • データのセキュリティを維持したり、Oracle GoldenGateの処理を的確に監視したりするには、他のユーザー、アプリケーションまたはプロセスに対してOracle GoldenGateデータベース・ユーザーでのログインまたは操作を許可しないでください。

  • データベース・ユーザーを記録します。それらをOracle GoldenGateパラメータ・ファイルのUSERIDパラメータを使用して指定する必要があります。

  • Oracle GoldenGateユーザーは、INFORMATION_SCHEMAデータベースに読取りアクセスできる必要があります。

  • Oracle GoldenGateユーザーには、次の権限が必要です。

    表9-1 Oracle GoldenGateデータベース・ユーザーのMySQLに対する権限

    権限 Extract Replicat

    ターゲット表のINSERTUPDATEDELETE

    X

    CREATE TABLE

    X脚注1

    EXECUTE

    X脚注2

    SELECT ANY TABLE

    または

    SELECT ON database.table

    X

    X

    脚注1

    チェックポイント表機能を使用する場合(推奨)

    脚注2

    ストアド・プロシージャを実行する

  • バイナリ・ログ・イベントをキャプチャするためには、管理者がExtractユーザーに次の権限を指定する必要があります。

    • MySQL構成ファイル(my.cnf)があるディレクトリの読取り権限と実行権限

    • MySQL構成ファイル(my.cnf)の読取り権限

    • バイナリ・ログがあるディレクトリの読取り権限と実行権限

    • tmpディレクトリの読取り権限と実行権限

9.6 バイナリおよびファイルをインストールするクラスタ内の場所の決定

Oracle GoldenGateは、MySQLクラスタの基礎となるNDBクラスタ分散データベース・システム、またはフェイルオーバーの自動化が可能な任意のクラスタ管理ソリューションで使用できます。

最低でも、なんらかのOracle GoldenGateオブジェクトを共有記憶域にインストールする必要があります。クラスタのどのノードからも独立していて、すべてのノードから使用可能なクラスタ対応の共有記憶域を選択します。

ベスト・プラクティスは、Oracle GoldenGate全体を共有記憶域にインストールすることです。これによって、パラメータ・ファイルを変更せずにどのノードからもOracle GoldenGateプロセスを起動できます。アクティブ・ノードに障害が発生した場合、インストール・ディレクトリに保持されている処理のチェックポイントを使用して、別のノードでプロセスをただちに起動できます。

共有記憶域ではなく、各ノードにOracle GoldenGateバイナリとファイルをインストールする場合、次の条件を満たす必要があります。

  • Oracle GoldenGateインストールの場所が、すべてのノードで同じパスである必要があります。

  • 最低でも次のディレクトリを共有記憶域にインストールし、Oracle GoldenGateのリカバリ要件をサポートします。各ノードのインストール・ディレクトリから、それらに対してシンボリック・リンクを作成できます。

    • dirchk

    • dirdat

    これらのディレクトリは、インストール時にCREATE SUBDIRSを発行して作成されるディレクトリの一部です。

  • dirprmディレクトリのパラメータ・ファイルは、共有ドライブに配置されていない場合、すべてのノードで同一である必要があります。ノードごとに異なる環境設定を解決するために、ローカルManagerプロセスから継承するか、ノード固有のOracle GoldenGateマクロ・ファイルを参照するよう環境設定を設定できます。このシナリオを実現するのは難しいため、パラメータ・ファイルを共有ドライブに格納することで内在する問題を回避できます。

Oracle GoldenGateのインストール後に、「クラスタへの統合」を参照してください。

9.7 MySQLクラスタ用の設定

次の手順は、MySQLクラスタに対して動作するためのOracle GoldenGateの設定方法を示しています。

9.7.1 クラスタでの一般的な要件

次に示すのは一般的な適用手順のため、特定のクラスタ・システムには適用されない場合があります。

Oracle GoldenGateのクラスタへの統合時には次の要件を満たす必要があります。

  1. Oracle GoldenGate Managerプロセス(Managerのみ)を、他のアプリケーションと同様にクラスタ管理対象リソースとして登録します。Managerは、他のすべてのプロセスを管理する親プロセスであるため、Managerのみがクラスタ管理ソフトウェアを起動および停止するOracle GoldenGateプロセスです。

  2. クラスタで仮想IPアドレスを使用する場合、Managerプロセス用に使用可能な固定IPアドレスを取得する必要があります。VIPは、パブリック・サブネット上の使用可能なIPアドレスである必要があり、DHCPを介して決定されません。Extractデータ・ポンプのパラメータ・ファイルで、リモートManagerのVIPをRMTHOSTパラメータの入力値として指定します。Managerにアクセスする他のOracle GoldenGate製品もVIPを使用する必要があります。

  3. クラスタ内のすべてのノードでシステム・クロックが同期していることを確認します。クロックはExtractが実行されるシステムのクロックと同期している必要があります。Oracle GoldenGateでは、ローカル・システムの時間とコミットのタイムスタンプを比較して、重大な決定をします。システム・クロックの同期については、システム管理者に問い合せてください。

  4. Managerを構成する際、AUTOSTARTおよびAUTORESTARTパラメータを追加して、Managerでレプリケーション・プロセスを自動的に起動するようにします。必要に応じて、Oracle GoldenGateユーザー・インタフェース内からExtract、Replicatおよび他のOracle GoldenGateプロセスを制御できます。

  5. 1つのノードのみで共有ドライブをマウントします。これによって、他のノードでプロセスが起動されなくなります。すべてのノードで同じマウント・ポイントを使用します。

  6. Oracle GoldenGateを環境に合せて適切に構成します。

9.7.2 ステップ1: MySQL Clusterのインストール

次のMySQLドキュメントInstalling MySQL Cluster on Linuxの説明に従って、MySQL Clusterをインストールします。

https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux.html

注意:

Oracle GoldenGateではMySQL Cluster/NDBストレージ・モードのみがサポートされるようになりました。したがって、次の設定が構成ファイル(たとえばmy.cnf)で必要となります。

default-storage-engine=ndbcluster

MySQLデータベースおよび表を作成した後、ステータスをチェックして正しいエンジンとデータ型が次の例のように使用されていることを確認できます。

show table status where Name='te'; 

9.7.3 ステップ2: MySQL Clusterの起動

Oracle GoldenGateをMySQL Clusterに対して使用するには、NDB-LOG-UPDATE-AS-WRITEおよびNDB-LOG-UPDATED-ONLYの各パラメータをそれぞれのMySQLデータベース構成ファイル(my.cnf/my.ini)内か、mysqldコマンドを使用して無効にする必要があります。Extractは、たとえば次のような、無効にされたオプションがすでに有効な時点に配置されている必要があります。

mysqld --default-file=/rdbms/mysql/myssqlcluster/my_cluster/conf/my.cnf -uroot --datadir=/rdbms/mysql/myssqlcluster/my_cluster/mysqld_data--ndbcluster --ndb-log-update-as-write=0 --ndb-log-updated-only=0 --default-storage-engine=ndbcluster --max_allowed_packet=1G

MySQL用の--ndb-log-updated-onlyオプションは次の操作を実行します。

  • 行を完全に記録します。

  • 更新されている列データのみを記録します。つまり、値が実際に変更されたかどうかに関係なく、値が設定されている列データです。これは、デフォルトの動作です。行全体を記録する必要がある場合は、--ndb-log-updated-onlyを0またはOFFに設定すると可能になります。

--ndb-log-update-as-writeオプションは、変更されたデータをUPDATE操作として記録します。

9.7.4 ステップ3: Oracle GoldenGateのインストール

Oracle GoldenGateをインストールします。すべてのプラットフォームへのインストールを参照してください。

  クラスタ環境をサポートするには、すべてのクラスタ・ノードからアクセスできる共有ファイル・システム上にOracle GoldenGateをインストールします。

9.8 MySQLへのインストール

MySQLシステムにOracle GoldenGateをインストールします。「すべてのプラットフォームへのインストール」を参照してください。