オンプレ環境のSQL Server開発機からAWS Auroraにマイグレーションした際、DMS(Database Migration Service)を使って見たので、ハマった処をメモ。
https://aws.amazon.com/jp/dms/
※仕様をよく読んだら書いてあるのかもしれない。
【移設方法】
オンプレのSQLServerは、DMSからアクセスが出来ないネットワークにある為、セキュリティを弄らずに移設をする方法を考えました。
結果的に、[開発機] – [RDS for SQL Server] – [DMS] – [RDS for Aurora]
と余計なSQLServerを挟んでいます。
【移行時の注意点】
・DMSはスキーマ単位になりますが、Auroraはスキーマの概念がありません。
SQLServerで
[db_name1].[dbo].[table_name]
[db_name2].[dbo].[table_name]
は別テーブルとして扱われますが、Auroraでは[dbo].[table_name]と単一になります。
その為、事前にスキーマを[ALTER SCHEMA db_name1 TRANSFER dbo.table_name]等のコマンドで変更しておく必要があります。
対象は、一般テーブル、システムテーブルです
また、ストアドもスキーマを変更する必要があります。
こちらは変更のコマンドが解らなかったので、SSMSでストアドのCreate文作成 → dboの部分をdb_nameに変更して新規作成を行いました。
・LOBサイズ
DMSのLOBサイズの上限は、デフォルトで24KBになっています。
大きめのデータが格納されている場合、この上限に引っかかる場合がありますので、適時変更を行ってください。
分からなくても、1024KBぐらいあれば十分かと。
・移行元がSQLServerの場合、継続的なレプリケートが出来ない。
DMSの強みである継続的レプリケート。
これにより、大容量のデータベースでもダウンタイムを低減させる事が出来ます。
が、現時点でSQLServerからAuroraへは、レプリケートが行いません。
・IDENTITIYはAutoIncrimentにならない
・datetimeoffset(7) → varchar(34)
この辺はエンジンの違いが出てきます。
追加のデータが入らないうちに、Alter Tableで変更しておきましょう。