在主库和从库之间进行日志传送时,从库是否必须设置为只读?
通过只读,我不是在谈论仅从数据库中读取的想法。我说的是具有只读或待机/只读特定状态的数据库。
我在日志传送概述和其他相关页面中找不到任何说明这是必需的内容。这导致了一个问题,因为我无法将任何索引添加到只读数据库。
在主库和从库之间进行日志传送时,从库是否必须设置为只读?
通过只读,我不是在谈论仅从数据库中读取的想法。我说的是具有只读或待机/只读特定状态的数据库。
我在日志传送概述和其他相关页面中找不到任何说明这是必需的内容。这导致了一个问题,因为我无法将任何索引添加到只读数据库。
您不能以任何方式更改辅助数据库。
这是正常的 - 辅助数据库应该是主数据库的备份,因此无法添加不在主数据库中的内容。这就是为什么它处于只读模式。
可以使用辅助数据库进行报告,以减少主服务器上的负载(请参阅使用辅助服务器进行查询处理)。
但是,如果您需要任何特殊索引,则必须将它们添加到主数据库中并等待它们被日志传送到辅助数据库。
正如 jchelad 在他的回答中已经说过的那样,使用辅助数据库进行报告的一个缺点是,只要恢复日志备份,用户就会断开连接。
可以更改此设置,以便暂停恢复,直到没有人连接到数据库。
从上面的链接引用:
但我不建议使用第二个选项。
我们在工作中使用日志传送,并且使用辅助数据库进行报告。
我们决定选择第一个选项(备份恢复时用户断开连接),因为拥有备份比能够一直运行查询更重要。
我们不喜欢第二个选项(只有在没有人连接到数据库时才恢复),因为万一主服务器死了,我们不想发现辅助数据库在过去几个小时内没有恢复,因为销售人员整天都在查询。
我们“教育”了我们的报告用户,每 15 分钟有一小段时间他们不能运行查询,他们接受了这一点。
(替代方法是在昨天晚上的主数据库副本上运行查询,但他们更喜欢今天的数据,所以他们必须忍受“15 分钟休息”)
辅助数据库保存主数据库的热备用副本。辅助数据库可能处于 RECOVERING 状态或 STANDBY 状态,这使数据库可用于有限的只读访问,并且在恢复作业之间的间隔期间也是如此。希望这就是你要找的