Service 通过windows服务停止Postgres
我目前正在设置一个c#应用程序,允许我控制windows 2012服务器上的应用程序 架构: 主服务器-Postgres x64 9.3作为读/写数据库从windows服务运行,具有热备用模式和复制插槽 从属服务器-Postgres x64 9.3通过复制插槽作为只读热备用服务器从windows服务运行 我计划使用以下代码停止服务:Service 通过windows服务停止Postgres,service,postgresql-9.3,pg,ctl,Service,Postgresql 9.3,Pg,Ctl,我目前正在设置一个c#应用程序,允许我控制windows 2012服务器上的应用程序 架构: 主服务器-Postgres x64 9.3作为读/写数据库从windows服务运行,具有热备用模式和复制插槽 从属服务器-Postgres x64 9.3通过复制插槽作为只读热备用服务器从windows服务运行 我计划使用以下代码停止服务: service = new ServiceController("postgresql-x64-9.4"); try
service = new ServiceController("postgresql-x64-9.4");
try
{
TimeSpan timeout = TimeSpan.FromMilliseconds(5000);
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
log.writeLog(data, "success", "Postgres Stopped");
}
catch (Exception e)
{
log.writeLog(data, "ERROR", e.Message + " - " + e.InnerException);
msg = Encoding.ASCII.GetBytes("ERROR");
break;
}
然而,我想知道这两个数据库的完整性是否安全
我知道pg_ctl有关闭模式,其中“智能”模式在停止数据库之前等待活动进程并关闭连接等。停止windows服务也会这样做吗?是的,我显然可以使用pg_ctl来实现这一点,但是我要求的兴趣和其他任何东西一样多
对于任何活动复制,是否存在需要降低的风险,或者在服务器同步之前,服务是否会保持活动状态?“停止”的计时将在数据库不处于重写负载的情况下进行,因此基本上应该是同步的。在启动“停止”代码之前,我还可以对此进行测试
其目的是在主服务器停止时使复制的从属服务器保持“活动”,但仍处于只读从属模式
提前谢谢