mysql中的主从复制slave-skip-errors参数使用方法

在主从复制中,难免会遇到一些sql语句错误的问题。这个时候我们需要手动来重新设置中继日志的起始点了,有些麻烦。今天在看“2012华东架构师大会”视频的时候,发现淘宝丁奇的ppt里有这个参数,看名字就知道是让从库跳过一些错误了。以前没有注意过这个参数,这里了解一下这个参数的用法。

—————————————-

环境说明:

mysql>show  slave stsatus\G;

报错信息如下:

……

Last_Errno: 1062

Last_Error: Error ‘Duplicate entry ‘1’ for key ‘PRIMARY” on query…….

……

1062的错误是指一些主键重复的错误,在my.cnf用slave-skip-erros 可以跳过去。这样就避免了由于sql出错导致的从复制失效。

—————————————-

Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;

造成1032错误的根本原因是主从数据库数据不一致,导致同步操作在从库上无法执行.解决办法同上

在slave的my.cnf里面写入
slave-skip-errors = 1062
启动后它将会忽略所有类型为1062的错误.

show slave status\G中的Read_Master_Log_Pos和Relay_Log_Pos的(大小)关系

Just to clarify, there are three sets of file/position coordinates in SHOW SLAVE STATUS:

1) The position, ON THE MASTER, from which the I/O thread is reading: Master_Log_File/Read_Master_Log_Pos. —–相对于主库,从库读取主库的二进制日志的位置,是IO线程

2) The position, IN THE RELAY LOGS, at which the SQL thread is executing: Relay_Log_File/Relay_Log_Pos —-相对于从库,是从库的sql线程执行到的位置

3) The position, ON THE MASTER, at which the SQL thread is executing: Relay_Master_Log_File/Exec_Master_Log_Pos —-相对于主库,是从库的sql线程执行到的位置

Numbers 2) and 3) are the same thing, but one is on the slave and the other is on the master. Continue reading

mysql主从复制原理

Replication 线程
Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。

要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary Log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全 顺序的执行日志中所记录的各种操作。打开 MySQL 的 Binary Log 可以通过在启动 MySQL Server 的过程中使用 “—log-bin” 参数选项,或者在 my.cnf 配置文件中的 mysqld 参数组([mysqld]标识后的参数部分)增加 “log-bin” 参数项。 Continue reading

show slave status 参数详解

有关mysql主从复制原理请参考:http://blog.haohtml.com/archives/11507

Slave_IO_State:等待 master 发生事件

Master_Host:当前的主服务器主机
Master_User:被用于连接主服务器的当前用户
Master_Port:当前的主服务器接口
Connect_Retry:master-connect-retry选项的当前值
Master_Log_File:SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称
Read_Master_Log_Pos:在当前的主服务器二进制日志中,SLAVE中的I/O线程已经读取的位置
Relay_Log_File:SQL线程当前正在读取和执行的中继日志文件的名称
Relay_Log_Pos:在当前的中继日志中,SQL线程已读取和执行的位置
Relay_Master_Log_File:由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称
Slave_IO_Running:I/O线程是否被启动并成功地连接到主服务器上
Slave_SQL_Running:SQL线程是否被启动

Replicate_Do_DB:replicate-do-db选项的当前值 Continue reading

mysqlbinlog:处理mysql binlog二进制日志文件的实用工具

服务器生成的二进制日志文件写成二进制格式。要想检查这些文本格式的文件,应使用mysqlbinlog实用工具。
应这样调用mysqlbinlog:

shell> mysqlbinlog [options] log-files…
例如,要想显示二进制日志binlog.000003的内容,使用下面的命令:

shell> mysqlbinlog binlog.0000003
输出包括在binlog.000003中包含的所有语句,以及其它信息例如每个语句花费的时间、客户发出的线程ID、发出线程时的时间戳等等。

通常情况,可以使用mysqlbinlog直接读取二进制日志文件并将它们用于本地MySQL服务器。也可以使用–read-from-remote-server选项从远程服务器读取二进制日志。

当读取远程二进制日志时,可以通过连接参数选项来指示如何连接服务器,但它们经常被忽略掉,除非你还指定了–read-from-remote-server选项。这些选项是–host、–password、–port、–protocol、–socket和–user。 Continue reading

MySQL 同步常见问题

6 MySQL 同步

同步功能在MySQL 3.23.15就开始引进了,它可以把一个MySQL服务器上的数据复制到另一个服务器上去。本章描述了MySQL的各种复制特性。介绍了同步的概念,如何设置同步服务器,以及可用服务器的参照。还提供了一系列的常见问题及其答案,疑难解答。

14.6 Replication Statements“中介绍了同步相关的SQL语句语法。

我们建议经常访问”http://www.mysql.com“经常阅读本章的最新内容。同步功能一直在改进,我们经常把这部分的手册更新到当前的最新内容。 Continue reading