gpt4 book ai didi

mysql - 每个数据库 MySQL 都有不同的复制类型

转载 作者:行者123 更新时间:2023-11-30 00:54:41 24 4
gpt4 key购买 nike

我可以为主服务器中的每个数据库提供不同类型的复制吗?例如:同一个MySQL服务器中有两个数据库(DB 1,DB 2)..我需要提供DB 1 ->基于语句的复制和DB 2 ->基于行的复制。

PS:我尝试使用混合复制..但是我遇到了一些问题..因为有很多触发器(所以我需要基于语句)并且在某些情况下我需要基于行。

最佳答案

您不能在数据库级别进行此类设置,此设置仅在服务器级别有效,并且您必须在 my.cnf 文件中指定。

基于语句的复制的优点

  • 写入日志文件的数据较少。当更新或删除影响许多行时,这会导致日志文件所需的存储空间大大减少。这也意味着可以更快地完成备份和恢复。

  • 日志文件包含进行任何更改的所有语句,因此可用于审核数据库。

基于行的复制的优点

  • 所有更改都可以复制。这是最安全的复制形式。

对于 5.1.14 之前的 MySQL 版本,CREATE TABLE 等 DDL(数据定义语言)语句使用基于语句的复制进行复制,而 DML 语句以及 GRANT 和 REVOKE 语句使用基于行的复制进行复制.

  • 在 MySQL 5.1.14 及更高版本中,mysql 数据库不被复制。相反,mysql 数据库被视为特定于节点的数据库。此数据库中的表不支持基于行的复制。相反,通常会更新此信息的语句(例如 GRANT、REVOKE 以及触发器、存储例程(包括存储过程)和 View 的操作)都使用基于语句的复制复制到从属服务器。
  • 对于 CREATE TABLE ... SELECT 等语句,CREATE 语句是根据表定义生成的,并使用基于语句的格式进行复制,而行插入则使用基于行的格式进行复制。
  • 该技术与大多数其他数据库管理系统相同;有关其他系统的知识传输到 MySQL。
  • 对于以下类型的语句,主服务器上需要更少的行锁,从而实现更高的并发性:INSERT ... SELECT带有 AUTO_INCRMENT 的 INSERT 语句带有 WHERE 子句的 UPDATE 或 DELETE 语句不使用键或不更改大多数检查的行。对于任何 INSERT、UPDATE 或 DELETE 语句,从属设备上需要的行锁更少。

欲了解更多信息,请参阅: http://dev.mysql.com/doc/refman/5.1/en/replication-sbr-rbr.html

关于mysql - 每个数据库 MySQL 都有不同的复制类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com