快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

MySQL基础系列–binlog

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

什么是binlog_database_Mao Kunbao Juntai的博客-CSDN博客
mysqlbinlog的使用明细_database_JBBOY的专栏-CSDN博客

Binlog定义

  • binlog是一个二进制日志,记录所有数据库表结构更改(例如CREATE,ALTER TABLE…)和表数据修改(INSERT,UPDATE,DELETE…)。
  • binlog将不会记录诸如SELECT和SHOW之类的操作,因为这些操作本身不会修改数据,但是您可以通过查询常规日志来查看MySQL执行的所有语句。

Binlog使用情况

这三个目的是恢复复制审核(来自” MySQL Technology Insider InnoDB存储引擎”)

  • 恢复:恢复某些数据需要二进制日志。例如,在还原数据库文件的完整备份之后,用户可以通过二进制日志执行Point-iii-time恢复。
  • 复制(replication):原理类似于恢复。通过复制和执行二进制日志,远程MySQL数据库(通常称为从属或备用数据库)和MySQL数据库(通常称为主数据库或主数据库)用于实时同步。
  • 审核(audit):用户可以审核二进制日志中的信息,以确定是否对数据库进行了注入攻击。

? binlog格式

格式

定义

优势

缺点

记录是行数据的更改。 (默认格式

非常清楚地记录每个数据的详细更改细节。

Binlog日志将非常大。当mysql主从同步时,会产生很多磁盘IO

声明

记录的是修改数据的sql

无需记录每行的更改,日志文件很小,节省了IO,并提高了性能

精度差,某些系统函数无法准确复制或无法复制,例如now(),uuid()等。

混合

语句和行的组合:

常规语句修改使用语句格式来保存binlog。如果该语句无法完成主从复制操作(例如某些功能),则使用行格式来保存binlog。

行与语句之间的折衷。

可能会出现主从不一致

业界目前建议使用高精度的行模式。尽管文件很大,但有SSD和10千兆光纤网络。可以接受的。

?不建议使用混合模式,因为主机和从机之间可能存在不一致,如下所示:假设主机有两个记录,而从机只有一个记录。

当更新主服务器上不存在的记录(即ID = 2的记录)时,您会发现主服务器可以成功执行。从服务器获取SQL之后,它将照常执行,没有报告异常,但是更新操作不会影响行数。然后执行命令show slave status,检查输出,您将发现没有异常。但是,如果您处于行模式,由于此行根本不存在,将报告1062错误。

如何打开binlog

方法1:设置logbin =” on”;

方法2:修改配置文件

[mysqld]? #此行必须存在,否则将发生错误

#log_bin

log-bin = mysql-bin#打开binlog

binlog-format = ROW#选择行模式

server_id = 12345#配置需要定义mysql复制,不能与运河的slaveId重复

Binlog相关命令

命令

功能

mysqlbinlog [options]日志文件

查看binlog文件

显示类似” binlog_format”的变量;

检查mysql的binlog模式

显示类似” log_bin”的变量;

检查mysql是否已启用binlog同步功能。 默认为关闭

显示二进制日志

获取Binlog文件日志列表

显示主状态

查看当前正在写入的binlog文件

显示主日志

在主数据库上查看binlog文件

显示binlog事件

查看第一个binlog文件的内容

显示binlog事件” mysql-bin.000002″

查看指定binlog文件的内容,例如:查看mysql-bin.000002文件的内容

mysqlbinlog选项和含义

选项

含义

—帮助,-?

显示帮助消息并退出。

—数据库= db_name,-d db_name

仅列出数据库的条目(仅使用本地日志)。

-force-read,-f

使用此选项,如果mysqlbinlog读取无法识别的二进制日志事件,它将打印警告,忽略该事件并继续。没有这个选项,如果mysqlbinlog读取了这样的事件,它将停止。

-hexdump,-H

在注释中显示日志的十六进制转储。此输出可帮助在复制过程中进行调试。该选项是在MySQL 5.1.2中添加的。

-host =主机名,-h主机名

获取给定主机上MySQL服务器的二进制日志。

-local-load = path,-l path

对指定目录中的LOAD DATA INFILE进行本地临时文件的预处理。

-offset = N,-o N

跳过前N个条目。

-密码[=密码],-p [密码]

连接到服务器时使用的密码。如果使用简短选项格式(-p),则选项和密码之间必须没有空格。如果命令行的-password或-p选项后没有密码值,将提示您输入密码。

-port = port_num,-P port_num

用于连接到远程服务器的TCP/IP端口号。

-position = N,-j N

不建议使用-start-position。

-协议= {TCP |袜子管道|位置

使用的连接协议。

-从远程服务器读取-R

从MySQL服务器读取二进制日志。如果未提供此选项,则将忽略任何连接参数选项。选项为-host,-password,-port,-protocol,-socket和-user。

-result-file =名称,-r名称

将输出定向到给定的文件。

-短格式-s

仅显示日志中包含的句子,不显示其他信息。

-socket =路径,-S路径

用于连接的套接字文件。

-start-datetime = datetime

从二进制日志中日期时间等于或晚于datetime参数的第一个事件开始读取。 datetime值相对于运行mysqlbinlog的计算机上的本地时区。值格式应符合DATETIME或TIMESTAMP数据类型。例如:shell> mysqlbinlog-start-datetime =” 2004-12-25 11:25:56″ binlog.000003此选项可以帮助点对点恢复。

-stop-datetime = datetime

停止从datetime等于或晚于datetime参数的二进制日志中的第一个事件读取。有关日期时间值的描述,请参见-start-datetime选项。此选项可以帮助及时恢复。

-开始位置= N

当二进制日志中的第一个位置等于N参数时,从事件中读取。

-停止位置= N

当二进制日志中的第一个位置等于或大于N参数时,停止从事件中读取。

-to-last-logs,-t

不要在MySQL服务器中所请求的二进制日志的结尾处停止,而要继续打印直到最后一个二进制日志的结尾。如果将输出发送到同一MySQL服务器,将导致无限循环。此选项需要-read-from-remote-server。

-disable-logs-bin,-D

禁用二进制日志记录。如果使用-to-last-logs选项将输出发送到同一MySQL服务器,则可以避免无限循环。从崩溃中恢复时,此选项也很有用,以避免复制已经记录的语句。注意:此选项需要SUPER权限。

-user =用户名,-u用户名

连接到远程服务器时使用的MySQL用户名。

-version,-V

显示版本信息并退出。您也可以使用-var_name = value选项设置以下变量:open_files_limit指定要保留的打开文件描述符的数量。

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1922638