记录mysql查询并转发到syslog/event log

5ssjco0h  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(328)

我能够启用错误日志、常规查询日志、慢速查询日志和二进制日志,并且能够将日志转发到syslog。我对日志记录没有什么问题。
1) 错误日志将自动转发到windows中的事件日志。如何将其他日志也转发到事件日志?
2) 是否可以将多行mysql日志转换为单行。
3) 是否可以在日志文件中添加一些头文件,或者在每个日志行的开头添加一些标记,以便很容易识别它是哪个日志文件。
4) 在慢速查询日志中,会对一些信息进行注解。当使用rsyslog转发时,这些注解行会在所有unix系统中转发吗?


# User@Host: debian-sys-maint[debian-sys-maint] @ localhost []

# Query_time: 0.000297  Lock_time: 0.000220 Rows_sent: 0  Rows_examined: 0

SET timestamp=1539924163;
select count(*) into @discard from `information_schema`.`EVENTS`;

5) mysqlbinlog可用于将二进制日志转换为可读格式。有没有一种方法可以在不编写任何自定义脚本的情况下转换二进制文件并将其转发到syslog?在mysql或rsyslog中有什么方法吗?

ar5n3qh5

ar5n3qh51#

1) 错误日志将自动转发到windows中的事件日志。如何将其他日志也转发到事件日志?
在mysql中没有这样做的特性。
2) 是否可以将多行mysql日志转换为单行。
如果不修改mysql源代码,就不能更改慢速查询日志的格式。它是硬编码的:

...
  if (my_b_printf(&log_file,
                  "# Query_time: %s  Lock_time: %s"
                  " Rows_sent: %lu  Rows_examined: %lu\n",
                  query_time_buff, lock_time_buff,
                  (ulong)thd->get_sent_row_count(),
                  (ulong)thd->get_examined_row_count()) == (uint)-1)
    goto err;
  ...

此外,对于记录的每个查询的其他行。
但是您可以从performance\u模式获得相关的查询性能信息,甚至可以按查询类型获得摘要。有优点也有缺点。例如,请参见以下博客:https://www.percona.com/blog/2014/02/11/performance_schema-vs-slow-query-log/
3) 是否可以在日志文件中添加一些头文件,或者在每个日志行的开头添加一些标记,以便很容易识别它是哪个日志文件。
不改变源代码就不行。
4) 在慢速查询日志中,会对一些信息进行注解。当使用rsyslog转发时,这些注解行会在所有unix系统中转发吗?
不能将慢速查询日志转发到syslog。
5) mysqlbinlog可用于将二进制日志转换为可读格式。有没有一种方法可以在不编写任何自定义脚本的情况下转换二进制文件并将其转发到syslog?在mysql或rsyslog中有什么方法吗?
不。
但是你可以用 mysqlbinlog 工具下载远程二进制日志作为备份它们的一种方式。看到了吗https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog-backup.html

相关问题