[ English | Indonesia | русский ]
多区域对象存储的访问性¶
在使用独立数据库后端的多区域对象存储中,如果 keystone 数据库中用户的 default_project_id 在每个数据库后端中都相同,则可以从其他位置检索对象。
重要提示
建议在发生故障之前执行以下步骤,以避免转储和恢复数据库。
如果发生故障,请按照以下步骤从主(失败)区域恢复数据库
记录 keystone 数据库的用户表中的指定用户的
default_project_id的主区域输出注意
在此示例中,用户是
admin。# mariadb -e "SELECT default_project_id from keystone.user WHERE \ name='admin';" +----------------------------------+ | default_project_id | +----------------------------------+ | 76ef6df109744a03b64ffaad2a7cf504 | +-----------------—————————————————+
记录 keystone 数据库的用户表中的指定用户的
default_project_id的辅助区域输出# mariadb -e "SELECT default_project_id from keystone.user WHERE \ name='admin';" +----------------------------------+ | default_project_id | +----------------------------------+ | 69c46f8ad1cf4a058aa76640985c | +----------------------------------+
在辅助区域,更新对
project_id的引用,以匹配来自主区域的 ID# export PRIMARY_REGION_TENANT_ID="76ef6df109744a03b64ffaad2a7cf504" # export SECONDARY_REGION_TENANT_ID="69c46f8ad1cf4a058aa76640985c" # mariadb -e "UPDATE keystone.assignment set \ target_id='${PRIMARY_REGION_TENANT_ID}' \ WHERE target_id='${SECONDARY_REGION_TENANT_ID}';" # mariadb -e "UPDATE keystone.user set \ default_project_id='${PRIMARY_REGION_TENANT_ID}' WHERE \ default_project_id='${SECONDARY_REGION_TENANT_ID}';" # mariadb -e "UPDATE keystone.project set \ id='${PRIMARY_REGION_TENANT_ID}' WHERE \ id='${SECONDARY_REGION_TENANT_ID}';"
辅助区域中的用户现在可以访问在主区域中 PUT 的对象。辅助区域可以 PUT 用户可以在主区域访问的对象。