我有一个 prod 数据库,比如 appdb,我只关心那个数据库中的数据。如某些教程所示,replicate-ignore-db
为每个声明是否安全mysql,information_schema,performance_schema,test
?我在从站上定义自己的分析用户并在那里管理权限。我不想要额外的用户或从主人那里调整人工制品,事实上我可以单独调整奴隶......但是,我不能背诵replicate-do-db
和replicate-ignore-db
在我的睡眠中的危险,正如这里的一些答案所建议的那样,所以我想知道我还应该做什么关心这种情况!
没有必要避免复制 performance_schema 或 information_schema——它们不是带有真实表的真实数据库,它们由服务器内部生成以通过 SQL 进行交互,但是您会从它们的表定义中注意到它们不正常。它们不能被更改、修改、删除、创建、更新、插入或删除……并且它们不会导致复制事件。performance_schema 不必在 master 和 slave 上配置相同。
mysql数据库,你需要允许复制,因为master上的用户必须是slave上的有效用户——否则,你会遇到视图、触发器、存储过程、存储函数等定义和执行的潜在问题事件,所有这些都具有“定义者”属性,在许多情况下需要定义用户存在于从站上。
但是,您可以自由地在从站上创建其他用户,只要您稍后不在主站上生成会与这些用户发生冲突的事件。
一个slave需要在全局read_only
模式下运行,这可以防止被授予写权限的用户实际修改slave上的数据,除非他们拥有SUPER
绕过这个限制的特权(这也是为什么我作为一个DBA,有两个帐户...SUPER
除非我有特殊原因,否则我会使用缺少的帐户连接到奴隶)。
没有我能想到的“调整”存储在 mysql 模式的系统表中。
考虑到所有这些事情,我建议最好/最简单/最安全的方法是让复制做它的事情并在你遇到它们时跨越任何有问题的桥梁......当你复制所有东西时通常不太可能如果你尝试有选择性。