このエントリは Oracle Database or GoldenGate Advent Calendar 2018 Day 4 の記事です!
JPOUGのOracle Database or GoldenGate Advent Calendar 2018 4日目担当 ch0c0bana0です
気づけば担当の日になっていました
朝起きてふとJPOUGってなんや、と思いましたけどJaPan Oracle User Groupの略かなんかですかね?
昨日はitedgeblogさんの『[Oracle] My Oracle Supportのナレッジ記事がWeb検索可能になった話』でした
My Oracle SupportがWebから検索なるようになったのめっちゃ便利ですよねー
みんなでバシバシ検索してMOSのDocumentが検索上位に来るようになったらさらに便利になるかも
さて、本エントリではGoldenGateユーザーを増やすため、基本的なところから解説していきたいとおもいます
ちなみにQiita内を『GoldenGate』で検索したら17件しかヒットしませんでした
このAdvent Calendar期間中に30件くらいになればいいなあ
では本題
##本エントリの前置き
1.GoldenGate超初心者向けの記事を意識して書いています
2.なるべく責任を持って書きますが、この発言は個人の見解であり、所属する組織の公式見解ではありません
3.指摘事項があればどんどんおよせください
4.個人ブログで書いても良かったのですが、なるべく人目について方が布教活動になると思ってQiitaにしました
#GoldenGate布教活動① ~GoldenGateの基本のキ~
『Oracle® Fusion Middleware Oracle GoldenGateの理解 12c (12.3.0.1)』を参照しながらOracle GoldenGateとはなにか、GoldenGateを使用する上での基本のキについて軽く記載したいと思います
##GoldenGateとは
GoldenGateとはデータベース間でのデータを移行する場合に使用するデータレプリケーション製品です
Oracle Database間のデータレプリケーションだけではなく、異種データベース間でのデータレプリケーションも行うことができます
また最近ではGoldenGate for Bigdataと組み合わせることで、MongoDBやKafkaといったBigDataで使用されるようなターゲットにもデータをレプリケーションすることが可能になっています
##なぜGoldenGateを使うか
例えば異種データベースが混在するシステムにおいて運用コスト低減のためDatabaseをOracleに統一する場合や、新しいバージョンのOracle Database構築のためにデータ移行が必要な場合があります
このような場合にGoldenGateを使用することで、データ移行に伴うシステムの停止時間を極小化が可能になり、移行データの変換やフィルタリングを効率的に行うことができます
また近年ではオンプレミス環境からクラウド環境への移行や、ビックデータ活用のためのデータ集約に使用されるなど、データレプリケーション製品としてかなり幅広く活用されるようになってきました
##GoldenGateのキーワードと主なプロセス
####ソースデータベース
移行元のデータベース
OracleだったりOracleじゃなかったり
####ターゲットデータベース
移行先のデータベース
こちらもOracleだったりOracleじゃなかったり
最近ではKafkaとかMongoの場合も
####GGSCI
GoldenGate独自のコマンドラインインターフェイス
GoldenGate Homeのggsciコマンドを実行することで起動可能
ここからプロセスの起動停止を行ったり、各プロセスのパラメータファイルを編集したりする
####Trail(証跡)ファイル
ソースから読み取ったDMLとかDDLの内容が記載されているGoldenGate独自のファイル
ソースデータベースから作成したこのファイルを、移行元と移行先でやり取りしてDMLやDDLをターゲットデータベースに適用する
####Managerプロセス
GoldenGateの親玉(?)プロセス
GGSCIを使う場合や、GoldenGateが作成する諸々のファイルをメンテナンスする役割などを担う
また後述のGoldenGateの中核処理を担うプロセスを管理・監視する
####Captureプロセス
ソースデータベースからDMLやDDLを読み取って、Trail(証跡)ファイルという独自のファイルに書き出すプロセス
Integrated(統合)モードとClassic(非統合)モードがある
データのフィルタリングやマッピングデータ変換ができるし、Trailファイルの暗号化とかもできる
専用のパラメータファイルが必要になる
####Datapumpプロセス
Captureプロセスが出力したTrailファイルをターゲットのサーバーに転送するプロセス
Trailファイル内のデータをフィルタリングやマッピング、データ変換しながら転送するモードと、何もせず単純転送するパススルー・モードがある
Datapumpプロセスを構成せずにTrailファイルをNFSとかに書き出してターゲット側に連携する方法もあるが、ほとんどのシステムにおいて構成を推奨されているプロセス
ネットワーク転送の役割をDatapumpに切り出すことで、運用とか障害時の切り分けも容易になる
餅は餅屋だということ
専用のパラメータファイルが必要になる
####Collectorプロセス
Datapumpが送ってきたTrailファイルを受け取る(実際には受け取りと/書き込みを行う)プロセス
GoldenGateのプロセスで唯一明示的にパラメータファイルを作成したり起動したりしないプロセス
Managerから自動起動されるし、障害時も自動復旧する
専用のパラメータファイルが不要
####Replicatプロセス
ソースから送られてきたTrailファイルを受け取り、読み込んだあとにターゲットデータベースに適用を行うプロセス
パラレル処理が可能なIntegrated(統合)モードとシリアル処理OnlyなClassc(非統合)モードがある
データのフィルタリングやマッピング、データ変換ができる
##はやいけどまとめ
ざっとしか書いていないけど
1.ソースデータベースの更新をCaptureプロセスが読み取る
2.CaptureプロセスがTrailファイルを書き出す
3.DatapumpプロセスがTrailファイルをソースに送る
4.CollectorプロセスがTrailファイルを受け取る
5.ReplicatがTrailファイルを読み込んでターゲットデータベースに適用する
上の動作を頭に入れておけば、本当にざっくりしたGoldenGateのアーキテクチャがイメージできます
より具体的な図としては『Oracle GoldenGate アーキテクチャと基本機能』のスライド7が参考になるので参照してください!
次のエントリでは実際にGoldenGateをインストールして、プロセス作成、データ伝播までやっていきたいと思います^^
5日目以降もよろしくおねがいします!