单台MySQL服务器的日志策略

6 篇文章 0 订阅
1、单台MySQL服务器需要哪些日志?
由于我们是单台的MySQL服务器,只需要常规查询日志、错误日志、慢查询日志、二级制日志。

2、这些日志的作用是什么?
常规查询日志,记录了所有操作数据库的信息包括建立的连接的客户端的一些信息(哪个用户?什么时间?在哪创建的连接?干了什么?),保证MySQL服务器出现的任何操作的追溯问题。
错误日志,记载着数据库启动或者关闭的情况,还记载着故障和异常的消息记录,如果发生服务器无法启动,首先就应该查询这个日志。
慢查询日志,记录查询速度较慢的语句,以便于改善性能。
二进制日志,包含所有对数据库进行“写”的操作并且导致了数据的变化,配合数据库备份文件在系统发生崩溃后对数据库进行恢复。

3、怎样启动一个常规查询日志?
在启动MySQL服务之前,在MySQL文件目录下找到my.ini(my.cnf),在[mysqld]下添加
log="D:/MySQL5.5/logs/log",当然你也可以在启动mysql服务时通过 --log="..."来开启常规查询日志。

4、常规查询日志内容是什么样子的?

这样的显示效果并不理想,也不便于查看。

5、是否有其他方式来查看常规查询日志内容呢?
是的,MySQL不单为我们提供了这样一个通过file方式存储常规查询日志的功能,还提供了日志数据表。
通常情况下,建议使用日志数据表,便于查看也便于管理。

6、怎样开启日志数据表来存储常规查询日志?
在my.ini文件的[mysqld]下添加log_output='TABLE',这样常规查询日志信息就会被写入到mysql.general_log表中

7、log_output参数的说明?
通过配置log_output参数来指定常规查询日志和慢日志的输出地址,可以配置‘FILE’或'TABLE'也可以同时配置这俩项以逗号隔开,
这个参数的只对以上两种日志有效,错误日志、二进制日志、中继日志无效。另外:如果没有显示的配置log_output='FILE',即使配置了log="路径\log",会创建出log文件,但是不会写入日志信息。

8、日志数据表存储常规查询日志为什么更好?
如下图:

很明显这样的显示效果更容易管理。

9、怎样开启错误日志?
通常情况下MySQL在启动时,会默认自动创建一个HOSTNAME.err的错误日志,也可以在my.ini的[mysqld]下添加一条配置:
log-error="D:/MySQL5.5/logs/error"来指定存放目录与文件名。
另外:添加log-warings=0~2来控制错误信息的量,错误日志信息很小,不需要日志轮转或失效。

10、怎样开启一个慢查询日志?
同常规查询日志,在my.ini的[mysqld]下添加如下信息:
log-slow-queries="D:/MySQL5.5/logs/slowquery" #开启慢查询日志
long_query_time=2 #服务器维护定义为"慢"的查询(默认为10秒),这里定义为2秒
log_queries_not_using_indexes=1 #没有使用索引的"慢"查询日志,设置为1或者on开启
min_examined_row_limit=x #查询至少满足x行的数据才有资格被写入慢查询日志中,默认值是0
由于上面的配置输出地址,慢查询日志信息将被写入到mysql.slow_log数据表中。

11、怎样开启二进制日志?
在my.ini配置文件中加入
log_bin="D:/MySQL5.5/logs/binarybin"

12、日志文件或数据表中的数据会不断增加,肯定不能无限增加,应该采取什么措施?
错误日志、不需要做什么措施,因为它的数据量实在是太少了。
常规查询日志,这个日志是信息量最大的日志,所有对于数据库的操作信息都会被写入,开启它会影响效率,需要对数据表进行轮转。
慢查询日志,做数据表的轮转。
二进制日志,在没有使用主从复制机制时,可以在my.ini文件下加入expire_logs_days=7(天)设置二进制日志失效时间,服务器会在启动时和打开新日志文件时去检查是否需要对二进制日志文件进行失效处理。

13、二进制日志文件最大值问题?
Binlog最大值和默认值都是1GB,该设置并不能严格控制Binlog的大小,尤其Binlog比较靠近最大值而又遇到一个比较大的事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束。

14、日志数据表怎样做轮转?
必须先开启MySQL事件调度器,在my.ini添加如下配置:event_scheduler=1,
日志数据表的内容是只允许查看不允许修改的,但是可以使用TRUNCATE TABLE语句去清空一个日志数据表,
实现轮转,MySQL时间调度器与存储过程结合使用。

例:#创建常规查询日志和慢查询日志的轮转的存储过程

use mysql ;
delimiter EOF
create procedure rotate_log_pro()
begin
drop table if exists general_log_old, general_log_tmp;
create table general_log_tmp like general_log;
rename table general_log to general_log_old, general_log_tmp to general_log;
drop table if exists slow_log_old, slow_log_tmp;
create table slow_log_tmp like slow_log;
rename table slow_log to slow_log_old, slow_log_tmp to slow_log;
end EOF

delimiter ;
复制代码

#创建事件调用存储过程
create event mysql.rotate_log_tables
on schedule every 5 hour
on completion preserve
do call rotate_log_pro();

复制代码

引自:http://www.kekeyun.com/forum.php?mod=viewthread&tid=150&extra=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值