Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Как сжать базу данных?  (Прочитано 6769 раз)

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Как сжать базу данных?
« : 01 Марта 2022, 16:51:11 »
База данных разрослась почти до 5 ГБ. Можно ли ее сжать средствами Simple-SCADA или MySQL? 

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Как сжать базу данных?
« Ответ #1 : 02 Марта 2022, 11:45:10 »
Здравствуйте.

Можно включить сжатие таблиц на уровне СУБД. Но оно не будет эффективным для таблицы трендов, т.к. она состоит из чисел и значения обычно не повторяются. Для таблицы сообщений сжатие будет работать лучше, т.к. в ней есть текстовые данные.

Также можно ограничить архив трендов и сообщений по времени. Тогда скада будет периодически посылать запросы на удаление данных старше заданного срока. Это скорее всего не приведёт к уменьшению размера БД, т.к. СУБД может только пометить данные как удалённые (без физического удаления из файла), но рост БД может прекратиться.

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Как сжать базу данных?
« Ответ #2 : 02 Марта 2022, 13:03:32 »
Спасибо за подробный ответ. И еще один вопрос - можно ли автоматизировать процесс создания резервных копий БД в MySQL по расписанию?

ART63

  • Постоялец
  • ***
  • Сообщений: 151
    • Просмотр профиля
Re: Как сжать базу данных?
« Ответ #3 : 03 Марта 2022, 09:15:27 »
Это зависит от ОС, на которой установлен MySQL.
Можно погуглить для своей. Вот пример для Win - https://internet-lab.ru/mysql_backup_cmd

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Как сжать базу данных?
« Ответ #4 : 03 Марта 2022, 12:54:00 »
Это зависит от ОС, на которой установлен MySQL.
Можно погуглить для своей. Вот пример для Win - https://internet-lab.ru/mysql_backup_cmd
Спасибо, этот способ я нашел. Но мне он показался слишком сложным. Нет ли более простого?
P.S. Оказалось ничего сложного. Скопировал и отредактировал батник, проверил - работает! Большое спасибо автору!
« Изменён: 03 Марта 2022, 17:29:38 от alan54 »

Виктор К

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Как сжать базу данных?
« Ответ #5 : 03 Марта 2022, 14:10:39 »
Bat файл для стандартного планировщика задач:
Код
"c:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump" --single-transaction -c -u root -pПАРОЛЬ_К_БД ИМЯ__БД > c:\arch\dump.sql
"c:\Program Files\WinRAR\winrar.exe" a -r -tl -ep -ag  c:\arch\sql\sql_.rar "c:\arch\dump.sql"
Еще можно через dbForge Studio, там тоже можно настроить дамп базы. Запуск так же идет через стандартный планировщик.
« Изменён: 03 Марта 2022, 16:22:36 от Simple-Scada »

alan54

  • Постоялец
  • ***
  • Сообщений: 145
    • Просмотр профиля
Re: Как сжать базу данных?
« Ответ #6 : 03 Марта 2022, 22:14:20 »
С учетом вышеопубликованных советов я создал свой батник и включил его ежедневный запуск в планировщик заданий Windows:
Код
@set CURDATE=%date: =0%
@set CURTIME=%time: =0%
@"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqlpump.exe" --single-transaction --user=root --password=root "ИМЯ_БД" > E:\Backup\MySQL_Dumps\Dump%CURDATE:~8,2%%CURDATE:~3,2%%CURDATE:~0,2%%CURTIME:~0,2%%CURTIME:~3,2%.sql
@set CURDATE=
@set CURTIME=
« Изменён: 04 Марта 2022, 10:54:57 от Simple-Scada »