Below you will find pages that utilize the taxonomy term “主从复制”
November 24, 2012
mysql中的主从复制slave-skip-errors参数使用方法
"在主从复制中,难免会遇到一些sql语句错误的问题。这个时候我们需要手动来重新设置中继日志的起始点了,有些麻烦。今天在看“2012华东架构师大会”视频的时候,发现淘宝丁奇的ppt里有这个参数,看名字就知道是让从库跳过一些错误了。以前没有注意过这个参数,这里了解一下这个参数的用法。\n—————————————-\n环境说明:\nmysql\u0026gt;show slave stsatus\\G;\n报错信息如下:\n……\nLast_Errno: 1062\nLast_Error: Error ‘Duplicate entry ‘1’ for key ‘PRIMARY” on query…….\n……\n1062的错误是指一些主键重复的错误,在my.cnf用slave-skip-erros 可以跳过去。这样就避免了由于sql出错导致的从复制失效。\n—————————————-\nError_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;\n造成1032错误的根本原因是主从数据库数据不一致,导致同步操作在从库上无法执行.解决办法同上\n在slave的my.cnf …"
September 26, 2011
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:\nThe position, ON THE MASTER, from which the I/O thread is reading: Master_Log_File/Read_Master_Log_Pos. —–相对于主库,从库读取主库的二进制日志的位置,是IO线程\nThe position, IN THE RELAY LOGS, at which the SQL thread is executing: Relay_Log_File/Relay_Log_Pos —-相对于从库,是从库的sql线程执行到的位置\nThe position, ON THE MASTER, at which the SQL thread is executing: Relay_Master_Log_File/Exec_Master_Log_Pos —-相对于主库,是从库的sql线程执行到的位置\nNumbers 2) and 3) …"
September 26, 2011
mysql主从复制原理
"Replication 线程 Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。\n要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary Log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全 顺序的执行日志中所记录的各种操作。打开 MySQL 的 Binary Log 可以通过在启动 MySQL Server 的过程中使用 “—log-bin” 参数选项,或者在 my.cnf 配置文件中的 mysqld 参数组([mysqld]标识后的参数部分)增加 “log-bin” 参数项。\nMySQL 复制的基本过程如下:\nSlave 上面的IO线程连 …"
December 13, 2010
show slave status 参数详解
"有关mysql主从复制原理请参考: http://blog.haohtml.com/archives/11507\nSlave_IO_State: 等待 master 发生事件\nMaster_Host: 当前的主服务器主机\nMaster_User: 被用于连接主服务器的当前用户\nMaster_Port: 当前的主服务器接口\nConnect_Retry: master-connect-retry选项的当前值\nMaster_Log_File:SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称\nRead_Master_Log_Pos:在当前的主服务器二进制日志中,SLAVE中的I/O线程已经读取的位置\nRelay_Log_File:SQL线程当前正在读取和执行的中继日志文件的名称\nRelay_Log_Pos:在当前的中继日志中,SQL线程已读取和执行的位置\nRelay_Master_Log_File:由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称\nSlave_IO_Running:I/O …"
July 20, 2010
mysqlbinlog:处理mysql binlog二进制日志文件的实用工具
"服务器生成的二进制日志文件写成二进制格式。要想检查这些文本格式的文件,应使用mysqlbinlog实用工具。 应这样调用mysqlbinlog:\nshell\u0026gt; mysqlbinlog [options] log-files… 例如,要想显示二进制日志binlog.000003的内容,使用下面的命令:\nshell\u0026gt; mysqlbinlog binlog.0000003 输出包括在binlog.000003中包含的所有语句,以及其它信息例如每个语句花费的时间、客户发出的线程ID、发出线程时的时间戳等等。\n通常情况,可以使用mysqlbinlog直接读取二进制日志文件并将它们用于本地MySQL服务器。也可以使用–read-from-remote-server选项从远程服务器读取二进制日志。\n当读取远程二进制日志时,可以通过连接参数选项来指示如何连接服务器,但它们经常被忽略掉,除非你还指定了–read-from-remote-server选项。这些选项是–host、–password、–port、–protocol、–socket和–user。\n还可以使用mysqlbinlog来读 …"
April 21, 2010
mysql集群强制从主服务器阻塞更新直到从服务器同步?
"Q:我怎样强制主服务器阻塞更新直到从服务器同步?\nA:使用下面的步骤:\n1.在主服务器上,执行这些语句:\nmysql\u0026gt; FLUSH TABLES WITH READ LOCK; mysql\u0026gt; SHOW MASTER STATUS; 记录SHOW语句的输出的日志名和偏移量。这些是复制坐标。2.在从服务器上,发出下面的语句,其中Master_POS_WAIT()函 数的参量是前面步骤中的得到的复制坐标值:\nmysql\u0026gt; SELECT MASTER_POS_WAIT(\u0026#39;log_name\u0026#39;, log_offset); SELECT语句阻塞直到从服务器达到指定的日志文件和偏移量。此时,从服务器与主服务器同步,语句返回。\n3.在主服务器上,发出下面的语句允许主服务器重新开始处理更新:\nmysql\u0026gt; UNLOCK TABLES; 来源:http://dev.mysql.com/doc/refman/5.1/zh/replication.html#replication-faq "
November 5, 2009
MySQL 同步常见问题
"6 MySQL 同步 同步功能在MySQL 3.23.15就开始引进了,它可以把一个MySQL服务器上的数据复制到另一个服务器上去。本章描述了MySQL的各种复制特性。介绍了同步的概念,如何设置同步服务器,以及可用服务器的参照。还提供了一系列的常见问题及其答案,疑难解答。\n“14.6 Replication Statements“中介绍了同步相关的SQL语句语法。\n我们建议经常访问”http://www.mysql.com“经常阅读本章的最新内容。同步功能一直在改进,我们经常把这部分的手册更新到当前的最新内容。\n6.1 同步介绍 MySQL 3.23.15及更高的版本支持单向同步。一个服务器作为master(主服务器),一个或者多个服务器作为slave(从服务器)。master服务器 把更新的内容写到二进制日志(binary log或binlog)中,并且维护了一个索引文件来记录日志循环的情况。这些日志中的更新部分会被发送到slave服务器。一个slave连接到 master之后,它通知master最后一次成功增量更新的日志位置。slave会找出所有从那个时刻开始的更新操作,然后阻塞并 …"
November 2, 2009
(精典教程)在MySql上实现Replication(Master 与 Slave 数据同步)
"Master: 192.168.1.200 slave: 192.168.1.201\n1: 首先确定Master和Slave的数据库版本,Master数据库的版本不能高于Slave数据的版本。\n这里我是使用MySql 5.0.27 作为Master数据库,MySql 6.0.3(alpha)作为Slave进行测试。\n2:首先在Master数据库的配置文件my.ini (windows)里添加log-bin 和 server-id 两项\neg: [mysqld]\nserver-id = 1 //服务器编号\nlog-bin = mysql-bin //使用的二进制日志文件名 binlog-do-db=test = maindb //同步的数据库(不记录二进制日志) binlog-ignore-db=bbs //不允许同步的数据库(不记录二进制日志) binlog-ignore-db=ceshi //不允许同步的数据库库(不记录二进制日志)\n在Slave数据库的配置文件my.ini里添加server-id 项\neg:[mysqld]\nserver-id = 2 ** …"