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

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

概述如何在不停机的情况下对实时数据库进行架构更改? 例如,假设我有一个PostgreSQL数据库,其中包含各种用户数据(如电子邮件地址等),这些数据都与特定用户相关联.如果我想将电子邮件地址移动到新的专用表,我必须更改架构,然后将电子邮件数据迁移到新表.如何在不停止写入原始表的情况下完成此 *** 作?当数据从旧表写入新表时,新数据将继续写入旧表并被遗漏,对吧? 我想这个问题经常出现,但我找不到任何标准的解决 如何在不停机的情况下对实时数据库进行架构更改?

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

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

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

(我用的是PostgreSQL on Heroku.)

你几乎已经得到了答案:

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

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

插入尚未存在的内容:

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

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

UPDATE new_tblSET    data  = old.dataUSING  old_tblWHERE  new_tbl.old_ID = old_tbl.old_IDAND    new_tbl.data IS disTINCT FROM old_tbl.data;

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

总结

以上是内存溢出为你收集整理的postgresql – 架构更改和数据迁移到实时数据库的最佳实践,无需停机?全部内容,希望文章能够帮你解决postgresql – 架构更改和数据迁移到实时数据库的最佳实践,无需停机?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1168391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存