Как выполнить запрос 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, но гораздо более гибкий.

Другие вопросы по тегам