是否启用了日志
mysql>show variables like 'log_%';
怎样知道当前的日志
mysql> show master status;
顯示二進制日志數目
mysql> show master logs;
看二进制日志文件用mysqlbinlog
shell>mysqlbinlog mail-bin.000001
或者shell>mysqlbinlog mail-bin.000001 | tail
在配置文件中指定log的輸出位置.
Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下或者 c:\Windows 下。
Linux:Linux 的配置文件为 my.cnf ,一般在 /etc 下。
1.错误日志(error log)
mysql>show variables like 'log-error';
可以得到log-error变量的值,即错误日志文件的详细位置,默认情况下,日志会被保存到数据库目录数据子目录下,文件名是服务器主机名.err文件,如果需要设定错误日志文件名,可以在配置文件my.cnf中设定参数log-err
2.普通日志(general log)
默认情况下,mysql不记录普通日志,因为普通日志会记录MYSQL客户连接到MYSQL和从MYSQL断开的信息,并且包括服务器接收到的每一个SQL语句(无论这些语句是否被正确执行),所以为了性能考虑,一般地只会开启MYSQL的SLOW LOG(慢日志)。
配置文件log=
重启MYSQL生效
设置日志的输出方式为文件(如果设置log_output='table',则日志会记录到mysql.general_log表中)。
mysql>set global log_output=file;
设置general log 的日志文件路径
mysql>set global general_log_file='./general_log.log';
开启general log
mysql>set global general_log=on;
(设置参数--log-output=TABLE,FILE可以同时记录到文件和数据库,大概在my.cnf文件中,不过没起作用--!)
3.慢查询日志(slow log)
默认情况下,msyql也不记录慢日志,通过开启慢查询,找到影响效率的SQL。
在配置文件my.cnf中添加
log-slow-queries=slow-log.log
log_query_time=1
4.二进制日志(binary log)
主要用来数据恢复和数据复制,设置参数log-bin=启动二进制日志,记录数据定义语言(DLL)和数据控制语言(DML),可以使用/bin/mysqlbinlog查看日志文件。
mysql>reset master;删除所有日志,新日志重新以000001开始编号,出现些小问题,如果指定二进制日志名,命令也只会删除默认的日志mysql-bin。
5.更新日志已不能使用
6.使用二进制日志备份MYSQL
使用命令
mysql>SHOW BINLOG EVENTS \G
查看当前使用的二进制日志,及日志数据量
使用MYSQL工具mysqlbinlog恢复数据,如:
mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 | mysql -u root -pmypwd
上句命令表示恢复日志
bin.123456中时间为
2005-04-20 9:59:59以前的数据,并提供用户信息。
参数--start-date指定开始时间,--start-position和--stop-position指定位置恢复
可以将日志重定向输出到指定的SQL文件,然后执行SQL文件恢复数据
mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00" /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql