回復しようとしている重要なデータを含む古いサボテンデータベースがあります。古いデータベースには、現在の新しい安定版よりもはるかに少ないフィールドがあります。手動インポートを実行すると、ワイルドエラーが発生します。古い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)
推奨されるアップグレード手順 は次のように思われます:
新しいデータベースを作成して手動でデータ移行を試みるのではなく。
私は最近、壊れた0.8.8cデータベースをCacti1.2.xに正常にアップグレードしました。誰かが何年も前にそれをインストールし、新しいCactiバージョンのcronjobを使用しましたが、古いバージョンのファイルとその中間のDBバージョンを使用していました。
これが私がやった方法です:
rsync --ignore-existing cacti/resource/snmp_queries/*.xml cacti/scripts/* newserver:.
_/etc/spine.conf
_と_/etc/cacti/db.php
_を編集しますmysqldump < old_db.sql
_php /var/lib/cacti/cli/repair_database.php
_でDBを修復します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 にも記載されています。すでにここに掲載されているサボテンドキュメントもご覧ください。