OpManager ナレッジベース

バックアップが取得できない。(Unknown column 'POLLID' in 'field list')


【現象/要望】
「Unknown column 'POLLID' in 'field list'」というエラーが発生し、バックアップが取得できない。(MySQL)
※下記修正パッチは適用済み。
https://www.manageengine.jp/support/kb/OpManager/?p=3227

[11-15-2015]|[19:04:14:963]|[SEVERE] :
jdbc.BackupException: Error writing data to file.
at jdbc.BackupDB.dumpDataToFile(BackupDB.java:157)
at jdbc.AbstractBackupDB.backupDB(AbstractBackupDB.java:89)
at jdbc.AbstractBackupDB.doBackup(AbstractBackupDB.java:450)
at jdbc.BackUpImpl.backupDB(BackUpImpl.java:81)
at jdbc.BackUpImpl.main(BackUpImpl.java:219)
Caused by: java.util.concurrent.ExecutionException: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'POLLID' in 'field list'
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at jdbc.BackupDB.dumpDataToFile(BackupDB.java:154)
... 4 more
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'POLLID' in 'field list'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)
at jdbc.BackupDB$BackupDataThread.dumpDataAsPgSqlFormat(BackupDB.java:459)
at jdbc.BackupDB$BackupDataThread.dumpData(BackupDB.java:255)
at jdbc.BackupDB$BackupDataThread.call(BackupDB.java:220)
at jdbc.BackupDB$BackupDataThread.call(BackupDB.java:191)
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)

[11-15-2015]|[19:04:14:963]|[FINE] : Backup finished on : 11-15-2015 at 19:04:14:963
[11-15-2015]|[19:04:14:963]|[FINE] : ******************* Backup DB Completed ***********************

【原因】
アップグレードに失敗している可能性がございます。

【解決方法】
以下の手順を実施します。

※以下の手順実施前に、不慮の事故に備え以下のナレッジをご参照の上、
バックアップの取得をお願い致します。
https://www.manageengine.jp/support/kb/OpManager/?p=69

手順)
1. OpManagerサービスを停止。
2. コマンドプロンプトを管理者として起動。
3. OpManagerインストールディレクトリ/binに移動。
4. startMySQL.batを実行。
5. 別のコマンドプロンプトを管理者として起動し、インストールディレクトリ/mysql/binに移動。

6. 以下のコマンドを実行。
mysql -u root -P 13306 opmanagerdb

7. 次のクエリを実行。
select ARCHIVETABLENAME from metatable where LOOKUPTABLENAME='Event';

以下のように表示されます。
+---------------------+
| ARCHIVETABLENAME |
+---------------------+
| Event_2015_12_07_09 |
| Event_2015_12_04_22 |
| Event_2015_12_27_16 |
+---------------------+

表示されたテーブル名をメモします。
例)
Event_2015_12_07_09
Event_2015_12_04_22
Event_2015_12_27_16 等

8. 次のクエリを実行します。
desc Event_<日付>;

例)
desc Event_2015_12_07_09;
desc Event_2015_12_04_22;
desc Event_2015_12_27_16;

念のため、実行結果をテキストファイルにコピーし、
問題が解決しなかった場合に送付していただけますでしょうか。

9. 上記手順8のクエリで「Field」カラムに「POLLID」がないテーブルをメモします。
例)
Event_2015_12_07_09
Event_2015_12_04_22

10. 「POLLID」がないテーブルに対し、次のクエリを実行します。
ALTER TABLE Event_<日付> ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL ;

例)
ALTER TABLE Event_2015_12_07_09 ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL ;
ALTER TABLE Event_2015_12_04_22 ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL ;

11. 手順10のクエリ後のテーブルの状態を確認するため、再度手順8と同様のクエリを実行します。
desc Event_<日付>;

例)
desc Event_2015_12_07_09;
desc Event_2015_12_04_22;
desc Event_2015_12_27_16;

念のため、実行結果をテキストファイルにコピーし、
問題が解決しなかった場合に送付していただけますでしょうか。

12. 以下のクエリを実行します。
desc Alert;
desc Event;

「Field」カラムに「POLLID」がないテーブルを確認します。
※以下のようなエントリがある場合、手順13は実行する必要はございません。

+------------------+--------------+------+-----+---------+-------+
| Field      | Type     | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
(前省略)
| POLLID     | bigint(20)  | NO  |   | -1   |    |
+------------------+--------------+------+-----+---------+-------+

13. 「POLLID」がないテーブルに対し、次のクエリを実行します。
Alert テーブルに「POLLID」カラムがない場合)
ALTER TABLE Alert ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL;

Event テーブルに「POLLID」カラムがない場合)
ALTER TABLE Event ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL;

14. \qでデータベースの接続を切断。
15. インストールディレクトリ/binに移動。
16. stopMySQL.batを実行。

17. タスクマネージャにてmysqld-ntプロセスが停止したことを確認。

18. 以下の手順でデバッグパッチを適用します。

デバッグパッチ適用手順)

  1. OpManagerを停止していることを確認します。
    mysqld-nt, java, wrapperプロセスが残存していないことを確認します。
  2. OpManager\logs, OpManager\tomcat\logsフォルダをリネームします。
    ※ログを含むlogsフォルダをリネームすることで事象再現時のみのログを取得可能となります。なお、OpManager起動時に自動で新しいlogsフォルダが作成されます。)
  3. OpManager\classes\jdbcフォルダがあれば、jdbc-old等にリネームします。
  4. Backup_Issue_MySql_to_Pgsql_Debug_11600.zipを展開し、OpManager\フォルダ配下に配置します。
    配置後のパスは以下の通りです。
    OpManager\classes\jdbc\.....
  5. 以下のコマンドを使用し、デバッグモードにてバックアップファイルを取得します。
    BackupDB.bat -targetDB pgsql -threads 1 -debug
  6. コマンドプロンプトに表示されたログとOpManager\backup\Backup_Mysql_<日付等>_11600.txtを送付いただけますでしょうか。
  7. 手順4にて配置したOpManager\classes\jdbcフォルダを削除します。
  8. 手順3にてリネームしたjdbc-oldをjdbcにリネームします。
  9. mysqld-nt, java, wrapperプロセスが残存していないことを確認後、OpManagerを起動します。

19. バックアップを取得します。
正常にバックアップが取得できることを確認します。

取得できなかった場合、以下の資料を送付いただけますでしょうか。
1) 手順8にて取得いただいたクエリ実行結果
2) 手順11にて取得いただいたクエリ実行結果

【対応リリース】 x.x

★-----------------------------------------------------------------------------★
OpManager 製品紹介ページはこちら ↓
https://www.manageengine.jp/products/OpManager/
★-----------------------------------------------------------------------------★