Войти

Показать полную графическую версию : Настройка mysql


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;

Теперь осталось вам автоматизировать создание и удаление партици, свой скрипт не буду приводить ;-)

nikitos435
14-11-2016, 08:38
Коллеги, поделитесь опытом правильной настройки mysql

therion.kiev
28-12-2016, 16:41
Сервер: CentoOS 7
MariaDB 15.1
RAM: 32GB

cat /etc/my.cnf
[mysqld]
user = mysql
port = 3306
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
symbolic-links = 0
bind-address = 127.0.0.1
default-storage-engine = InnoDB

# CACHES AND LIMITS #
tmp-table-size = 32M
max-heap-table-size = 32M
query-cache-type = 0
query-cache-size = 0
max-connections = 15000
thread-cache-size = 5000
open-files-limit = 150000
table-definition-cache = 1024
table-open-cache = 50000

# MyISAM #
key-buffer-size = 32M
myisam-recover = FORCE,BACKUP

# INNODB #
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-log-file-size = 2G
innodb-flush-log-at-trx-commit = 0
innodb-file-per-table = 1
innodb-buffer-pool-size = 10G

# Slow REQUESTS #
slow-query-log = 1
slow-query-log-file = /var/log/mariadb/mariadb-slow.log

# SAFETY #
skip-name-resolve
max-allowed-packet = 16M
max-connect-errors = 1000000

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d




© OSzone.net 2001-2012