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主从数据库分离是数据库高可用性和负载均衡的一种常见实现方式。它主要通过复制技术,使得数据在主库(Master)上写入后,能够自动地同步到从库(Slave)上,以此来保证数据的一致性,并分散读取操作的压力,...
这里我们将深入探讨几个常用的MySQL维护命令,包括`ANALYZE TABLE`、`CHECKSUM TABLE`、`OPTIMIZE TABLE`、`CHECK TABLE`以及`REPAIR TABLE`。 1. **ANALYZE TABLE**: `ANALYZE TABLE`命令用于收集和更新表统计...
以下是一些基于MySQL面试题的常见知识点,旨在帮助求职者准备面试。 1. **MySQL基础知识** - **数据库模型**:了解ER模型、关系模型,以及它们在数据库设计中的应用。 - **SQL语言**:掌握SELECT, INSERT, UPDATE...
MySQL 数据库主从复制是一种常见的高可用性和数据冗余策略,它允许从一个主数据库(Master)异步或半同步地复制数据到一个或多个从数据库(Slave)。这个过程涉及到多个线程和日志机制,确保数据的一致性。 1. **...
13. **读写分离**:将读操作分配给从库,写操作在主库执行,提高系统并发能力,常见的方案有MySQL Proxy、中间件如LVS、HAProxy等。 14. **主备延迟**:主库写入后,通过同步复制机制将binlog传输给从库,确保...
根据提供的文档内容,我们可以整理出关于 MySQL 主从配置的关键知识点,包括配置的步骤、注意事项以及具体的操作细节等。 ### MySQL 主从配置知识点 #### 一、概览 MySQL 的主从配置是一种常见的高可用性和数据...
以下是一份精心整理的MySQL面试题集,涵盖了从基础到进阶的多种问题,帮助你全面理解MySQL的核心概念、性能优化以及最佳实践。 1. **基本概念** - 什么是ACID特性?它包含哪四个原则? - 解释一下SQL的三大范式,...
在MySQL数据库管理中,随着时间的推移,数据库表可能会出现各种问题,比如数据损坏、碎片过多等,这时就需要使用特定的命令来进行维护和优化。本文将详细介绍两种常用的MySQL命令:`REPAIR TABLE` 和 `OPTIMIZE ...
InnoDB表的碎片整理可以通过`ANALYZE TABLE`或`OPTIMIZE TABLE`命令进行,而模糊检查点(fuzzy checkpoint)是指在InnoDB中的一种优化策略,用于控制redo log的刷新,以平衡性能和安全性。 MySQL的恢复操作通常涉及...
使用二进制日志(binlog)进行增量备份,通过`mysqlbinlog`命令恢复。二进制日志记录了所有改变数据库状态的事务,可用于灾难恢复。 4. SQL语法备份 通过`BACKUP TABLE`或`SELECT INTO OUTFILE`语句进行备份,简单...
6. **CPU占用问题**:针对w3wp进程CPU占用100%的情况,通常需要通过top或htop命令找出问题进程,进一步分析其日志或进行性能分析以定位原因。 7. **沪江理解**:沪江是一家在线教育平台,了解其业务和技术架构能...
GC(垃圾收集)机制用于自动释放不再使用的内存空间,主要分为新生代和老年代的垃圾收集,常见的GC算法有复制算法、标记-清除算法、标记-整理算法以及分代收集算法。Full GC通常在老年代空间不足、手动调用System.gc...
MySQL的binlog有ROW、STATEMENT和MIXED模式,ROW模式提供了最佳的恢复和复制性能。事务隔离级别包括读未提交、读已提交、可重复读和串行化,MySQL默认为可重复读。 七、Redis Redis速度快的原因包括基于内存存储、...
#### 十二、MySQL主从同步及读写分离 **12.1 MySQL主从复制** - **原理**: 主库记录二进制日志,从库通过IO线程读取并执行这些日志。 - **实现**: 通过binlog日志实现数据同步。 **12.2 Mycat读写分离** - **...