每个数据库MySQL的不同复制类型

时间:2013-12-19 09:16:46

标签: mysql database replication master-slave

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

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

1 个答案:

答案 0 :(得分:0)

您无法对数据库级别进行此类设置,此设置仅适用于服务器级别,您必须在my.cnf文件中指定。

基于声明的复制的优点

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

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

基于行的复制的优点

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

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

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

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