数据库关键字定时替换配置
事件调度器简介
MySQL事件调度器允许您在指定的时间间隔自动执行SQL语句,非常适合用于定期维护任务,如关键字替换、数据清理等。
应用场景
本配置将创建两个定时事件,一个将"api"替换为"brr",另一个将"brr"替换为"api",实现关键字的定时轮换。
配置事件调度器
1. 修改MySQL配置文件
编辑MySQL配置文件,启用事件调度器:
文件名:my.cnf
路径:/yes/1panel/apps/mariadb/mariadb/conf/my.cnf在配置文件中添加以下内容:
my.cnf 配置复制代码
socket = /run/mysqld/mysqld.sock
event_scheduler=ON2. 重启数据库服务
修改配置文件后,需要重启数据库服务使配置生效:
# 重启MySQL/MariaDB服务
sudo systemctl restart mysql
# 或
sudo systemctl restart mariadb创建定时事件
执行SQL脚本
在MySQL中执行以下SQL脚本,创建两个定时事件:
完整的SQL脚本复制代码
USE bbsxpvip;
DELIMITER $$
DROP EVENT IF EXISTS evt_api_to_bbr$$
CREATE EVENT evt_api_to_bbr
ON SCHEDULE
EVERY 1 DAY
STARTS TIMESTAMP('2025-11-12 13:00:00')
ON COMPLETION PRESERVE
ENABLE
DO
BEGIN
UPDATE bbs_post SET message = REPLACE(message,'api','brr') WHERE message LIKE '%api%';
UPDATE bbs_post SET message_fmt = REPLACE(message_fmt,'api','brr') WHERE message_fmt LIKE '%api%';
END$$
DROP EVENT IF EXISTS evt_bbr_to_api$$
CREATE EVENT evt_bbr_to_api
ON SCHEDULE
EVERY 1 DAY
STARTS TIMESTAMP('2025-11-11 08:30:00')
ON COMPLETION PRESERVE
ENABLE
DO
BEGIN
UPDATE bbs_post SET message = REPLACE(message,'brr','api') WHERE message LIKE '%brr%';
UPDATE bbs_post SET message_fmt = REPLACE(message_fmt,'brr','api') WHERE message_fmt LIKE '%brr%';
END$$
DELIMITER ;
-- 检查事件是否创建成功
SHOW EVENTS;脚本说明
这个脚本创建了两个事件:
evt_api_to_bbr:每天13:00将"api"替换为"brr"evt_bbr_to_api:每天08:30将"brr"替换为"api"
验证配置
1. 检查事件调度器状态
执行以下SQL语句检查事件调度器是否已启用:
SHOW VARIABLES LIKE 'event_scheduler';预期结果:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+2. 检查事件状态
执行以下SQL语句检查事件是否已创建:
SHOW EVENTS;应该能看到两个事件:evt_api_to_bbr 和 evt_bbr_to_api。
事件详细说明
事件参数说明
替换逻辑说明
常见问题
1. 事件调度器未启用
如果SHOW VARIABLES LIKE 'event_scheduler'显示为OFF:
检查配置文件是否正确添加了
event_scheduler=ON确认已重启数据库服务
尝试在MySQL中直接启用:
SET GLOBAL event_scheduler = ON;
2. 事件未执行
如果事件创建成功但未执行:
检查事件状态:
SHOW EVENTS;确认事件是否启用:状态应为ENABLED
检查MySQL错误日志
3. 权限问题
创建事件需要EVENT权限:
GRANT EVENT ON database_name.* TO 'username'@'host';