MySQL之日志系统

MYSQL 结构变化日志 待解决

Q: 当初为什么要知道 结构变化?
A: 抽出数据库改变的SQL语句,用于其他人使用这段时间所变更的字段。上线发布,执行SQL脚本。
想要知道
定义结构
需求增加
需求变更
之间字段的变化

log_error = /var/log/mysql/error.log

搜索相关资料   mysql 如何监控表结构修改

日志

主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;
日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。

命令  查看日志信息定义状态  SHOW  GLOBAL VARIABLES LIKE ‘%log%’;

 

相关资料   mysql日志详细解析

 

第一種: 查 Slow query 的 SQL 語法:

  • log_slow_queries = /var/log/mysql/mysql-slow.log
  • long_query_time = 2 (超過 2秒的 SQL 語法記錄起來, 設短一點來記錄除錯也是一種方法 XD)

 

第二種: 設 MySQL Replication 用 binlog:

  • log_bin = /var/log/mysql/mysql-bin.log (此檔要用 mysqlbinlog 解來看)
  • mysql 會將所有 INSERT/UPDATE/DELETE 語法記於此(但是語法可能跟你想的不同), 這是要寫給 SLAVE 用的 log 檔

第三種: 推薦此方法, 將 MySQL 執行的每行指令全都記錄起來:

  • log = /tmp/mysql.log

restart mysql 後, tail -f /tmp/mysql.log 就可以看到囉!

補充: 最早前的方法是 mysqldump, 然後執行完後再 mysqldump, 再 diff, 但是在 DB > 1G 後就放棄此方法了 XD

以上转自 http://www.oschina.net/question/4873_20914

测试成功为下部分 无需重启生效

--这里按照最新版本来设置
--查询关于log的设置
SHOW VARIABLES  LIKE 'general_log%' ;
返回结果类似:
+ ------------------+------------------------------------------------------------
------------------+
| Variable_name    | Value
                   |
+ ------------------+------------------------------------------------------------
------------------+
| general_log      |  OFF
                   |
| general_log_file | dev-mc.log
                   |
+ ------------------+------------------------------------------------------------
------------------+
rows in set (0.00 sec)
注意,general_log_file 的默认值是 '机器名' .log
*/
-- 开启日志
SET GLOBAL general_log = 'ON' ;
-- 设置日志的文件路径:本例在Windows下
SET GLOBAL general_log_file= 'D:/MySql/live-query.log' ;
-- 设置完之后,就已经生效了

发表评论