来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] Mysql之所以可以实现主从服务器之间的同步,是因为主服务器端的事件(events)写到了 binary log 中,然后在从服务器上再次执行这些事件。事件写入BINLOG中,主要有以下三种 26684;式:1、基...
Mysql之所以可以实现主从服务器之间的同步,是因为主服务器端的事件(events)写到了 binary log 中,然后在从服务器上再次执行这些事件。 事件写入BINLOG中,主要有以下三种格式: 1、基于语句的记录(Statement-Based Replication) 这种类型的优点包括: A、从3.23版本以来,MYSQL只有这一种类型,所以这种类型已经被实践所证实; B、写入BINLOG的数据相对来说少一些,特别是更新很多行的语句,不用把每行的变化记录下来; C、所有更改数据库的语句都会被记录下来,可以用来监督数据库。 这种类型的缺点也很明显,是一种不“安全”的记录方式: A、不能更新不缺定地行;比如UPDATE语句中有不加ORDER的LIMIT; B、 LOAD_FILE() 比如,使用SBR(STATEMENT-BASED REPLICATION)同步这条语句: update table set column=uuid() limit 2更新后,这两条记录主服务器端该字段的值为: 45734358-9df1-11e3-b0fd-782bcb74f37e 从服务器端的值: 3fa4171e-9df0-11e3-a0e5-782bcb74f37e C、比基于行的方式需要更多地行级锁; 2、基于行的记录(Row-Based Replication) 就是将主服务器上对每一行的修改记录下来,然后在从服务器上实现之; 这个类型的优势: A、是一种安全的方式,也就是说能够准确无误地同步主服务器的内容,比如上面那个例子使用RBR(ROW-BASED REPLICATION)的结果: 主服务器和从服务器端均为: b290f3a0-9df5-11e3-b0fd-782bcb74f37e B、需要锁行的数量很少 这个类型的缺点就是: A、需要记录的内容太多,如果一条语句更新了一个几千万条数据的,那就会记录几千万条BINLOG…… B、如果一些生成的变量很庞大,比如BLOB类型,会使得记录很庞大 C、无法知道当前哪条语句在执行,无法监督主从进度 3、混合类型记录(Row-Based Replication) 就是上述两种都有,系统会实时选择合适的类型来记录主服务器的记录。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com