如何使用mysql事件调度器备份日志?
我将sql操作日志存储在一个表同步记录器中,并希望定期将这些日志保存到常规文件中。为此,我尝试创建一个事件调度器。但我总是在select语句中遇到以下错误如何使用mysql事件调度器备份日志?,mysql,sql,mariadb,Mysql,Sql,Mariadb,我将sql操作日志存储在一个表同步记录器中,并希望定期将这些日志保存到常规文件中。为此,我尝试创建一个事件调度器。但我总是在select语句中遇到以下错误 MariaDB [sync]> DELIMITER !! MariaDB [sync]> CREATE EVENT IF NOT EXISTS write_to_log_event -> ON SCHEDULE -> EVERY 1 DAY -> DO -> BEGIN
MariaDB [sync]> DELIMITER !!
MariaDB [sync]> CREATE EVENT IF NOT EXISTS write_to_log_event
-> ON SCHEDULE
-> EVERY 1 DAY
-> DO
-> BEGIN
-> DECLARE log_file VARCHAR(255);
-> SET log_file = CONCAT('/var/log/sync_db_log_' ,DATE_FORMAT(NOW(), '%Y%m%d%H%i%S'));
-> SELECT * INTO OUTFILE log_file from sync_logger;
-> DELETE FROM sync_logger;
-> END;
-> !!
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'log_file from sync_logger;
DELETE FROM sync_logger;
END' at line 8
MariaDB [sync]> delimiter ;
我想不出是什么问题。有人能帮忙吗?输出文件的名称是一个文本,不是一个参数,它不会被变量值替换。此外,必须引用文件名 使用事先准备好的声明: 创建事件(如果不存在)将\u写入\u日志\u事件 按时 每1天 做 开始 将@write_to_log_event_sql:=CONCAT'SELECT*设置为OUTFILE/var/log/sync_db_log_, 日期\u格式现在,“%Y%m%d%H%i%S”, “来自同步_记录器”; -选择@write_to_log_event_sql;-用于调试目的 准备从@write\u到\u log\u event\u sql的stmt; 执行stmt; 滴制stmt; 截断同步记录器; 终止
PS.TRUNCATE比DELETE快。输出文件的名称是一个文本,而不是一个参数,并且不会被变量值替换。此外,必须引用文件名 使用事先准备好的声明: 创建事件(如果不存在)将\u写入\u日志\u事件 按时 每1天 做 开始 将@write_to_log_event_sql:=CONCAT'SELECT*设置为OUTFILE/var/log/sync_db_log_, 日期\u格式现在,“%Y%m%d%H%i%S”, “来自同步_记录器”; -选择@write_to_log_event_sql;-用于调试目的 准备从@write\u到\u log\u event\u sql的stmt; 执行stmt; 滴制stmt; 截断同步记录器; 终止
另外,TRUNCATE比DELETE快。它可以工作。非常感谢,很有效。非常感谢你。