postgresql – 架构更改和数据迁移到实时数据库的最佳实践,无需停机?

前端之家收集整理的这篇文章主要介绍了postgresql – 架构更改和数据迁移到实时数据库的最佳实践,无需停机?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在不停机的情况下对实时数据库进行架构更改?

例如,假设我有一个Postgresql数据库,其中包含各种用户数据(如电子邮件地址等),这些数据都与特定用户相关联.如果我想将电子邮件地址移动到新的专用表,我必须更改架构,然后将电子邮件数据迁移到新表.如何在不停止写入原始表的情况下完成此操作?当数据从旧表写入新表时,新数据将继续写入旧表并被遗漏,对吧?

我想这个问题经常出现,但我找不到任何标准的解决方案来处理它.

This article处理问题,但我并不真正理解第3步.他说要写入两个表,然后将旧数据从第一个表迁移到新表.您如何确保只迁移旧数据?

(我用的是PostgreSQL on Heroku.)

你几乎已经得到了答案:

>并行创建新结构
>开始写两个结构
>将旧数据迁移到新结构
>只写和读新结构
>删除旧列

至于第3步,使用这样的东西(在一次交易中):

插入尚未存在的内容

INSERT INTO new_tbl (old_id,data)
SELECT old_id,data
FROM   old_tbl
WHERE  NOT EXISTS (SELECT * FROM new_tbl WHERE new_tbl.old_id = old_tbl.old_id);

在此期间更新已更改的内容

UPDATE new_tbl
SET    data  = old.data
USING  old_tbl
WHERE  new_tbl.old_id = old_tbl.old_id
AND    new_tbl.data IS DISTINCT FROM old_tbl.data;

不会触及新数据,因为它在两个地方都是相同的.

猜你在找的Postgre SQL相关文章