`

mysql binlog 常用命令及问题整理

阅读更多


1:开启binlog日志记录

# log-bin
log-bin = E:/log/logbin.log


查看备份的二进制文件
c:\mysql\bin\>mysqlbinlog e:/log/logbin.000001


">": 导入到文件中; ">>": 追加到文件中
c:\mysql\bin\> mysqlbinlog e:/log/logbin.000001 > e:/log/log.sql
c:\mysql\bin\> mysqlbinlog e:/log/logbin.000002 >> e:/log/log.sq

2.2 按指定位置导出:
c:\mysql\bin\>mysqlbinlog --start-position=185 --stop-position=338 e:/log/logbin.000001 > e:/log/log3.txt

2.3 按指定时间导出:
c:\mysql\bin\>mysqlbinlog --start-datetime="2010-01-07 11:25:56" --stop-datetime="2010-01-07 13:23:50" e:/log/logbin.000001 > e:/log/log_by_date22.txt


3:从备份恢复数据库
c:\mysql\bin\>mysqlbinlog e:/log/logbin.000001 | mysql -u root -p
mysqlbinlog d:/mysql/data/binlog.000001 | mysql -uroot -pxcg213

3.2 按指定位置恢复:


c:\mysql\bin\>mysqlbinlog --start-position=185 --stop-position=338 e:/log/logbin.000001 | mysql -u root -p

3.3 按指定时间恢复:


c:\mysql\bin\>mysqlbinlog --start-datetime="2010-01-07 11:25:56" --stop-datetime="2010-01-07 13:23:50" e:/log/logbin.000001 | mysql -u root -p

3.4 通过导出的脚本文件恢复


c:\mysql\bin\>mysql -e "source e:/log/log.sql"

4.其他常用操作
4.1 查看所有日志文件

Sql代码
复制代码 代码如下:

mysql>show master logs;

4.2 当前使用的binlog文件
>show binlog events;

mysql>show binlog events \g;

4.3 产生一个新的binlog日志文件
Sql代码
复制代码 代码如下:

mysql>flush logs;

4.4 删除所有二进制日志,并从新开始记录(注意:reset master命令会删除所有的二进制日志)


mysql > flush logs;
mysql > reset master;

4.5 快速备份数据到sql文件


c:\mysql\bin>mysqldump -u root -p --opt --quick interactive > e:/log/mysqldump.sql

为了方便查看,把从脚本恢复的命令在写一次

c:\mysql\bin\>mysql -e "source e:/log/mysqldump.sql"
更换策略:
使用索引来循环文件,在以下条件将循环至下一个索引
1。服务器重启
2。服务器被更新
3。日志到达了最大日志长度 max_binlog_size
4。日志被刷新 mysql> flush logs;
-------------------------------------------
2.记录到二进制日志知的内容配置
binlog-do-db=sales 只记录sales库
binlog-ignore-db=sales 除sales库不记录,其他都记录

但是如果在操作数据库之前,不使用use $dbname 那么所有的SQL都不会记录
如果使用了use $dbname,那么判断规则取决于这里的$dbname,而不是SQL中操作的库

----------------------------------------------------------------------------------
ERROR 1665 (HY000) at line 33: Cannot execute statement: impossible to write to
binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage
 engine limited to row-based logging. InnoDB is limited to row-logging when tran
saction isolation level is READ COMMITTED or READ UNCOMMITTED.

解决办法:
mysql> SET SESSION binlog_format = 'ROW';
   mysql> SET GLOBAL binlog_format = 'ROW';

解释参考:http://www.cnblogs.com/sunson/archive/2012/05/28.html
msyql>show variables like 'binlog%';
当然了,也能够在运行时动态修正binlog的款式。例如

mysql> SET SESSION binlog_format = 'STATEMENT';
mysql> SET SESSION binlog_format = 'ROW';
mysql> SET SESSION binlog_format = 'MIXED';

mysql> SET GLOBAL binlog_format = 'STATEMENT';
mysql> SET GLOBAL binlog_format = 'ROW';
mysql> SET GLOBAL binlog_format = 'MIXED';

-------------------------------------------------------------------------------------
3.二进制日志不准确的处理http://www.lampblog.net/2011/01/mysql-binlog%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%97%A5%E5%BF%97%E8%AF%A6%E8%A7%A3/
默认情况下,并不是每次写入时都将二进制日志与硬盘同步。因此如果操作系统或机器(不仅仅是MySQL服务器)崩溃,有可能二进制日志中最后的语句丢失。
要想防止这种情况,你可以使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使二进制日志在每N次二进制日志写入后与硬盘同步。
即使sync_binlog设置为1,出现崩溃时,也有可能表内容和二进制日志内容之间存在不一致性。

如果崩溃恢复时MySQL服务器发现二进制日志变短了(即至少缺少一个成功提交的InnoDB事务),
如果sync_binlog =1并且硬盘/文件系统的确能根据需要进行同步(有些不需要)则不会发生,则输出错误消息 (“二进制日志<名>比期望的要小”)。
在这种情况下,二进制日志不准确,复制应从主服务器的数据快照开始。
为了您的安全,请只打开来源可靠的网址

分享到:
评论

相关推荐

    Mysql主从数据库分离原理及配置方法资料整理

    MySQL主从数据库分离是数据库高可用性和负载均衡的一种常见实现方式。它主要通过复制技术,使得数据在主库(Master)上写入后,能够自动地同步到从库(Slave)上,以此来保证数据的一致性,并分散读取操作的压力,...

    mysql 维护常用命令

    这里我们将深入探讨几个常用的MySQL维护命令,包括`ANALYZE TABLE`、`CHECKSUM TABLE`、`OPTIMIZE TABLE`、`CHECK TABLE`以及`REPAIR TABLE`。 1. **ANALYZE TABLE**: `ANALYZE TABLE`命令用于收集和更新表统计...

    MySQL面试题及答案 最新版MySQL面试题大全,发现网上很多MySQL面试题及答案整理都没有答案,所以花了很长时间搜集

    以下是一些基于MySQL面试题的常见知识点,旨在帮助求职者准备面试。 1. **MySQL基础知识** - **数据库模型**:了解ER模型、关系模型,以及它们在数据库设计中的应用。 - **SQL语言**:掌握SELECT, INSERT, UPDATE...

    Mysql数据库主从心得整理1

    MySQL 数据库主从复制是一种常见的高可用性和数据冗余策略,它允许从一个主数据库(Master)异步或半同步地复制数据到一个或多个从数据库(Slave)。这个过程涉及到多个线程和日志机制,确保数据的一致性。 1. **...

    最新mysql面试题整理大厂必备,你能答对几个?

    13. **读写分离**:将读操作分配给从库,写操作在主库执行,提高系统并发能力,常见的方案有MySQL Proxy、中间件如LVS、HAProxy等。 14. **主备延迟**:主库写入后,通过同步复制机制将binlog传输给从库,确保...

    mysql 主从配置

    根据提供的文档内容,我们可以整理出关于 MySQL 主从配置的关键知识点,包括配置的步骤、注意事项以及具体的操作细节等。 ### MySQL 主从配置知识点 #### 一、概览 MySQL 的主从配置是一种常见的高可用性和数据...

    mysql面试题 92问

    以下是一份精心整理的MySQL面试题集,涵盖了从基础到进阶的多种问题,帮助你全面理解MySQL的核心概念、性能优化以及最佳实践。 1. **基本概念** - 什么是ACID特性?它包含哪四个原则? - 解释一下SQL的三大范式,...

    mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)

    在MySQL数据库管理中,随着时间的推移,数据库表可能会出现各种问题,比如数据损坏、碎片过多等,这时就需要使用特定的命令来进行维护和优化。本文将详细介绍两种常用的MySQL命令:`REPAIR TABLE` 和 `OPTIMIZE ...

    MySQL备份与恢复(PDF版)借鉴.pdf

    InnoDB表的碎片整理可以通过`ANALYZE TABLE`或`OPTIMIZE TABLE`命令进行,而模糊检查点(fuzzy checkpoint)是指在InnoDB中的一种优化策略,用于控制redo log的刷新,以平衡性能和安全性。 MySQL的恢复操作通常涉及...

    MySQL备份与恢复(PDF版).pdf

    使用二进制日志(binlog)进行增量备份,通过`mysqlbinlog`命令恢复。二进制日志记录了所有改变数据库状态的事务,可用于灾难恢复。 4. SQL语法备份 通过`BACKUP TABLE`或`SELECT INTO OUTFILE`语句进行备份,简单...

    上海Linux运维工程师-面试题-个人总结).pdf

    6. **CPU占用问题**:针对w3wp进程CPU占用100%的情况,通常需要通过top或htop命令找出问题进程,进一步分析其日志或进行性能分析以定位原因。 7. **沪江理解**:沪江是一家在线教育平台,了解其业务和技术架构能...

    BATJ面试题汇总及详解(进大厂必看)

    GC(垃圾收集)机制用于自动释放不再使用的内存空间,主要分为新生代和老年代的垃圾收集,常见的GC算法有复制算法、标记-清除算法、标记-整理算法以及分代收集算法。Full GC通常在老年代空间不足、手动调用System.gc...

    20-BAT面试题汇总及详解(进大厂必看).docx

    MySQL的binlog有ROW、STATEMENT和MIXED模式,ROW模式提供了最佳的恢复和复制性能。事务隔离级别包括读未提交、读已提交、可重复读和串行化,MySQL默认为可重复读。 七、Redis Redis速度快的原因包括基于内存存储、...

    java中高级面试必备技术

    #### 十二、MySQL主从同步及读写分离 **12.1 MySQL主从复制** - **原理**: 主库记录二进制日志,从库通过IO线程读取并执行这些日志。 - **实现**: 通过binlog日志实现数据同步。 **12.2 Mycat读写分离** - **...

Global site tag (gtag.js) - Google Analytics