システムの停止時間を最小限に抑えてデータベースの移行を行うには?


Oracle 9iから11gへの移行など、データベースの移行を行う一般的な方法はExport/Import(エクスポート・インポート)方式です。

ただしこの方法には欠点があります。
それは「システムの停止時間が長くなりがち」なことです。

エクスポート・インポート方式の場合は、概ね下記の手順での移行となります。

1. DBの停止
2. 旧DBからExportで全データをdumpファイルへ抽出
3. 新DBへImport
4. 旧DBから新DBへの切り替え
5. 新DBの稼働

この場合はExport開始から新システムの稼働まで、長時間DBを停止する必要があります。これは、Export開始前にDBを停止しないと、Export作業中に発生したトランザクションをExportできず、データの不整合が発生するためです。

一方でエクスポート・インポート方式に加え、レプリケーションツール「DBMoto」の差分レプリケーション機能を併用することで、システムの停止時間をかなり抑えることが可能となります。
エクスポート・インポートと差分レプリケーション機能を併用した場合は概ね下記の手順での移行となります。

1. 旧DBからのExport開始と同時にDBMotoの差分レプリケーションも開始
2. 新DBへImport
3. DBの停止
4. 旧DBから新DBへの切り替え
5. 新DBの稼働

こちらの場合はExportからImportまでの処理の間にDBを停止させることなく、その間に発生した新たなトランザクションはDBMotoの差分レプリケーションにて転送を行うことが可能です。

これにより、DBの停止する期間は事実上切り替え作業時のみとなり、大幅に短縮することが可能となります。

このようにDBMotoのレプリケーションはDBの移行作業時にもご活用いただけます。

関連したトピックス