mysql inodb 复制_mysql8 参考手册--InnoDB复制

MySQL复制适用于InnoDB表,适用于MyISAM表。还可以通过以下方式使用复制:从属服务器上的存储引擎与主服务器上的原始存储引擎不同。例如,您可以InnoDB将对主服务器上的MyISAM表的修改复制到从服务器 上的 表。

要在不关闭主服务器或现有从服务器的情况下创建新的从服务器,请使用 MySQL Enterprise Backup产品。

在主服务器上失败的事务根本不会影响复制。MySQL复制基于二进制日志,其中MySQL编写修改数据的SQL语句。失败的事务(例如,由于违反外键或由于其已回退)不会写入二进制日志,因此不会发送给从属。请参见第13.3.1节“ START TRANSACTION,COMMIT和ROLLBACK语句”。

复制和CASCADE。 仅当共享外键关系的表同时在主服务器和从服务器上使用 时,主服务器InnoDB上的表的 级联操作才会在从服务器上复制InnoDB。无论您使用的是基于语句的复制还是基于行的复制,都是如此。假设您已经开始复制,然后使用以下CREATE TABLE语句在主数据库上创建两个表 :

CREATE TABLE fc1 (

i INT PRIMARY KEY,

j INT

) ENGINE = InnoDB;

CREATE TABLE fc2 (

m INT PRIMARY KEY,

n INT,

FOREIGN KEY ni (n) REFERENCES fc1 (i)

ON DELETE CASCADE

) ENGINE = InnoDB;

假设从站未InnoDB 启用支持。如果是这种情况,则会创建从属服务器上的表,但它们使用MyISAM存储引擎,并且该FOREIGN KEY选项将被忽略。现在,我们将一些行插入到主数据库的表中:

master>INSERT INTO fc1 VALUES (1, 1), (2, 2);

Query OK, 2 rows affected (0.09 sec)

Records: 2 Duplicates: 0 Warnings: 0

master>INSERT INTO fc2 VALUES (1, 1), (2, 2), (3, 1);

Query OK, 3 rows affected (0.19 sec)

Records: 3 Duplicates: 0 Warnings: 0

此时,在主服务器和从服务器上,表 fc1包含2行,表 fc2包含3行,如下所示:

master> SELECT * FROM fc1;

+---+------+

| i | j |

+---+------+

| 1 | 1 |

| 2 | 2 |

+---+------+

2 rows in set (0.00 sec)

master> SELECT * FROM fc2;

+---+------+

| m | n |

+---+------+

| 1 | 1 |

| 2 | 2 |

| 3 | 1 |

+---+------+

3 rows in set (0.00 sec)

slave> SELECT * FROM fc1;

+---+------+

| i | j |

+---+------+

| 1 | 1 |

| 2 | 2 |

+---+------+

2 rows in set (0.00 sec)

slave> SELECT * FROM fc2;

+---+------+

| m | n |

+---+------+

| 1 | 1 |

| 2 | 2 |

| 3 | 1 |

+---+------+

3 rows in set (0.00 sec)

现在,假设您DELETE在主服务器上执行以下 语句:

master>DELETE FROM fc1 WHERE i=1;

Query OK, 1 row affected (0.09 sec)

由于级联,fc2现在主服务器上的表仅包含1行:

master> SELECT * FROM fc2;

+---+---+

| m | n |

+---+---+

| 2 | 2 |

+---+---+

1 row in set (0.00 sec)

但是,级联不会在从属服务器上传播,因为DELETEfor fc1不会在从属服务器上删除任何行fc2。从属的副本fc2仍包含最初插入的所有行:

slave> SELECT * FROM fc2;

+---+---+

| m | n |

+---+---+

| 1 | 1 |

| 3 | 1 |

| 2 | 2 |

+---+---+

3 rows in set (0.00 sec)

这种差异是由于级联删除操作是由InnoDB存储引擎在内部处理的事实所致,这意味着没有记录任何更改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值