Mysql不同主从格式(Replication Formats)的区别
2014-02-25 16:13
309 查看
Mysql之所以可以实现主从服务器之间的同步,是因为主服务器端的事件(events)写到了 binary log 中,然后在从服务器上再次执行这些事件。
事件写入BINLOG中,主要有以下三种格式:
1、基于语句的记录(Statement-Based Replication)
就是将主服务器上执行的语句记录下来,在从服务器上再次执行一遍。在MYSQL 5.1.4之前,只有这一种方式;
这种类型的优点包括:
A、从3.23版本以来,MYSQL只有这一种类型,所以这种类型已经被实践所证实;
B、写入BINLOG的数据相对来说少一些,特别是更新很多行的语句,不用把每行的变化记录下来;
C、所有更改数据库的语句都会被记录下来,可以用来监督数据库。
这种类型的缺点也很明显,是一种不“安全”的记录方式:
A、不能更新不缺定地行;比如UPDATE语句中有不加ORDER的LIMIT;
B、
LOAD_FILE()
UUID(), UUID_SHORT()
USER()
FOUND_ROWS()
SYSDATE() (unless both the master and the slave are started with the --sysdate-is-now option)
GET_LOCK()
IS_FREE_LOCK()
IS_USED_LOCK()
MASTER_POS_WAIT()
RAND()
RELEASE_LOCK()
SLEEP()
VERSION()
比如,使用SBR(STATEMENT-BASED REPLICATION)同步这条语句:
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、混合类型记录(Mixed-Based Replication)
就是上述两种都有,系统会实时选择合适的类型来记录主服务器的记录。
事件写入BINLOG中,主要有以下三种格式:
1、基于语句的记录(Statement-Based Replication)
就是将主服务器上执行的语句记录下来,在从服务器上再次执行一遍。在MYSQL 5.1.4之前,只有这一种方式;
这种类型的优点包括:
A、从3.23版本以来,MYSQL只有这一种类型,所以这种类型已经被实践所证实;
B、写入BINLOG的数据相对来说少一些,特别是更新很多行的语句,不用把每行的变化记录下来;
C、所有更改数据库的语句都会被记录下来,可以用来监督数据库。
这种类型的缺点也很明显,是一种不“安全”的记录方式:
A、不能更新不缺定地行;比如UPDATE语句中有不加ORDER的LIMIT;
B、
LOAD_FILE()
UUID(), UUID_SHORT()
USER()
FOUND_ROWS()
SYSDATE() (unless both the master and the slave are started with the --sysdate-is-now option)
GET_LOCK()
IS_FREE_LOCK()
IS_USED_LOCK()
MASTER_POS_WAIT()
RAND()
RELEASE_LOCK()
SLEEP()
VERSION()
比如,使用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、混合类型记录(Mixed-Based Replication)
就是上述两种都有,系统会实时选择合适的类型来记录主服务器的记录。
相关文章推荐
- mysql主从复制主服务器日志格式的区别
- 【20180507】MySQL主从在线修改binlog格式从STATEMENT更改成ROW格式
- mysql 5.7.15单机主从快速搭建并配置复制表到不同库
- mysql主从备份 及与主主的本质区别
- 不同版本mysql主从复制
- mysql不同版本号之间的一些区别
- 解决mysql导入数据库编码格式不同问题。
- Mysql“集群”和”主从“两者的区别
- 了解mysql的三种不同安装方式的区别
- MySQL主从复制指定不同库表同步参数说明
- Mysql主从不同引擎
- explain命令和mysql不同存储引擎的区别
- mysql主从中异步和半同步的区别
- MySQL不同库名相同表结构实现主从配置
- Linux下搭建MySQL集群 / Mysql“集群”和”主从“两者的区别
- 图片不同格式的区别
- MySQL5.7 不同操作系统下的主从配置
- 不同Json api生成json数据格式的区别
- php查询mysql中的数据,并将结果返回为JSON格式,提取JSON中的数据,写入页面不同的id号中
- mysql在不同操作系统下的区别