1、PostgreSQLPostgreSQL的逻辑复制的逻辑复制spillspill溢出溢出案例和启停库案例和启停库逻辑逻辑IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛walsenderwalsender、archiverarchiver阻止阻止停库停库怎么优雅停库spillspill阻止起库阻止起库:怎么加速起库起库起库逻辑逻辑目录CONTENTSIvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛停库逻辑停库逻辑walsenderwal
2、sender、archiverarchiver阻止阻止停库,停库,如何优雅如何优雅停库停库IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛walsender阻止停库时,数据库的停库状态:1 110402 110402 110402?-1 Ss 6001 0:00 postgres-D/myhost/pg/data110402 110599 110599 110599?-1 Ss 6001 0:00 _ postgres:lzlpg:logger 110402 117803 117803 117803?-1 Ss 6
3、001 0:00 _ postgres:lzlpg:checkpointer 110402 117807 117807 117807?-1 Ss 6001 0:00 _ postgres:lzlpg:stats collector 110402 118563 118563 118563?-1 Rs 6001 3:29 _ postgres:lzlpg:walsender lzl 127.0.0.1(62971)idle110402 222918 222918 222918?-1 Rs 6001 2:59 _ postgres:lzlpg:walsender logicaluser 30.181
4、.46.203(57218)idleIvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛此时的控制文件:pg_controldata|grep-i stateDatabase cluster state:in productionwalsenderwalsender阻止阻止停库停库pstack 117803#0 0 x00002b879fe0b983 in _select_nocancel()from/lib64/libc.so.6#1 0 x00000000008fd04a in pg_usleep(microsec
5、=microsecentry=10000)at pgsleep.c:56#2 0 x00000000007610c8 in WalSndWaitStopping()at walsender.c:3209#3 0 x000000000051fa86 in ShutdownXLOG(code=codeentry=0,arg=argentry=0)at xlog.c:8596#4 0 x00000000007215ff in HandleCheckpointerInterrupts()at checkpointer.c:566#5 CheckpointerMain()at checkpointer.
6、c:343.IvorySQL 2025IvorySQL 2025生态大会生态大会暨暨PostgreSQLPostgreSQL高峰论坛高峰论坛此时的checkpointer堵在WalSndWaitStopping函数,代表checkpointer在等待walsender进程进入stopping状态此时库是停一半的状态,如果强行kill-9,会导致数据库是非一致性停库非一致性停库walsenderwalsender阻止阻止停库停库walsender阻止停库该怎么办?-方案1:关闭下游进程-方案2:发送SIGTERM给walsender怎么优雅的怎么优雅的停库停库IvorySQL 2025Ivory