是否可以直接读取具有LRS(本地冗余存储)的Azure存储帐户的副本?

时间:2016-02-26 15:27:46

标签: azure storage

使用LRS创建的Azure存储帐户有3个副本。有没有办法阅读这些数据的副本?

3 个答案:

答案 0 :(得分:1)

简单的答案是否定的。您无法指定要从中读取数据的副本副本。

答案 1 :(得分:1)

我们不能仅在连接字符串中的帐户名上添加-secondary。标准连接字符串中的AccountName = {...}字段用于推断资源URL和进行签名。使用RA-GRS时,必须使用-secondary端点路由请求,但仍使用帐户名(不使用-secondary)对请求进行签名。如果尝试使用客户端库或存储资源管理器进行RA-GRS读取,则不能简单地在连接字符串中添加-secondary:这会将请求路由到正确的位置,但是验证将失败,因为它们试图使用实际上不存在的“辅助帐户”对请求进行签名。

所以,而不是

AccountName = account-secondary; AccountKey = XXX; EndpointSuffix = blob.core.windows.net

应该是

AccountName = account; AccountKey = XXX; BlobEndpoint = https://account-secondary.blob.core.windows.net

希望此解决方案对您有用。谢谢。

答案 2 :(得分:0)

除了@ gaurav的简洁回答外,还有一个小小的延伸:

您可以假设当您执行写操作,然后立即执行读操作时,您将始终获得最新数据(即,区域内的副本不是最终一致;它具有很强的一致性)

从非主要读取的唯一选项是配置只读地理复制存储时。然后,您可以选择在备用(辅助)区域中读取(但不写入)存储,方法是在连接字符串中使用storageaccountname-secondary而不是storageaccountname