Mysql数据库日志文件

错误日志

错误日志在启动 运行 关闭 过程进行了记录,遇到错误应该首先查看该日志

可通过命令查询错误日志文件位置:show variables like ‘log_error’

mysql> show variables like 'log_error' \g;
+---------------+---------------------+
| Variable_name | Value               |
+---------------+---------------------+
| log_error     | /var/log/mysqld.log |
+---------------+---------------------+
1 row in set (0.00 sec)

慢查询日志

用于定位出执行慢的sql语句,需要手动开启,默认mysql 实例不开启

可通过参数 long_query_time 进行设置,mysql 实例会记录执行超过这个阈值的sql

mysql> show variables like 'long_query_time'
    -> \g;
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

log_slow_queries 参数用于开启 慢查询

检查sql语句是否有用到索引参数:log_queries_not_using_indexes

同时可以通过慢查询表 slow_log 查看,需将动态参数log_output 值设置为table

mysql> show create table mysql.slow_log \g;
| Table    | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
| slow_log | CREATE TABLE `slow_log` (
  `start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
  `user_host` mediumtext NOT NULL,
  `query_time` time(6) NOT NULL,
  `lock_time` time(6) NOT NULL,
  `rows_sent` int(11) NOT NULL,
  `rows_examined` int(11) NOT NULL,
  `db` varchar(512) NOT NULL,
  `last_insert_id` int(11) NOT NULL,
  `insert_id` int(11) NOT NULL,
  `server_id` int(10) unsigned NOT NULL,
  `sql_text` mediumblob NOT NULL,
  `thread_id` bigint(21) unsigned NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log' |
	
mysql> show variables like 'log_output' \g
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
mysql> set global log_output='table'
    -> \g;
Query OK, 0 rows affected (0.00 sec)


查询日志

查询日志记录了所有请求信息,包括执行失败的,文件默认名是 主机名.log。
可以将查询日志记录放到mysql 架构下general_log 表中. 跟慢查询slow_log 一样。

二进制文件

二进制文件记录了对mysql数据库执行的所有更改操作,但不包括select ,show ,但有一种情况当操作本身没有改变数据库,也可能会记录到二进制文件

二进制文件的主要作用:

  • 恢复
    如:在一个数据库全备文件恢复后,可以通过日进制文件进行 piint_in_time恢复
  • 复制
    通过复制二进制文件,slave或 standby 能与master或primary进行数据实时同步
  • 审计
    通过二进制信息判断是否遭受注入攻击

查看二进制文件位置:

mysql> show variables like  'datadir' \g;
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.01 sec)
mysql> system ls -lh /var/lib/mysql/;
总用量 185M
-rw-r-----. 1 mysql mysql   56 10月  9 10:53 auto.cnf
-rw-------. 1 mysql mysql 1.7K 10月  9 10:53 ca-key.pem
-rw-r--r--. 1 mysql mysql 1.1K 10月  9 10:53 ca.pem
-rw-r--r--. 1 mysql mysql 1.1K 10月  9 10:53 client-cert.pem
-rw-------. 1 mysql mysql 1.7K 10月  9 10:53 client-key.pem
-rw-r-----. 1 mysql mysql 2.2K 10月 22 18:02 ib_buffer_pool
-rw-r-----. 1 mysql mysql  76M 10月 23 11:16 ibdata1
-rw-r-----. 1 mysql mysql  48M 10月 23 11:16 ib_logfile0
-rw-r-----. 1 mysql mysql  48M 10月 21 17:07 ib_logfile1
-rw-r-----. 1 mysql mysql  12M 10月 23 09:09 ibtmp1
drwxr-x---. 2 mysql mysql 4.0K 10月 17 11:37 market_depth
drwxr-x---. 2 mysql mysql 4.0K 10月  9 10:53 mysql
srwxrwxrwx. 1 mysql mysql    0 1023 09:09 mysql.sock
-rw-------. 1 mysql mysql    5 10月 23 09:09 mysql.sock.lock
drwxr-x---. 2 mysql mysql 8.0K 10月  9 10:53 performance_schema
-rw-------. 1 mysql mysql 1.7K 10月  9 10:53 private_key.pem
-rw-r--r--. 1 mysql mysql  451 10月  9 10:53 public_key.pem
-rw-r--r--. 1 mysql mysql 1.1K 10月  9 10:53 server-cert.pem
-rw-------. 1 mysql mysql 1.7K 10月  9 10:53 server-key.pem
drwxr-x---. 2 mysql mysql 8.0K 10月  9 10:53 sys
mysql> 

默认二进制文件没有起动,需要手动启动。启动后mysql性能可能会降低1%
以下参数影响着二进制文件的信息与行为:

  1. max_binlog_size
  2. binlog_cache_size
  3. sync_binlog
  4. binlog_do_db
  5. binlog_ignore_db
  6. log_update_update
  7. binlog_format

max_binlog_size : 为二进制文件的容量大小,默认为1G,每加一个后缀名+1,并记录到.index文件

binlog_cache_size :用于事务的缓存,当一个线程开启一个事务都会创建一个binlog_cache_size 大小的缓存,当事务未提交前日进制日志会记录到缓存中,该值需要谨慎设置因为是跟线程绑定,该值不能设置太少。太大非常消耗资源。默认值是32K

mysql> show variables like 'binlog_cache_size'
    -> \g;
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| binlog_cache_size | 32768 |
+-------------------+-------+
1 row in set (0.00 sec)

binlog_cache_use  记录二进制缓存 写入次数
mysql> show global status  like 'binlog_cache%' \g;
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Binlog_cache_disk_use | 0     |
| Binlog_cache_use      | 0     |
+-----------------------+-------+
2 rows in set (0.00 sec)

sync_binlog: 表示写入多少次缓存就同步到磁盘,默认值为0。如果需要最高可用性将该值设置为NO。
假设设置为1,有可能导致问题发生,在一个事务发出commit前,由于sync_binlog为1,已经将二进制日志写入到磁盘了,而此时数据库down机了。在下次重起的时候。这个事务并没有提交,需要回滚,但因写入到了磁盘回滚失败。假设使用的是 innodb存储引擎 可以通过设置 innodb_support_xa 为1 进行解决。innodb_support_xa 能保证二进制日志跟存储引擎数据文件进行同步

binlog_do_db 和binlog_ignore_db : 表示需要写入或忽略写入那些库的日志,默认为空

log_update_update: 当前库为slave 时需要将主库master的二进制文件写入到当前库时需要设置log_update_update参数,虽然不写二进制文件到当前库还是能同步数据,除非搭建一主2从 master->slave->slave才设置该值

binlog_format: binlog_format参数详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值