web-dev-qa-db-ja.com

レスキューされたサボテンデータベースを新しいバージョンにインポートする

回復しようとしている重要なデータを含む古いサボテンデータベースがあります。古いデータベースには、現在の新しい安定版よりもはるかに少ないフィールドがあります。手動インポートを実行すると、ワイルドエラーが発生します。古いCactidb​​を現在の安定版にどのようにインポートしますか?

mysql> use cacti;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;
+---------------------------+
| Tables_in_cacti           |
+---------------------------+
| cdef                      |
| cdef_items                |
| colors                    |
| data_input                |
| data_input_data           |
| data_input_fields         |
| data_local                |
| data_template             |
| data_template_data        |
| data_template_data_rra    |
| data_template_rrd         |
| graph_local               |
| graph_template_input      |
| graph_template_input_defs |
| graph_templates           |
| graph_templates_gprint    |
| graph_templates_graph     |
| graph_templates_item      |
| graph_tree                |
| graph_tree_items          |
| Host                      |
| Host_graph                |
| Host_snmp_cache           |
| Host_snmp_query           |
| Host_template             |
| Host_template_graph       |
| Host_template_snmp_query  |
| plugin_config             |
| plugin_db_changes         |
| plugin_hooks              |
| plugin_realms             |
| poller                    |
| poller_command            |
| poller_item               |
| poller_output             |
| poller_reindex            |
| poller_time               |
| rra                       |
| rra_cf                    |
| settings                  |
| settings_graphs           |
| settings_tree             |
| snmp_query                |
| snmp_query_graph          |
| snmp_query_graph_rrd      |
| snmp_query_graph_rrd_sv   |
| snmp_query_graph_sv       |
| user_auth                 |
| user_auth_perms           |
| user_auth_realm           |
| user_log                  |
| version                   |
+---------------------------+
52 rows in set (0.00 sec)

mysql> use cacti2;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+--------------------------------+
| Tables_in_cacti2               |
+--------------------------------+
| cdef                           |
| cdef_items                     |
| colors                         |
| data_input                     |
| data_input_data                |
| data_input_fields              |
| data_local                     |
| data_template                  |
| data_template_data             |
| data_template_data_rra         |
| data_template_rrd              |
| graph_local                    |
| graph_template_input           |
| graph_template_input_defs      |
| graph_templates                |
| graph_templates_gprint         |
| graph_templates_graph          |
| graph_templates_item           |
| graph_tree                     |
| graph_tree_items               |
| Host                           |
| Host_graph                     |
| Host_snmp_cache                |
| Host_snmp_query                |
| Host_template                  |
| Host_template_graph            |
| Host_template_snmp_query       |
| plugin_config                  |
| plugin_db_changes              |
| plugin_discover_hosts          |
| plugin_discover_template       |
| plugin_flowview_devices        |
| plugin_flowview_dnscache       |
| plugin_flowview_ports          |
| plugin_flowview_queries        |
| plugin_flowview_schedules      |
| plugin_hooks                   |
| plugin_notification_lists      |
| plugin_realms                  |
| plugin_thold_contacts          |
| plugin_thold_Host_failed       |
| plugin_thold_log               |
| plugin_thold_template_contact  |
| plugin_thold_threshold_contact |
| poller                         |
| poller_command                 |
| poller_item                    |
| poller_output                  |
| poller_reindex                 |
| poller_time                    |
| rra                            |
| rra_cf                         |
| settings                       |
| settings_graphs                |
| settings_tree                  |
| snmp_query                     |
| snmp_query_graph               |
| snmp_query_graph_rrd           |
| snmp_query_graph_rrd_sv        |
| snmp_query_graph_sv            |
| syslog                         |
| syslog_alert                   |
| syslog_facilities              |
| syslog_Host_facilities         |
| syslog_hosts                   |
| syslog_incoming                |
| syslog_logs                    |
| syslog_priorities              |
| syslog_remove                  |
| syslog_removed                 |
| syslog_reports                 |
| syslog_statistics              |
| thold_data                     |
| thold_template                 |
| user_auth                      |
| user_auth_perms                |
| user_auth_realm                |
| user_log                       |
| version                        |
+--------------------------------+
79 rows in set (0.00 sec)
1
user3766148

推奨されるアップグレード手順 は次のように思われます:

  • 既存のデータベースをバックアップする
  • サボテンをアップグレードする
  • 次に、cactiに既存のデータベーススキーマをアップグレードさせます。

新しいデータベースを作成して手動でデータ移行を試みるのではなく。

0
HBruijn

私は最近、壊れた0.8.8cデータベースをCacti1.2.xに正常にアップグレードしました。誰かが何年も前にそれをインストールし、新しいCactiバージョンのcronjobを使用しましたが、古いバージョンのファイルとその中間のDBバージョンを使用していました。


これが私がやった方法です:

  1. 最新のCacti、Spine、および古いサーバーにインストールしたものを新しいサーバーにインストールします
  2. _rsync --ignore-existing cacti/resource/snmp_queries/*.xml cacti/scripts/* newserver:._
  3. 空のDBを作成する
  4. 新しい資格情報で_/etc/spine.conf_と_/etc/cacti/db.php_を編集します
  5. 古いDBをコピーします。_mysqldump < old_db.sql_
  6. _php /var/lib/cacti/cli/repair_database.php_でDBを修復します
  7. _php /var/lib/cacti/cli/upgrade_database.php_でDBをアップグレードします

再度アップグレードした後、DBを修復する必要がある場合があります。 DBをアップグレードした後も、ブラウザでCactiにアクセスする前に、データベースで直接[////]行ったいくつかの変更する設定がありました。そのためには、_SELECT * FROM settings WHERE VALUE LIKE '%/%'_を使用して設定内のすべてのパスを表示できます。

Cactiを古いシステムに手動でインストールした場合、または別のディストリビューションを使用している場合現在、パスが間違っている可能性があります。 UPDATE settings SET VALUE = REPLACE(VALUE, '/var/www/html/cacti', '/usr/share/cacti');で修正します(もちろん、自分に関連するパスに置き換えます)。


私にとって、背骨とrrdtoolへのパスでさえ間違っていました。私はそれらを次のように変更する必要がありました:

_UPDATE settings SET VALUE = '/usr/bin/spine' WHERE name = 'path_spine';
UPDATE settings SET VALUE = '/usr/bin/rrdtool' WHERE name = 'path_rrdtool';
_

最後に、_UPDATE plugin_config SET status = '0';_を介してプラグインに問題が発生した場合に備えて、すべてのプラグインを無効にしました。後で手動で有効にしました。

_reports_items_の一部のレポートが間違っていたため、_DELETE FROM reports_items WHERE 'id' = 123;_で修正しました。もちろん、Cactiのログをチェックして、どのレポートが中断されているかを確認する必要があります。

その後、新しいCactiインストールをバックアップし、すべてのグラフとCactiログをチェックして、何かを見逃していないかどうかを確認することを忘れないでください。


I CactiのCronjobをsystemdユニット/タイマーに置き換えましたより良いロギングと実行の再現性のために。これは私のcacti-poller.serviceです:

_[Unit]
Description=Cacti Poller

[Service]
Type=oneshot
ExecStart=/usr/bin/php /usr/share/cacti/poller.php
_

これは対応するcacti-poller.timerです:

_[Unit]
Description=Run cacti poller every 5 minutes

[Timer]
OnCalendar=*:0/5
Unit=cacti-poller.service
AccuracySec=1s
_

これは Arch Wiki にも記載されています。すでにここに掲載されているサボテンドキュメントもご覧ください。

1
Luca