Как выполнить запрос MySQL при каждом запуске службы?
Мне нужно выполнить запрос, чтобы заполнить таблицу памяти при каждом запуске MySQL.
Есть какой-либо способ сделать это?
1 ответ
Решение
MySQL умеет читать заявления init_file
на старте.
Вы должны были бы поместить следующее в my.ini
или же my.cnf
(в зависимости от ОС) файл
[mysqld]
init-file="/path/to/your/query/populate_memory_table.sql"
Другой вариант - запустить системный сценарий после запуска mysql. С systemd в Linux будет работать следующее:
cat > /lib/systemd/system/mysql-preload.service << END
[Unit]
Description=Pre-Load MEMORY tables after MySQL starts
PartOf=mysql.service
After=mysql.service
[Service]
Type=oneshot
ExecStart=/home/myuser/script.sh
[Install]
WantedBy=multi-user.target
END
systemctl daemon-reload
Сценарий будет запущен при следующем запуске или перезапуске mysql. Не так хорошо, какinit_file
потому что mysql будет доступен для запросов до того, как будут заполнены таблицы MEMORY, но гораздо более гибкий.