Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用mysql事件调度器备份日志?_Mysql_Sql_Mariadb - Fatal编程技术网

如何使用mysql事件调度器备份日志?

如何使用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

我将sql操作日志存储在一个表同步记录器中,并希望定期将这些日志保存到常规文件中。为此,我尝试创建一个事件调度器。但我总是在select语句中遇到以下错误

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快。

它可以工作。非常感谢,很有效。非常感谢你。