如果我按照以下方式启用 MySQL 日志记录,其优点和缺点是什么?您个人会怎么做?
general_log_file = /var/log/mysql/mysql.log
general_log = 1
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
一方面,它有利于安全。但是,我听说它大大降低了 MySQL 的速度,并对性能产生了影响。它还会导致大量磁盘 IO,从而进一步降低服务器速度。
答案1
在生产环境中,慢速查询对于性能分析来说非常必要。
一般来说,建议您在 SQL 服务器上使用单独的磁盘来存储 /var/log,这样不会影响处理实际 SQL 数据库本身的磁盘。
我发现 general_log 除了用于故障排除(客户端错误等)之外用处不大,因为您应该使用 mysqldump 进行定期备份。只有当您需要排除某些特定故障时,我才会倾向于打开 general_log。
我更倾向于使用二进制日志进行备份,因为查询日志将包含重建数据不需要的选择语句。二进制日志是处理这种情况的最佳方式,如果需要,通常可以更快地恢复。