MySQL Binlog 权限

Posted 云居

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL Binlog 权限相关的知识,希望对你有一定的参考价值。

  • Check binlog status
-- https://github.com/alibaba/canal/wiki/AdminGuide
show variables like \'log_bin\';
show variables like \'binlog_format\';
  • MySQL Binlog权限需要三个权限 SELECT, REPLICATION SLAVE, REPLICATION CLIENT
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO \'canal\'@\'%\' IDENTIFIED BY \'canal\';
  • 缺乏SELECT权限时,报错为
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
Access denied for user \'canal\'@\'%\' to database \'binlog\'
  • 缺乏REPLICATION SLAVE权限时,报错为
java.io.IOException: 
Error When doing Register slave:ErrorPacket [errorNumber=1045, fieldCount=-1, message=Access denied for user \'canal\'@\'%\'
  • 缺乏REPLICATION CLIENT权限时,报错为
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation
  • Binlog为什么需要这些权限:

  • Select权限代表允许从表中查看数据

Replication client权限代表允许执行show master status,show slave status,show binary logs命令
Replication slave权限代表允许slave主机通过此用户连接master以便建立主从 复制关系

 

mysql主从复制

一、主从复制原理过程

 

 

1、Slave 服务器上执行 start slave,开启主从复制开关。

2、此时,Slave服务器的IO线程会通过在Master上授权的复制用户权限请求连接Master服务器,并请求从指定Binlog 日志文件的指定位置(日志文件名和位置就是在配置主从复制服务时执行 change master 命令时指定的)之后发送 Binlog 日志内容。

3、Master 服务器接收到来自 Slave 服务器的 IO 线程的请求后,Master 服务器上负责复制的IO线程根据 Slave服务器的IO 线程请求的信息读取指定Binlog日志文件指定位置之后的Binlog日志信息,然后返回给Slave端的IO线程。返回的信息中除了 Binlog 日志内容外,还有本次返回日志内容后在 Master 服务器端的新的 Binlog 文件名称以及在 Binlog中的下一个指定更新位置。

4、当 Slave 服务器的IO 线程获取到来自 Master 服务器上 10 线程发送日志内容及日志文件及位置点后,将Binlog日志内容依次写入到 Slave 端自身的 Relay Log(即中继日志)文件(MySQL-relay-bin.xxxxxx)的最末端,并将新的 Binlog 文件名和位置记录到master-info文件中,以便下一次读取Master端新Binlog日志时能够告诉 Master服务器需要从新 Binlog日志的哪个文件哪个位置开始请求新的Binlog 日志内容。。

5、Slave 服务器端的SQL线程会实时的检测本地RelayLog中新增加的日志内容,然后及时的把Log文件中的内容解析成在 Master 端曾经执行的 SQL 语句的内容,并在自身 Slave服务器上按语句的顺序执行应用这些SQL语句,应用完毕后清理应用过的日志。

6、经过了上面的过程,就可以确保在 Master 端和 Slave 端执行了同样的 SQL 语句。当复制状态正常的情况下,Master端和Slave端的数据是完全一样的,MySQL 的同步机制是有一些特殊的情况的,具体请参考官方的说明。

 

 

二、主从搭建

1、准备两台服务器:

主服务器:192.168.1.70;备服务器:192.168.1.71

 

 

 

以上是关于MySQL Binlog 权限的主要内容,如果未能解决你的问题,请参考以下文章

mysql主从同步 binlog-do-db replicate-do-db

Mysql 5.6主从同步配置

File /data/binlog/mysql-bin.index' not found (Errcode: 13)

mysql主从复制

Canal实现MySQL数据实时同步

MYSQL的binlog问题