2014-07-13 15:53:53
来 源
中存储网
存储过程
mysql5.5 对触发器,函数,存储引擎,事件进行主从复制情况.一、MySQL主从复制有三种模式.1.binlog_format = row : 日志中会记录成每一行数据被修改的形式(记录页面),然后在 slave端再对相同的数据进行修改。2.binlog_
mysql5.5 对触发器,函数,存储引擎,事件进行主从复制情况.


一、MySQL主从复制有三种模式.


1.binlog_format = row  : 日志中会记录成每一行数据被修改的形式(记录页面),然后在 slave 端再对相同的数据进行修改。

2.binlog_format = statement  : 每一条会修改数据的 SQL 都会记录到 master 的 bin-log 中。slave 在复制的时候 SQL 进程会解析成和原来 master 端执行过的相同的 SQL 再次执行。

3.binlog_format = mixed : 这个模式是在5.1.8版本之后, 才有的. mixed是row和statement的混合模式.

二、触发器的主从复制.

A .当binlog_format = statement 或 或 binlog_format = mixed (使用混合模式用的是statement 方式)  这种模式下复制情况

1. 主从复制的时候,主从触发器都受到definer从句的约束.只有主从上都有这个用户才能正常运行这个触发器.

2. 主服务器上SQL语句传到从服务器上,从服务器再执行SQL语句去触发从服务器的触发器(这里要说明是:主服务器不会把触发后的SQL传递给从服务器).

这里可以看到,传递是原始的SQL语句.

B .当binlog_format = row 或 binlog_format = mixed(使用混合模式用的是row方式)  这种模式下复制情况

1. 主服务器把被修改的页面复制给从服务器,并且这个修改的页面的值是触发后的改变值.

2. 因为这个页面的值是触发后改变的值, 所以在从服务器上可以不需要这个触发器.

3. 删除从服务器上的触发器.一样的可以得到跟主服务器一样的值.

三、存储过程的主从复制

1. 主服务器上的存储过程同样收到definer从句的约束.但是,在复制的时候,从服务上不需要有存储过程

A. 当binlog_format = statement 或binlog_format = mixed (使用混合模式用的是statement 方式)  这种模式下复制情况

可以看到通过系统函数转换后的值复制给从服务器.不需要在从服务器上建立当binlog_format = row 或 binlog_format = mixed(使用混合模式用的是row方式)

B .当binlog_format = row 或 binlog_format = mixed(使用混合模式用的是row方式)  这种模式下复制情况

四、函数主从复制

A . 当binlog_format = statement 或binlog_format = mixed (使用混合模式用的是statement 方式)  这种模式下复制情况

1. 主从复制的时候,主从触发器都受到definer从句的约束.只有主从上都有这个用户才能正常运行这个函数

2.  主服务器上SQL语句复制从服务器上,从服务器再执行SQL语句再去调用从服务器的函数(主服务器不会把函数的返回值传给从服务器的)

B. 当binlog_format = row 或 binlog_format = mixed(使用混合模式用的是row方式)  这种模式下复制情况

1.主服务器会直接把修改过的页面复制给从服务器,从服务器不需要有对应的函数

五、事件主从复制

当事件有用函数,触发器,存储过程时.跟上面的操作情况是一样的.

但有一点不同的是.

在主服务器上建立一个event,当然,在从服务器上也会创建一个event..(默认情况下主event复制到从服务器的event是关闭着的)

1.主服务器上的event

2.从服务器上的event

如果在从服务器,开启事件.不仅主服务器复制过来的SQL语句执行一遍,从服务器上的EVENT也会执行.

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。