【基本介绍】
日志是把数据库的每一个变化都记录到一个文件里面(日志文件)。MySQL默认只打开出错日志,因为过多的日志会影响系统的处理性能。5.0前支持文本和二进制格式,5.0后只支持二进制格式,因为二进制日志在性能、信息处理方面有更多的优点。
【配置】
在my.cnf里面配置binlog相关
#binlog
log-bin = mysql-bin #这些路径相对于datadir
max_binlog_size #binlog的最大默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束。
log-bin-index = mysql-bin.index #定义binlog的命名
binlog-do-db=db_name #只记录指定数据库的二进制日志
binlog-ignore-db=db_name #不记录指定数据库的二进制日志
sync_binlog #这个参数影响mysql的性能和完整性 ,为0时不做任何强制性的磁盘刷新指令,这时性能是最好的,但风险也是最大的。一旦系统Crash,在文件系统缓存中的所有Binlog信息都会丢失
binlog_cache_size #表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和binlog_cache_disk_use来帮助测试
max_binlog_cache_size #binlog使用的内存最大的尺寸
expire_logs_days=5 #日志文件过期时间
【样式】
-rw-rw----. 1 mysql mysql 106 Jul 15 13:53 mysql-bin.000012
-rw-rw----. 1 mysql mysql 106 Jul 15 14:02 mysql-bin.000013
-rw-rw----. 1 mysql mysql 5640912 Jul 16 11:25 mysql-bin.000014
-rw-rw----. 1 mysql mysql 483965 Jul 16 14:14 mysql-bin.000015
-rw-rw----. 1 mysql mysql 285 Jul 16 11:25 mysql-bin.index
mysql-bin.index记录binlog的文件名,增量备份时依据某一时刻的全备份来的。所以要定期全备份并翻滚日志。
【binlog操作】
[root@bogon mysql]# /usr/local/mysql/bin/mysqlbinlog mysql-bin.000015 | head -20
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#140716 11:25:44 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.72-log created 140716 11:25:44
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
uPDFUw8BAAAAZgAAAGoAAAABAAQANS4xLjcyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
'/*!*/;
# at 106
#140716 11:26:01 server id 1 end_log_pos 241 Query thread_id=10001 exec_time=0 error_code=0
use `cacti`/*!*/;
SET TIMESTAMP=1405481161/*!*/;
SET @@session.pseudo_thread_id=10001/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
mysqlbinlog用来读取binlog文件,里面的at就是log position ,下面一行的就是时间节点
还原实例:
mysqlbinlog mysql-bin.000002 | mysql -uroot -p
mysqlbinlog --stop-datetime="2010-09-05 10:55:44" mysql-bin.000002 | mysql -uroot -p
mysqlbinlog --start-position="2217830" --stop-position="2218050" mysql-bin.000014 | mysql -uroot -p test
【日志翻滚】
重新生成新的log
- 服务器重启
- 服务器被更新
- 日志达到了最大日志长度max_binlog_size
- 日志被刷新mysql> flush logs;
删除旧的log
- RESET MASTER
- purge master logs before '2013-07-30 01:27:04';
【参考】
http://blog.bytetouch.com/system-administration/mysql-backup-and-point-in-time-recovery-with-binary-logs/
http://dev.mysql.com/doc/refman/5.0/en/replication-options-binary-log.html#option_mysqld_log-bin
分享到:
相关推荐
MySQL Binlog 日志备份与还原 Binlog 日志是 MySQL 数据库中的一种二进制日志记录方式,用于记录所有对数据库状态的更改操作,如 create、drop、update 等。通过启用 Binlog 日志记录功能,可以实现在数据库崩溃或...
1. **开启binlog日志**:编辑配置文件`/etc/my.cnf`,在[mysqld]段落中添加如下配置: ``` server_id = 1 log_bin = mysql-bin expire_logs_days = 180 max_binlog_size = 500M binlog_format = ROW binlog-...
MySQL的二进制日志(Binary Log,简称binlog)是数据库系统中非常重要的一个功能,主要用于数据恢复、数据同步以及审计。它记录了所有改变数据库状态的事务,包括INSERT、UPDATE、DELETE等操作,为数据库提供了事务...
MySQL数据库的binlog日志是数据安全的重要保障,它记录了所有的DDL(Data Definition Language,如CREATE、ALTER、DROP等)和DML(Data Manipulation Language,如INSERT、UPDATE、DELETE等)语句,但不包括SELECT...
### MySQL正确清理Binlog日志的两种方法 #### 前言 在MySQL数据库中,Binlog(二进制日志)记录了所有更改数据库表结构或者数据的操作,这对于实现基于时间点的数据恢复、主从复制等场景至关重要。然而,随着...
MySQL binlog(二进制日志)是数据库系统中用于记录所有改变数据库状态的数据操作的重要组件,它在数据恢复和高可用性方案中扮演着关键角色。MySQL binlog远程备份是为了确保即使在本地服务器出现问题时,也能保持...
在本场景中,我们将探讨如何使用NiFi来实时监控MySQL数据库的binlog(二进制日志),并将其中的变更事件同步到Hive数据仓库。由于Hive的插入操作效率较低,这种方案通常不用于直接的实时写入,但可以作为数据流处理...
本篇文章将详细探讨完全备份、增量备份、差异备份以及binlog日志这四种备份方式,并阐述它们在MySQL环境中的应用。 **完全备份** 完全备份是指对数据库进行完整复制,包括所有数据表、索引、存储过程等所有对象。...
MySQL是世界上最流行的关系型数据库管理系统之一,而MySQL的binlog(二进制日志)是其核心特性之一,用于记录所有对数据库进行的更改操作。`mysql-binlog-connector-java` 是一个开源库,它允许Java应用程序实时读取...
例如,`show master logs`用于查看所有binlog日志列表,而`show master status`则显示当前binlog文件的名称和最后一个事件的Position值。`flush logs`命令将创建新的binlog文件,这通常在MySQL服务重启或使用`...
它基于MySQL的二进制日志(Binary Log,简称binlog)功能,能够帮助用户在发生错误或者数据丢失的情况下,通过binlog回溯到任意一个历史状态,实现数据的“闪回”。这里我们将详细探讨MySQL binlog闪回工具的工作...
- 在双机复制环境下,确保过期天数不应小于从机追赶主机binlog日志所需的时间。 - 过期日志的删除会在每次执行 `FLUSH LOGS` 或者 MySQL 服务重启时触发。 #### 方法四:通过配置文件设置 可以在 MySQL 的配置文件...
MySQL的Binlog日志处理工具是用来实时跟踪和记录数据库中的数据变更,以便于数据备份、同步和恢复。本文主要对比了三个流行的MySQL Binlog处理工具:Canal、Maxwell和Databus,以及阿里云的数据传输服务DTS。 1. **...
本文主要探讨了MySQL的错误日志、二进制日志(BINLOG)、数据备份和数据恢复这四个关键知识点。 首先,错误日志是MySQL在遇到任何故障时的第一参考源,它记录了服务器启动、关闭以及运行过程中的错误信息。错误日志...
本文将详细介绍 MySQL 实时增量备份和 XtraBackup 备份技术,并结合实际案例,演示如何使用 binlog 日志恢复删除的表记录。 MySQL 实时增量备份 MySQL 实时增量备份是指在 MySQL 服务器上实时记录所有的数据库...
启用binlog日志的第一步是调整MySQL服务器的配置文件`/etc/my.cnf`,确保以下设置正确: 1. **启用二进制日志并指定前缀**:在`[mysqld]`段落下加入`log-bin=mysql-bin`。这表示日志文件的前缀被设为`mysql-bin`。 ...