Service 通过windows服务停止Postgres

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

我目前正在设置一个c#应用程序,允许我控制windows 2012服务器上的应用程序

架构:

主服务器-Postgres x64 9.3作为读/写数据库从windows服务运行,具有热备用模式和复制插槽

从属服务器-Postgres x64 9.3通过复制插槽作为只读热备用服务器从windows服务运行

我计划使用以下代码停止服务:

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来实现这一点,但是我要求的兴趣和其他任何东西一样多

对于任何活动复制,是否存在需要降低的风险,或者在服务器同步之前,服务是否会保持活动状态?“停止”的计时将在数据库不处于重写负载的情况下进行,因此基本上应该是同步的。在启动“停止”代码之前,我还可以对此进行测试

其目的是在主服务器停止时使复制的从属服务器保持“活动”,但仍处于只读从属模式

提前谢谢