I need some idea how I can deploy a financial application in a production environment using PostgreSQL with zero down time.
I have two servers in Master-Slave design. Currently I am giving downtime while deploying applications and executing database script.
During deployment, I don't want to turn off my database because of transactions. If I turn off one node for changes and second for real transactions, now both database nodes have some changes and there will be sync issue. I am looking for a solution where I can deploy DB changes and real time transactions too.
For zero downtime, do we need any configuration or any third party software or PostgreSQL utility that will handle this scenario, so that in production realtime environment we don't lose any transactions, and I also can update database script simultaneously?
"Zero downtime" means "no loss of transactions" and "no interruption of services" both. I understand it's challenging, and also possible like Google never shows any downtime. But still it's not clear how to do it.
Best Answer
Answer originally left as a question comment.
For zero downtime during tables refactoring, we create new tables along with old ones, and switch in small steps.
See the original article for full details.