cd ~/

Home of Daniel Graf

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

cd ~/

Home of Daniel Graf

Seiten

Suche

Blog Meta

Dynamo Dresden

Galerie

braindump:nuetzliche_queries

Nützliche Queries

Bulk Update mit Variablen und ohne Bash oder Script

Für meinen Arbeitgeber betreue ich Nagios. Als Config-Oberfläche kommt Centreon zum Einsatz, welches seine Datenbasis aus MySQL Datenbanken bezieht. Daher ist das massenhafte Hinzufügen von Checks zu Hosts recht simpel. An dem folgenden Query möchte ich div. Erkenntnisse erklären…

Zuerst wurde der neue Check, hier check_raid in die Tabelle service hinzugefügt, ohne irgendwelcher Verknüpfungen zu einem Host.

INSERT INTO `service` (`service_template_model_stm_id`, `command_command_id`, `timeperiod_tp_id`, `command_command_id2`, `timeperiod_tp_id2`, `service_description`, `service_alias`,
                       `display_name`, `service_is_volatile`, `service_max_check_attempts`, `service_normal_check_interval`, `service_retry_check_interval`, `service_active_checks_enabled`,
                       `service_passive_checks_enabled`, `initial_state`, `service_parallelize_check`, `service_obsess_over_service`, `service_check_freshness`,
                       `service_freshness_threshold`, `service_event_handler_enabled`, `service_low_flap_threshold`, `service_high_flap_threshold`, `service_flap_detection_enabled`,
                       `service_process_perf_data`, `service_retain_status_information`, `service_retain_nonstatus_information`, `service_notification_interval`,
                       `service_notification_options`, `service_notifications_enabled`, `service_first_notification_delay`, `service_stalking_options`, `service_comment`,
                       `command_command_id_arg`, `command_command_id_arg2`, `service_register`, `service_activate`)
               VALUES (39,NULL,NULL,NULL,NULL,'check_raid',NULL,NULL,'2',NULL,NULL,NULL,'2','2',NULL,'2','2',
                       '2',NULL,'2',NULL,NULL,'2','2','2','2',NULL,NULL,'2',NULL,NULL,NULL,NULL,NULL,'1','1');

Anschließend wurde die ID des letzten INSERTs ermittelt und in die Variable @last_id_in_service geschrieben:

SET @last_id_in_service = LAST_INSERT_ID();

Dann wurde die Verknüpfung zwischen dem neuen Check und dem bestehenden Host hergestellt. Während des INSERTs wird noch das Feld host_id mit einer WHERE-Clause aus der Tabelle host bestimmt. Außerdem wird hier auch auf die Variable @last_id_in_service zugegriffen:

INSERT INTO `host_service_relation` (`hostgroup_hg_id`,`host_host_id`,`servicegroup_sg_id`,`service_service_id`)
                             SELECT NULL,host_id,NULL,@last_id_in_service FROM host WHERE host_name='server01';

Abschließend wird die Tabelle extended_service_information mit Daten gefüllt. Hier wird ebenfalls auf die Variable @last_id_in_service zugegriffen:

INSERT INTO `extended_service_information` (`service_service_id`, `esi_notes`, `esi_notes_url`, `esi_action_url`, `esi_icon_image`, `esi_icon_image_alt`, `graph_id`)
                                    VALUES (@last_id_in_service,NULL,NULL,NULL,NULL,NULL,NULL);

Datenbank clonen

Eine bestehende Datenbank (mit entsprechenden Tabellen/Einträgen) soll 1:1 in eine komplett neue Datenbank kopiert werden. Dazu folgender Bash-Befehl:

mysqldump -Q -h<originaler-Server> -u<originaler-User> -p<originales-Passwort> <originale-Datenbank> | mysql -h<kopierter-Server> -u<kopierter-User> -p<kopiertes-Passwort> <kopierte-Datenbank>

Werte im Live-Betrieb auslesen/ändern

SHOW VARIABLES LIKE 'query_cache_size';
+------------------+-----------+
| Variable_name    | Value     |
+------------------+-----------+
| query_cache_size | 134217728 |
+------------------+-----------+
1 row in set (0.00 sec)
 
SET GLOBAL query_cache_size = 16777216;
Query OK, 0 rows affected (0.02 sec)
braindump/nuetzliche_queries.txt · Zuletzt geändert: 2016/04/15 09:13 von Daniel Graf