nikitos435
11-11-2016, 11:47
Добрый день!
Установил zabbix на чистую систему debian 8
Для баз данных использую mysql 5.5.50
Подскажите, пожалуйста, как правильно на строить mysql чтобы в будущем иметь возможность обслуживать базу данных заббикса
На данный момент установлен только чистый zabbix ни коннектов ни шаблонов ничего нет
Что необходимо сделать, чтобы в будущем не делать этого
У меня раздел под базу 40 гигов, после перехода на 3.0.3 стали проблемы с нехваткой места, т.к. неадекватно работатал Хаускипер, в итоге мы пришли к тому чтоб избавится от Housekeeper'a и переделать базу данных на партиции.
Поищите как отключить Хаускипер на 2.4, в 3.0 появилась возможность с помощью переменной HousekeepingFrequency=0
А теперь наше решение по переводу на партиции:
1. Сделали backup больших таблиц (history_uint, history, history_text, history_log, history_str)
mysqldump --no-create-info --lock-tables -u zabbix -p zabbix history_str > backup_history_str.sql
2. Очищаем таблицу (проще дропнуть таблицу и создать заново)
3. Слегка меняем структуры таблиц
ALTER TABLE `history_log` DROP PRIMARY KEY, ADD PRIMARY KEY (`itemid`,`id`,`clock`);
ALTER TABLE `history_log` DROP KEY `history_log_2`;
ALTER TABLE `history_text` DROP PRIMARY KEY, ADD PRIMARY KEY (`itemid`,`id`,`clock`);
ALTER TABLE `history_text` DROP KEY `history_text_2`;
4. Создаем partition table с делением по дням
ALTER TABLE `history_str` PARTITION BY RANGE( clock ) (
PARTITION p20160705 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-06 00:00:00")),
PARTITION p20160706 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-07 00:00:00")),
PARTITION p20160707 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-08 00:00:00")),
PARTITION p20160708 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-09 00:00:00"))
);
5. Загружаете из бекапа все таблицы
mysql -u zabbix -p zabbix < 20160704_history_log.sql
Готово
Теперь добавление новой партиции в ручном режиме
ALTER TABLE `history_str` ADD PARTITION (PARTITION p20160705 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-06 00:00:00")));
Удаление
ALTER TABLE `history_str` DROP PARTITION p20160627;
Теперь осталось вам автоматизировать создание и удаление партици, свой скрипт не буду приводить ;-)
Установил zabbix на чистую систему debian 8
Для баз данных использую mysql 5.5.50
Подскажите, пожалуйста, как правильно на строить mysql чтобы в будущем иметь возможность обслуживать базу данных заббикса
На данный момент установлен только чистый zabbix ни коннектов ни шаблонов ничего нет
Что необходимо сделать, чтобы в будущем не делать этого
У меня раздел под базу 40 гигов, после перехода на 3.0.3 стали проблемы с нехваткой места, т.к. неадекватно работатал Хаускипер, в итоге мы пришли к тому чтоб избавится от Housekeeper'a и переделать базу данных на партиции.
Поищите как отключить Хаускипер на 2.4, в 3.0 появилась возможность с помощью переменной HousekeepingFrequency=0
А теперь наше решение по переводу на партиции:
1. Сделали backup больших таблиц (history_uint, history, history_text, history_log, history_str)
mysqldump --no-create-info --lock-tables -u zabbix -p zabbix history_str > backup_history_str.sql
2. Очищаем таблицу (проще дропнуть таблицу и создать заново)
3. Слегка меняем структуры таблиц
ALTER TABLE `history_log` DROP PRIMARY KEY, ADD PRIMARY KEY (`itemid`,`id`,`clock`);
ALTER TABLE `history_log` DROP KEY `history_log_2`;
ALTER TABLE `history_text` DROP PRIMARY KEY, ADD PRIMARY KEY (`itemid`,`id`,`clock`);
ALTER TABLE `history_text` DROP KEY `history_text_2`;
4. Создаем partition table с делением по дням
ALTER TABLE `history_str` PARTITION BY RANGE( clock ) (
PARTITION p20160705 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-06 00:00:00")),
PARTITION p20160706 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-07 00:00:00")),
PARTITION p20160707 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-08 00:00:00")),
PARTITION p20160708 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-09 00:00:00"))
);
5. Загружаете из бекапа все таблицы
mysql -u zabbix -p zabbix < 20160704_history_log.sql
Готово
Теперь добавление новой партиции в ручном режиме
ALTER TABLE `history_str` ADD PARTITION (PARTITION p20160705 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-06 00:00:00")));
Удаление
ALTER TABLE `history_str` DROP PARTITION p20160627;
Теперь осталось вам автоматизировать создание и удаление партици, свой скрипт не буду приводить ;-)