ここからは、Oracle DBからMySQLへの移行に際して機能関連の質問で特に多い「バックアップ」機能に対してのみ、以下の分類でMySQLの機能を説明します。
Oracle DBとMySQLについて、物理バックアップかつオンラインバックアップを実施する方法の比較を実施します(論理バックアップは、ここでは考慮しません)。
Oracle DB
Oracle DBには、主に下記2つの方法があります。
2.ではまず、下記コマンドでアーカイブログモードか確認します。
SQL> archive log list ;
次に、下記コマンドを実行します。
SQL> ALTER DATABASE Begin Backup ;
続いて、OSコマンドなどでデータファイルをコピーします。ストレージ装置のコピー機能を使用すれば、使用ブロックのみの差分コピーが可能です。一時ファイルは、コピーしません。
この後、下記コマンドを実行します。
SQL> ALTER DATABASE End Backup ;
アーカイブREDOログファイルをバックアップします。
SQL> ALTER SYSTEM archive log current
制御ファイルのバックアップを行います(バイナリファイル)。
SQL> ALTER DATABASE backup controlfile to '<パス名>' ;
制御ファイルのバックアップを行います(トレースファイル)。
SQL> ALTER DATABASE backup controlfile to trace ;
最後に、OSコマンドで初期化パラメーターファイルなどをバックアップします。
MySQL
MySQLには、主に下記2つの方法があります。
Oracle DBとMySQLについて、オフラインで物理バックアップを取得する方法を比較します(論理バックアップは、ここでは考慮しません)。
Oracle DB
Oracle DBには、主に下記2つの方法があります。
1.ではまず、正常にデータベースを停止し、下記コマンドを使って、マウント状態で起動します。
SQL> STARTUP MOUNT;
次に、下記コマンドでRMANを起動します。
$rman target /
続いて、下記コマンドを実行します。
RMAN>CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '<バックアップ出力先/出力フォーマット(ex:%U)>';
下記コマンドでデータファイル、アーカイブREDOログファイル、制御ファイル、SPFILEをバックアップします。
RMAN>BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
OSコマンドなどで初期化パラメータファイルなどをバックアップし、下記コマンドでOPEN状態に変更します。
SQL>ALTER DATABASE OPEN;
2.ではまず、正常にデータベースを停止し、OSコマンドでデータファイル、一時ファイル、REDOログファイル、アーカイブREDOログファイル、制御ファイル、初期化パラメータファイルなどをバックアップ先にコピーします。
その後、データベースを起動します(参考)。
MySQL
MySQLでは、OSコマンドなどでコピーする方法を使います。
まず、下記コマンドでMySQLサーバを停止します。
# mysqladmin --user=root --password=root --socket=/var/lib/mysql/mysql.sock shutdown
次に、OSコマンドでファイルをバックアップ先にコピーします。
# cp -rp /var/lib/mysql /backup/mysql-20170802
MySQLサーバを起動します。
# mysqld --user=root &
Oracle DBとMySQLについて、論理バックアップかつオンラインバックアップを実施する方法を比較します。
Oracle DB
Oracle DBには、主に下記2つの方法があります。
1.のexpは、Oracle DB 5.1で実装された標準ツールです。多くのシステムでの使用実績がありますが、OracleDB11.1からは原則としてサポートされなくなりました(参考)。
2.のexpdpは、Oracle DB 10.1で実装された標準ツールです。expと比較して、パフォーマンスおよび管理性が向上しています(参考)。
MySQL
MySQLは、主に下記2つの方法があります。
1.のmysqldumpは、MySQL 3.23で実装された標準ツールです。多くのシステムでの使用実績がありますが、バックアップ性能が物理バックアップと比較すると大きく劣ることに注意してください(参考)。
2.のmysqlpumpは、MySQL 5.7.8で実装された標準ツールです。バックアップが並列化され大幅に性能が、向上しています(参考)。
今回は、移行設計時に考慮しておきたい、Oracle DBとMySQLの機能比較概要およびバックアップ機能比較について解説しました。本記事を参考に移行設計時に十分ヒアリングを実施してください。
なお今回をもちまして、本連載は終了です。連載では、商用データベース管理システム(以下、DBMS)からOSSデータベースへの移行を検討する企業に向け、「Oracle DBから、MySQLへ移行する」際に必要となる、技術的な要素と具体的な方法をまとめて8回にわたって紹介して参りました。
整合性やトランザクションを確実に管理し、トランザクション単位でデータの整合性を担保できる旧来のDBMSが持つ重要性も再認識されている中、商用製品からOSSへの移行を検討し、それを実践する企業が一層増えていくと筆者は考えています。本連載が皆さまの移行設計の一助となれば幸いです。長い間、お付き合いいただき誠にありがとうございました。
今回お伝えした内容以外の最新情報については、「SCSK MySQLエンジニアブログ」でも掲載しています。併せて参照してみてください。
SCSK株式会社 ITマネジメント事業部門 基盤インテグレーション事業本部 通信基盤インテグレーション部所属。東京都出身 東京都在住。MySQLやMySQL Clusterのコンサルティング、設計構築、プリセールスなどを行っていたが、最近は営業やマーケティング活動もカバーするようになり、技術が分かる営業として日本国内を縦断中。
SCSK株式会社所属。神奈川県横浜市在住。1983年よりIT業界へ。その間Oracleを中心とした、DB関連作業を多数経験。DBの移行を得意とする。趣味は自己チューニング(水泳、マラソン、筋トレ)及び愛犬アポロ(チワワ)と遊ぶこと。
SCSK株式会社 ITマネジメント事業部門 基盤インテグレーション事業本部 通信基盤インテグレーション部所属。神奈川県川崎市在住。入社当初よりデータベースの設計構築や技術サポート業務に従事。MySQLを中心にしつつもOracle Database、Oracle RACなどの構築にも携わる。趣味はスノーボード、スキューバダイビング、海外旅行など。
Copyright © ITmedia, Inc. All Rights Reserved.