Это видео недоступно.
Сожалеем об этом.

Партиционирование (Секционирование, создание разделов таблиц) базы данных MySQL Partitioning Zabbix

Поделиться
HTML-код
  • Опубликовано: 17 авг 2024
  • Сайт с инструкцией diyit.ru/viewt...
    Данная инструкция подойдет в качестве образца для любой базы MySQL
    00:00 - Что такое партицирование
    00:34 - Как работает очистка zabbix по дефолту
    07:05 - О таблицах которые будут разбиты на разделы
    08:10 - Отключение стандартной очистки (хаускипера)
    09:32 - Проверка и настройка параметров MySQL
    12:40 - Резервное копирование (для восстановления истории) + теория
    18:12 - Удаление связей зависимости таблиц
    22:14 - Очистка таблиц
    22:26 - Создание разделов партаций вручную для восстановления истории
    27:33 - Восстановление истории из дампа
    28:12 - Первый способ Партицирования
    28:28 - Партицирование MySQL на основе процедур и события
    33:19 - После создание что есть что
    34:55 - Тестируем + разная инфа
    40:48 - 2 Второй способ Партицирования по скрипту
    О скрипте
    41:55 - Создание скрипта назначение прав
    42:34 - Кратко о скрипте об основных параметрах
    45:39 - Запуск скрипта просмотр ошибки
    45:54 - Установка дополнений Perl
    47:18 - До запуска скрипта
    47:47 - Запуск скрипта
    48:06 - Результат
    48:38 - Добавление в крон (планировщик заданий)

Комментарии • 12

  • @volsof
    @volsof 4 года назад

    Интересное видео. Спасибо за труд.

  • @alexroberto8499
    @alexroberto8499 3 года назад

    блекхон, майэскьюэльДУМП, конвектор. Красавчик! :D

  • @user-xw9gs3je1z
    @user-xw9gs3je1z 4 года назад

    У вас на 32:46 ошибка. Процедура не создалась из-за ошибки в синтаксисе.
    Вот правильная процедура:
    DELIMITER $$
    USE `zabbixdb`$$
    DROP PROCEDURE IF EXISTS `drop_partitions`$$
    CREATE PROCEDURE `drop_partitions`(IN_SCHEMANAME VARCHAR(64))
    BEGIN
    DECLARE TABLENAME_TMP VARCHAR(64);
    DECLARE PARTITIONNAME_TMP VARCHAR(64);
    DECLARE VALUES_LESS_TMP INT;
    DECLARE PERIOD_TMP VARCHAR(12);
    DECLARE KEEP_HISTORY_TMP INT;
    DECLARE KEEP_HISTORY_BEFORE INT;
    DECLARE DONE INT DEFAULT 0;
    DECLARE get_partitions CURSOR FOR
    SELECT p.`table_name`, p.`partition_name`, LTRIM(RTRIM(p.`partition_description`)), mp.`period`, mp.`keep_history`
    FROM information_schema.partitions p
    JOIN manage_partitions mp ON mp.tablename = p.table_name
    WHERE p.table_schema = IN_SCHEMANAME
    ORDER BY p.table_name, p.subpartition_ordinal_position;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    OPEN get_partitions;
    loop_check_prt: LOOP
    IF DONE THEN
    LEAVE loop_check_prt;
    END IF;
    FETCH get_partitions INTO TABLENAME_TMP, PARTITIONNAME_TMP, VALUES_LESS_TMP, PERIOD_TMP, KEEP_HISTORY_TMP;
    CASE WHEN PERIOD_TMP = 'day' THEN
    SET KEEP_HISTORY_BEFORE = UNIX_TIMESTAMP(DATE(NOW() - INTERVAL KEEP_HISTORY_TMP DAY));
    WHEN PERIOD_TMP = 'month' THEN
    SET KEEP_HISTORY_BEFORE = UNIX_TIMESTAMP(DATE(NOW() - INTERVAL KEEP_HISTORY_TMP MONTH - INTERVAL DAY(NOW())-1 DAY));
    ELSE
    BEGIN
    ITERATE loop_check_prt;
    END;
    END CASE;
    IF KEEP_HISTORY_BEFORE >= VALUES_LESS_TMP THEN
    CALL drop_old_partition(IN_SCHEMANAME, TABLENAME_TMP, PARTITIONNAME_TMP);
    END IF;
    END LOOP loop_check_prt;
    CLOSE get_partitions;
    END$$
    DELIMITER ;

    • @user-kz5vk2ho5f
      @user-kz5vk2ho5f  4 года назад

      Спасибо поправил!
      Отличие скриптов моего и подписчика, у меня были доп строки откуда они взялись.... возможно скопировались с чем то...
      на 3 команды больше
      FETCH get_partitions INTO TABLENAME_TMP, PARTITIONNAME_TMP, VALUES_LESS_TMP, PERIOD_TMP, KEEP_HISTORY_TMP;
      CASE WHEN PERIOD_TMP = 'week' THEN
      SET KEEP_HISTORY_BEFORE = UNIX_TIMESTAMP(DATE(NOW() - INTERVAL KEEP_HISTORY_TMP WEEK));

  • @user-hc7me4if7b
    @user-hc7me4if7b 2 года назад

    Может тупой вопрос, но почему нужно создавать например в таблицах на каждый день именно 15 файлов?

    • @user-kz5vk2ho5f
      @user-kz5vk2ho5f  2 года назад

      Это не обязательно можно создавать по одному файлу

  • @Silencer-311
    @Silencer-311 4 года назад

    Могли бы Вы снять ролик как восстанавливать MySQL после падения, когда он не стартует и в браузере пишет, нет коннекта к базам

    • @user-kz5vk2ho5f
      @user-kz5vk2ho5f  4 года назад

      Такой ролик вряд ли можно сделать , причин может быть очень много почему не стартует mysql. Надо смотреть логи, или конфиги или базы и тд очень много вариантов , в плоть до того что можно тестировать базы на другом временном сервере, либо же сохранить конфиги и переустановить mysql.

    • @Silencer-311
      @Silencer-311 4 года назад

      Артём Андреевич Мамзиков информация с логами есть, причина падения в некорректном отключении питания сервера.

    • @user-kz5vk2ho5f
      @user-kz5vk2ho5f  4 года назад

      @@Silencer-311 Ничего конкретного сказать не смогу тем более не видя ничего, возможно повредились какие то файлы на диске от mysql вовремя отключения электричества. Я бы начал с ошибок в логах поискать что есть на них в интернете и как исправить.

    • @Silencer-311
      @Silencer-311 4 года назад

      Артём Андреевич Мамзиков если логи предоставлю, поможете ?

    • @user-kz5vk2ho5f
      @user-kz5vk2ho5f  4 года назад

      @@Silencer-311 Глянуть могу но ничего не обещаю скинь мне их на почту anji12@mail.ru