MySQL日志功能详解(2)

二进制日志:(多个线程会争用,可以首先写到缓冲区中)

记录了当前服务器的数据修改和有潜在可能性影响数据修改的语句

默认在数据目录下,通常情况下为mysql-bin

    [[email protected] data]# file mysql-bin.000001 
    mysql-bin.000001: MySQL replication log  复制日志

可以通过mysqlbinlog命令来查看

时间记录 time

偏移位置 position

MySQL > show master status 显示主服务器状态
查看当前使用的二进制日志和下一个事件开始时的基于的位置

MySQL [(none)]> show master status;
    +------------------+----------+--------------+------------------+
	| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
	+------------------+----------+--------------+------------------+
	| mysql-bin.000003 |      107 |              |                  |
	+------------------+----------+--------------+------------------+
	1 row in set (0.00 sec)

日志滚动:

1、可以按照大小定义

2、可以按照时间定义

3、重启mysql服务器

4、执行flush logs(手动滚动)

查看当前正在使用的二进制日志

MariaDB [(none)]> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |      1043 |
| mysql-bin.000002 |       245 |
| ...............3 |       245 |
+------------------+-----------+
2 rows in set (0.00 sec)

二进制日志的功用

即时点(时间点)恢复:

复制:

[[email protected] data]# file mysql-bin.index 
mysql-bin.index: ASCII text
[[email protected] data]# cat mysql-bin.index
./mysql-bin.000001
./mysql-bin.000002
./mysql-bin.000003
./mysql-bin.000004

清除二进制日志

Mysql > help purge
PURGE { BINARY | MASTER } LOGS
    { TO ‘log_name‘ | BEFORE datetime_expr(某个时间之前) }

查看MySQL的二进制日志

mysql > help SHOW BINLOG EVENTS;
mysql > SHOW BINLOG EVENTS;
MariaDB [(none)]> show binlog events\G
*************************** 1. row ***************************
   Log_name: mysql-bin.000001
        Pos: 4
 Event_type: Format_desc
  Server_id: 1
End_log_pos: 245
       Info: Server ver: 5.5.36-MariaDB-log, Binlog ver: 4

service-id:服务器身份标识

(避免重复执行mysql二进制日志中‘修改‘类的语句)

MySQL 记录二进制日志的格式

MariaDB [(none)]> show variables like ‘binlog_format‘;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)

基于语句:statement

基于行(数据):row

update tb1 set salary=salary+1000; --> 数据量很大

混合模式:mixed

指定从那个位置开始读取

MariaDB [(none)]> show binlog events in ‘mysql-bin.000001‘ from 591\G

也可以使用

[[email protected] data]# mysqlbinlog --start-position=24223 mysql-bin.000001

mysqlbinlog命令(客户端命令)

   --start-time
   --stop-time
   --start-position
   --stop-position

二进制日志文件内容格式

事件发生的日期和时间

服务器ID

事件结束位置

事件的类型

原服务器生成此事件时的线程ID号  MySQL [(none)]> show processlist;

语句时间戳和写入二进制文件的时间差,单位为秒

错误代码,0表示正常执行

事件内容

事件位置(相当于下一事件的开始位置)

MySQL [(none)]> show global variables like ‘%log%‘;
  +-------------------------------------------------------------------------------+
  | log_bin = {ON|OFF};还可以是一个文件路径                          			  |
  | log_bin_trust_function_creators  是否阻止任何存储函数                         |
  | sql_log_bin = {ON|OFF} 当前会话是否将二进制文件录入进二进制文件				  |
  | sql_log_off 是否将一般查询日志记入查询日志									  |
  | sync_binlog 同步缓冲中的二进制到硬盘的时间,0不基于时间同步,只在事件提交时同步 |
  | binlog_format = {|statement|row|mixed}										  |
  | max_binlog_cache_size  mysql二进制日志的缓冲区大小,仅用于缓存事务类的语句     |
  | max_binlog_stmt_cache_size 语句缓冲区大小,即事务类和非事务类公用的大小        |
  | max_binlog_size 二进制日志文件的上限,单位为字节  (超过上限会滚动)             |                |
  +-------------------------------------------------------------------------------+

建议:切勿将二进制日志与数据文件放在同一设备

事先做好规划

[[email protected] data]# mkdir /mysql/binlog
[[email protected] data]# vim /etc/my.cnf
log-bin=/mysql/binlog/master-bin
[[email protected] data]# chown -R mysql:mysql /mysql/binlog/

重启mysqld 服务器

[[email protected] data]# cd /mysql/binlog/
[[email protected] binlog]# ls
master-bin.000001  master-bin.index

可以临时通过sql_log_bin来控制二进制的写入

中继日志:(跟主从复制相关)

对于非从服务器,中继日志没有启用

relay_log  指明一个文件路径

relay_log_index

relay_log_purge = {ON|OFF} 是否自动清理不在需要的中继日志

relay_log_space_limit 中继大小是否限制

时间: 2024-12-17 02:04:06

MySQL日志功能详解(2)的相关文章

MySQL日志功能详解(1)

MySQL日志:(以下都位全局服务器变量) MySQL > show global variables like '%log%'; MySQL 6类日志简单介绍 查询日志:默认为关闭(产生大量写操作) 所有跟查询相关的语句 慢查询日志:查询执行时长超过指定时长的查询,即为慢查询         (包括查询本身,以及查询所依赖的资源不被允许[表被锁定]) 错误日志:跟错误信息相关,以及mysql启动,关闭,主从复制等信息 二进制日志:记录跟修改相关的操作,用来实现复制的凭据(可是实现数据恢复) 中

MySQL日志功能详解查询、慢查询

MySQL日志:大量的IO操作不建议写到文件中 mysql> show global variables like 'innodb%'; mysql> show global variables like '%log%';  general_log                             | OFF   log                                     | OFF [临时开启记录日志] mysql> set global log='ON';

Mysql 日志管理详解

日志对于服务器维护来说是非常重要的,它记录了服务器运行的信息,许多操作都会写入到日志文件,通过日志文件可以了解服务器的运行状态.服务器性能等:对维护人员进行排错,故障处理,优化等提供详细的依据.MySQL中有六种不同类型的日志 一.日志种类 1.错误日志:记录mysql启动,运行或停止时出现的问题信息,一般也会记录警告信息 2.一般查询日志:记录与建立的客户端连接和执行的语句 3.慢查询日志:记录所有执行时间超高long_query_time 的所有查询或不使用索引的查询,可以帮助我们定位服务器

MySQL数据库优化详解(收藏)

MySQL数据库优化详解 mysql表复制 复制表结构+复制表数据mysql> create table t3 like t1;mysql> insert into t3 select * from t1;mysql索引 ALTER TABLE用来创建普通索引.UNIQUE索引或PRIMARY KEY索引ALTER TABLE table_name ADD INDEX index_name (column_list)ALTER TABLE table_name ADD UNIQUE (colu

MySQL的binlog详解(转)

MySQL的binlog详解 什么是binlog binlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句.语句以"事件"的形式保存,它描述数据更改. binlog作用 因为有了数据更新的binlog,所以可以用于实时备份,与master/slave复制 和binlog有关参数 log_bin 设置此参数表示启用binlog功能,并指定路径名称 log_bin_index 设置此参数是指定二进制索引文件的路径与名称 binlog_

MySQL主从架构详解

1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

Log4J日志配置详解和自定义log4j日志级别及输出日志到不同文件实现方法

Log4J日志配置详解 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN <

(转)MySQL备份原理详解

MySQL备份原理详解 原文:http://www.cnblogs.com/cchust/p/5452557.html 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间.这篇文章主要讨论MySQL的备份方案,重点介绍几种备份方式的原理,包括文件系统快照(LVM),逻辑备份工具M

MySQL数据库备份详解

原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据可能也已经被删除了, 我们不能使用从数据库上的数据来恢复主数据库上的数据,只能通过备份进行误删除数据的恢复 一. 备份的分类 1.按备份的结果来分: 逻辑备份 其备份结果为SQL语句,适合于所有存储引擎,恢复时需要较多时间,逻辑备份时,对于MyISAM存储引擎是需要进行锁表操作的,通过使用的mysq