DB移行時にmysqlのデータをPostgreSQLにリストアできない
作成日:2016年6月6日 | 更新日:2017年6月8日
【現象/要望】
下記ナレッジを実施しても、DB移行時にmysqlのデータをPostgreSQLにリストアできない。
http://www.manageengine.jp/support/kb/OpManager/?p=3227
【原因】
過去にSyslogのイベントを格納するテーブルのtextカラムサイズが小さいために
正常にバックアップを取得することができず(バックアップの処理結果はokと表示されるが)、リストアに失敗する事例があります。
ターミナル上のエラー)
jdbc.RestoreException: データのリストアでエラーが発生しました。
at jdbc.RestoreDB.readFileAndRestoreData(RestoreDB.java:151)
at jdbc.AbstractRestoreDB.restoreDB(AbstractRestoreDB.java:99)
at jdbc.AbstractRestoreDB.doRestore(AbstractRestoreDB.java:479)
at jdbc.RestoreBackup.restoreDB(RestoreBackup.java:81)
at jdbc.RestoreBackup.main(RestoreBackup.java:203)
Caused by: java.util.concurrent.ExecutionException: java.lang.Exception: テーブ
ル 'SystemLog_2017_06_08_11' についてリストアに失敗しました:
ERROR: value too long for type character varying(4000)
場所: COPY systemlog_2017_02_27_15, line 6918, column logmessage: "ID=1530 Sou
rce=Microsoft-Windows-User Profiles Service Type=2 Message=レジストリ ファイル..
."
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at jdbc.RestoreDB.readFileAndRestoreData(RestoreDB.java:142)
... 4 more
Caused by: java.lang.Exception: テーブル 'SystemLog_2017_02_27_15' についてリス
トアに失敗しました:
ERROR: value too long for type character varying(4000)
場所: COPY SystemLog_2017_06_08_11, line 6918, column logmessage: "ID=1530 Sou
rce=Microsoft-Windows-User Profiles Service Type=2 Message=レジストリ ファイル..
."
at jdbc.RestoreDB$RestoreData.restoreUsingPgSqlCopyCommand(RestoreDB.jav
a:274)
at jdbc.RestoreDB$RestoreDataThread.call(RestoreDB.java:201)
at jdbc.RestoreDB$RestoreDataThread.call(RestoreDB.java:161)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)続行するには何かキーを押してください . . .
リストアログ)
797130 ID=1325 Source=ASP.NET 4.0.30319.0 Type=1 Message=ハンドルされていない例外が発生し、処理が中止されました。Application ID: /LM/W3SVC/3/ROOT/docotora/v4.4.6Process ID: 26968Exception: System.TypeInitializationExceptionMessage: 'ExtentPlaceholderCreator' のタイプ初期化子が例外をスローしました。StackTrace: 場所 System.Data.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.GetPropagatorResultForPrimitiveType(PrimitiveType primitiveType, PropagatorResult& result) 場所 System.Data.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.Visit(EdmMember node) 場所 System.Data.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.CreateEntitySetPlaceholder(EntitySet entitySet) 場所 System.Data.Mapping.Update.Internal.Propagator.Visit(DbScanExpression node) 場所
【解決方法】
以下の手順を実施します。
手順)
1. MySQLをバンドルしたOpManagerについて
OpManager\conf\data-dictionary.xmlをコピーし別ディレクトリに配置。
2. 添付のフォルダをダウンロード解凍し得られたdata-dictionary.xmlを
OpManager\confディレクトリ直下に配置。
3. 添付のフォルダに含まれていたjdbcフォルダを
OpManager\classesディレクトリ直下に配置(上書き)。
4. 以下のナレッジの通りバックアップおよびリストアを実施。
MySQLからPostgreSQLにDBを変更する方法を教えて欲しい
https://www.manageengine.jp/support/kb/OpManager/?p=3227
注意事項)
手順4のナレッジ内のjdbcフォルダのパッチは使用せず、本ナレッジに添付の以下のパッチをご使用ください。
【対応リリース】 11.6
★-----------------------------------------------------------------------------★
OpManager 製品紹介ページはこちら ↓
https://www.manageengine.jp/products/OpManager/
★-----------------------------------------------------------------------------★