MySQL手册版本 5.0.20-MySQL同步

2016-01-29 13:51 2 1 收藏

MySQL手册版本 5.0.20-MySQL同步,MySQL手册版本 5.0.20-MySQL同步

【 tulaoshi.com - PHP 】

6 MySQL 同步

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

6.1 同步介绍

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

MySQL 3.23.15及更高的版本支持单向同步。一个服务器作为master(主服务器),一个或者多个服务器作为slave(从服务器)。master服务器把更新的内容写到二进制日志(binary log或binlog)中,并且维护了一个索引文件来记录日志循环的情况。这些日志中的更新部分会被发送到slave服务器。一个slave连接到master之后,它通知master最后一次成功增量更新的日志位置。slave会找出所有从那个时刻开始的更新操作,然后阻塞并等待master发送新的更新操作。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

如果想要做一个同步服务器链的话,slave同时也可以作为master。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

注意,启用同步后,所有要同步的更新操作都必须在master上执行。否则,必须注意不要造成用户在master上的更新和在slave上的更新引起冲突。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

单向同步的好处是稳健,高速,系统易管理:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

有了master/slave机制后,就更稳健了。当master上发生问题时,可以把slave作为备用切换过去。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

可以在slave和master之间分担一些查询,这就能加速响应时间。SELECT 查询就可以在slave上执行以减少master的负载。更新数据的语句则要放在mater上执行以保持master和slave的同步。当非更新操作占多数时,负载均衡就很有效了,不过这只是普通情况而言。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

另一个好处是可以在slave上备份数据,无需干扰master。备份数据时master照样继续运作。详情请看"5.7.1 Database Backups"。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

6.2 同步机制实现概述

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

MySQL同步机制基于master把所有对数据库的更新、删除 等)都记录在二进制日志里。因此,想要启用同步机制,在master就必须启用二进制日志。详情请看"5.9.4 The Binary Log"。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

每个slave接受来自master上在二进制日志中记录的更新操作,因此在slave上执行了这个操作的一个拷贝。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

应该非常重要地意识到,二进制日志只是从启用二进制日志开始的时刻才记录更新操作的。所有的slave必须在启用二进制日志时把master上已经存在的数据拷贝过来。如果运行同步时slave上的数据和master上启用二进制日志时的数据不一致的话,那么slave同步就会失败。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

把master上的数据拷贝过来的方法之一实在slave上执行 LOAD DATA FROM MASTER 语句。不过要注意,LOAD DATA FROM MASTER 是从MySQL 4.0.0之后才开始可以用的,而且只支持master上的 MyISAM 类型表。同样地,这个操作需要一个全局的读锁,这样的话传送日志到slave的时候在master上就不会有更新操作了。当实现了自由锁表热备份时(在MySQL 5.0中),全局读锁就没必要了。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

由于有这些限制,因此我们建议只在master上相关数据比较小的时候才执行 LOAD DATA FROM MASTER 语句,或者在master上允许一个长时间的读锁。由于每个系统之间 LOAD DATA FROM MASTER 的速度各不一样,一个比较好的衡量规则是每秒能拷贝1MB数据。这只是的粗略的估计,不过master和slave都是奔腾700MHz的机器且用100MB

来源:https://www.tulaoshi.com/n/20160129/1491749.html

延伸阅读
标签: PHP
连接类型跟 ALL 一样,不同的是它只扫描索引树。它通常会比 ALL 快点,因为索引文件通常比数据文件小。MySQL在查询的字段知识单独的索引的一部分的情况下使用这种连接类型。 ALL 将对该表做全部扫描以和从前一个表中取得的记录作联合。这时候如果第一个表没有被标识为 const 的话就不大好了,在其他情况下通常...
标签: PHP
想要提高 ORDER BY 的速度,首先要看MySQL能否使用索引而非额外的排序过程。如果不能使用索引,可以试着遵循以下策略: 增加 sort_buffer_size 的值。 增加 read_rnd_buffer_size 的值。 修改 tmpdir,让它指向一个有很多剩余空间的专用文件系统。如果使用MySQL 4.1或更新,这个选项允许有多个路径用循环的格...
标签: PHP
通常地,应该保存所有的冗余数据(在数据库原理中叫做"第三范式")。然而,为了能取得更高的效率复制一些信息或者创建摘要表也是划算的。 存储过程或者 UDFs(用户定义函数) 的方式在执行一些任务时可能性能更高。尽管如此,当数据库不支持这些特性时,还是有其他的替代方法可以达到目的,即使它们有点慢。 可...
标签: PHP
7.2.12 加速 INSERT 插入一条记录花费的时间由以下几个因素决定,后面的数字大致表示影响的比例: 连接:(3) 发送查询给服务器:(2) 解析查询:(2) 插入记录:(1 x 记录大小) 插入索引:(1 x 索引数量) 关闭:(1) 这里并没有考虑初始化时打开数据表的开销,因为每次运行查询只会做这么一次...
mysql从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。 数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件(一般是my.cnf),在unix环境下在/etc/mysql/my.cnf 或者在mysql用户的home目录下的my.cnf。 window环境中,如果c:根目录下有my.cnf文件则...

经验教程

970

收藏

10
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部