Quelltext des aktuellen Standes
-- DNS: Aenderungsverlauf je Zone.
--
-- Jeder Import ersetzt den Record-Satz einer Zone vollstaendig. Was sich dabei
-- geaendert hat, war danach nicht mehr erkennbar - fuer eine Dokumentation mit
-- revisionssicherem Anspruch die auffaelligste Luecke des Moduls. Diese Tabelle
-- haelt je Import fest, was hinzugekommen, geaendert oder verschwunden ist.
--
-- Bewusst getrennt vom Audit-Log: ein Import kann Tausende Einzelaenderungen
-- umfassen, die als Bestandsdaten der Zone gehoeren und mit ihr altern.
CREATE TABLE IF NOT EXISTS `dns_zone_changes` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`zone_id` BIGINT UNSIGNED NOT NULL,
`changed_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`change_type` ENUM('added','changed','removed') NOT NULL,
`record_name` VARCHAR(255) NOT NULL DEFAULT '@',
`record_type` VARCHAR(16) NOT NULL DEFAULT 'A',
`old_data` TEXT NULL,
`new_data` TEXT NULL,
`old_ttl` INT UNSIGNED NULL,
`new_ttl` INT UNSIGNED NULL,
CONSTRAINT `fk_dns_changes_zone` FOREIGN KEY (`zone_id`)
REFERENCES `dns_zones` (`id`) ON DELETE CASCADE,
INDEX `idx_dnschg_zone_time` (`zone_id`, `changed_at`),
INDEX `idx_dnschg_time` (`changed_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Wie lange der Verlauf aufbewahrt wird. 0 = unbegrenzt.
INSERT IGNORE INTO `system_settings` (`key`, `value`)
VALUES ('dns_history_days', '180');
-- Herkunft der Zone: bisher stand dort immer 'agent'. Mit weiteren Quellen
-- neben Windows-DNS wird daraus eine echte Angabe.
ALTER TABLE `dns_zones`
MODIFY COLUMN `source` VARCHAR(32) NOT NULL DEFAULT 'agent'
COMMENT 'windows | bind | powerdns | agent (unbekannt)';