文章目录
- 1、pg\_basebackup
- 1.1、pg\_basebackup原理
- 1.2、语法解释
- 1.3、pg\_basebackup进行备份
- 1.3.1、设置 pg\_hba.conf
- 1.3.2、备份的用户设置
- 1.3.3、备份库成tar包
- 1.3.4、备份成从库
- 1.4、恢复数据库
- 1.4.1、创建一个恢复的目录
- 1.4.2、解压备份文件至恢复的目录
- 1.4.3、设置restore\_command
- 1.4.4、启动备库
1、pg_basebackup
1.1、pg_basebackup原理
官方文档:pg_basebackup (postgres.cn)
1)创建检查点,打开FPW(full page writes),创建备份标签(存储检查点位置,时间等信息)
2)通过流复制协议与数据库建立连接,WAL Sender进程向pg_basebackup发送数据库物理文件
3)pg_basebackup接收到文件后写入目标位置(压缩或不压缩)
注意:
1、该连接必须由一个超级用户或者一个具有REPLICATION
权限(第 21.2 节)的用户建立。
2、并且pg_hba.conf
必须显式地允许该复制连接。
3、该服务器还必须把max_wal_senders设置得足够高以留出至少一个会话用于备份以及一个用于WAL流(如果使用流)。
4、pg_basebackup,从备份开始到备份结束之间产生到wal日志都会一起备份;备份期间的dml,也能一起恢复。
5、复制的过程中,会用到零时的复制槽,所以要保证max_replication_slots够用。
pg_basebackup不仅能从主控机也能从后备机创建一个基础备份。要从后备机获得一个备份,设置后备机让它能接受复制连接(也就是,设置max_wal_senders
和hot_standby,并且配置基于主机的认证)。你将也需要在主控机上启用full_page_writes。
注意在来自后备机的在线备份中有一些限制:
- 不会在被备份的数据库集簇中创建备份历史文件。
- 如果正在使用
-X none
,不保证备份所需的所有 WAL 文件在备份结束时被归档。 - 如果在在线备份期间后备机被提升为主控机,备份会失败。
- 备份所需的所有 WAL 记录必须包含足够的全页写,这要求你在主控机上启用
full_page_writes
并且不使用一个类似pg_compresslog的工具以archive_command
从 WAL 文件中移除全页写。
1.2、语法解释
[paas-sotc-telepgtest-002][telepg][/app/backup]$pg_basebackup --help
pg_basebackup takes a base backup of a running PostgreSQL server.
Usage:
pg_basebackup [OPTION]...
Options controlling the output:
-D, --pgdata=DIRECTORY receive base backup into directory
-F, --format=p|t output format (plain (default), tar)
-r, --max-rate=RATE maximum transfer rate to transfer data directory
(in kB/s, or use suffix "k" or "M")
-R, --write-recovery-conf
write configuration for replication
-T, --tablespace-mapping=OLDDIR=NEWDIR
relocate tablespace in OLDDIR to NEWDIR
--waldir=WALDIR location for the write-ahead log directory
-X, --wal-method=none|fetch|stream
include required WAL files with specified method
-z, --gzip compress tar output
-Z, --compress=0-9 compress tar output with given compression level
General options:
-c, --checkpoint=fast|spread
set fast or spread checkpointing
-C, --create-slot create replication slot
-l, --label=LABEL set backup label
-n, --no-clean do not clean up after errors
-N, --no-sync do not wait for changes to be written safely to disk
-P, --progress show progress information
-S, --slot=SLOTNAME replication slot to use
-v, --verbose output verbose messages
-V, --version output version information, then exit
--no-slot prevent creation of temporary replication slot
--no-verify-checksums
do not verify checksums
-?, --help show this help, then exit
Connection options:
-d, --dbname=CONNSTR connection string
-h, --host=HOSTNAME database server host or socket directory
-p, --port=PORT database server port number
-s, --status-interval=INTERVAL
time between status packets sent to server (in seconds)
-U, --username=NAME connect as specified database user
-w, --no-password never prompt for password
-W, --password force password prompt (should happen automatically)
Report bugs to <pgsql-bugs@lists.postgresql.org>.
[paas-sotc-telepgtest-002][telepg][/app/backup]$
- F:t tar 格式输出;p plain原样输出
- z:输出的tar备份经过gzip压缩
- P:实时的打印备份的进度
- v:详细模式,当使用-P,还会打印出正在备份哪个具体文件的信息
- l:指定备份的一个标识 lable
- R:write configuration for replication
- X:备份的模式,串行和并行
- f :fetch串行复制,数据复制完,再复制wal日志,如果使用tar格式,预写式日志文件将被写入到base.tar文件。
- s :stream并行复制,数据和wal日志同步复制,如果使用tar格式,预写式日志文件被写入到一个单独的名为pg_wal.tar的文件;这个值是默认值。
1.3、pg_basebackup进行备份
1.3.1、设置 pg_hba.conf
设置 pg_hba.conf,允许客户端机器发起流复制链接
host replication all 0.0.0.0/0 md5
1.3.2、备份的用户设置
备份用户需要 superuser 或 replication
must be superuser or replication role to start walsender
create role backup REPLICATION LOGIN PASSWORD 'backup';
1.3.3、备份库成tar包
1、先在源库创建database和table
postgres=# create database test_rhl1;
CREATE DATABASE
postgres=# \c test_rhl1;
You are now connected to database "test_rhl1" as user "postgres".
test_rhl1=# create table tb1 (id int,name varchar(20));
CREATE TABLE
test_rhl1=# insert into tb1 values (1,'asd'),(2,'qwe'),(3,'ert');
INSERT 0 3
test_rhl1=# select * from tb1;
id | name
----+------
1 | asd
2 | qwe
3 | ert
(3 rows)
2、备份成 tar包
[paas-sotc-telepgtest-002][telepg][/app/backup]$pg_basebackup -h134.108.68.72 -p5432 -Ubackup -D /app/backup -Xs -F t -z -v -P -l pg_backup
Password:
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/DD000028 on timeline 2
pg_basebackup: starting background WAL receiver
pg_basebackup: created temporary replication slot "pg_basebackup_128957"
12652680/12652680 kB (100%), 1/1 tablespace
pg_basebackup: write-ahead log end point: 0/DD000328
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: syncing data to disk ...
pg_basebackup: base backup completed
因为使用 -Xs stream模式且使用tar格式,预写式日志文件被写入到一个单独的名为pg_wal.tar
的文件
[paas-sotc-telepgtest-002][telepg][/app/backup]$ll
total 777148
-rw------- 1 telepg telepg 795776386 Feb 11 15:02 base.tar.gz
-rw------- 1 telepg telepg 18542 Feb 11 15:02 pg_wal.tar.gz
[paas-sotc-telepgtest-002][telepg][/app/backup]$
3、在备份还未完成时,在原库进行dml,等恢复后查看是否也会备份
test_rhl1=# insert into tb1 values(4,'asdasdsd');
INSERT 0 1
test_rhl1=# insert into tb1 values(5,'asdsd');
INSERT 0 1
test_rhl1=# select * from tb1;
id | name
----+----------
1 | asd
2 | qwe
3 | ert
4 | asdasdsd
5 | asdsd
(5 rows)
1.3.4、备份成从库
pg_basebackup -h 134.108.68.72 -p 5432 -U repl -l bk20210727 -F p -P -R -D /app/telepg/pg_data
1.4、恢复数据库
1.4.1、创建一个恢复的目录
mkdir -p /app/telepg/pg_data_new
1.4.2、解压备份文件至恢复的目录
1、解压base.tar.gz的包
[paas-sotc-telepgtest-002][telepg][/app/backup]$ll
total 777148
-rw------- 1 telepg telepg 795776386 Feb 11 15:02 base.tar.gz
-rw------- 1 telepg telepg 18542 Feb 11 15:02 pg_wal.tar.gz
[paas-sotc-telepgtest-002][telepg][/app/backup]$tar -xvf base.tar.gz -C /app/telepg/pg_data_new
- 查看恢复出来的目录情况
[paas-sotc-telepgtest-002][telepg][/app/backup]$cd /app/telepg/pg_data_new
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$ll
total 64
-rw------- 1 telepg telepg 210 Feb 11 14:59 backup_label
drwx------ 7 telepg telepg 67 Feb 11 14:52 base
-rw------- 1 telepg telepg 30 Feb 11 00:00 current_logfiles
drwx------ 2 telepg telepg 4096 Feb 11 15:28 global
drwx------ 2 telepg telepg 4096 Jul 29 2021 log
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_commit_ts
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_dynshmem
-rw------- 1 telepg telepg 4826 Jun 15 2021 pg_hba.conf
-rw------- 1 telepg telepg 1636 Jun 15 2021 pg_ident.conf
drwx------ 4 telepg telepg 68 Feb 11 14:59 pg_logical
drwx------ 4 telepg telepg 36 Jun 15 2021 pg_multixact
drwx------ 2 telepg telepg 6 Nov 1 15:26 pg_notify
drwx------ 2 telepg telepg 6 Feb 11 14:59 pg_replslot
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_serial
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_snapshots
drwx------ 2 telepg telepg 6 Nov 1 15:26 pg_stat
drwx------ 2 telepg telepg 6 Feb 11 14:59 pg_stat_tmp
drwx------ 2 telepg telepg 6 Aug 19 17:51 pg_subtrans
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_tblspc
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_twophase
-rw------- 1 telepg telepg 3 Jun 15 2021 PG_VERSION
drwx------ 3 telepg telepg 28 Feb 11 15:27 pg_wal
drwx------ 2 telepg telepg 90 Aug 19 17:30 pg_xact
-rw------- 1 telepg telepg 88 Jun 15 2021 postgresql.auto.conf
-rw------- 1 telepg telepg 26814 Jul 28 2021 postgresql.conf
-rw------- 1 telepg telepg 0 Feb 11 14:59 tablespace_map
- 查看wal日志里面是空的
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$cd pg_wal/
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new/pg_wal]$ll
total 0
drwx------ 2 telepg telepg 6 Feb 11 14:59 archive_status
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new/pg_wal]$cd archive_status/
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new/pg_wal/archive_status]$ll
total 0
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new/pg_wal/archive_status]$
- 多了一个backup_label
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$cat backup_label
START WAL LOCATION: 0/DD000028 (file 0000000200000000000000DD)
CHECKPOINT LOCATION: 0/DD000060
BACKUP METHOD: streamed
BACKUP FROM: master
START TIME: 2022-02-11 14:59:18 CST
LABEL: pg_backup
START TIMELINE: 2
2、解压pg_wal.tar.gz的包
[paas-sotc-telepgtest-002][telepg][/app/backup]$mkdir wal_back
[paas-sotc-telepgtest-002][telepg][/app/backup]$tar -xvf pg_wal.tar.gz -C /app/backup/wal_back/
00000002.history
archive_status/00000002.history.done
0000000200000000000000DD
[paas-sotc-telepgtest-002][telepg][/app/backup]$cd wal_back/
[paas-sotc-telepgtest-002][telepg][/app/backup/wal_back]$ll
total 16388
-rw------- 1 telepg telepg 16777216 Feb 11 14:59 0000000200000000000000DD
-rw------- 1 telepg telepg 41 Feb 11 14:59 00000002.history
drwxr-x--- 2 telepg telepg 35 Feb 11 15:33 archive_status
1.4.3、设置restore_command
- restore_command
- 它告诉PostgreSQL如何获取归档WAL文件段。与archive_command相似,这也是一个shell命令字符串。它可以包含%f(将被期望的日志文件名替换)和%p(将被日志文件被拷贝的目标路径名替换)。(路径名是相对于当前工作目录的,即集簇的数据目录)。如果你需要在命令中嵌入一个真正的%字符,可以写成%%。
修改配置文件
port = 54321 ---因为本机已经有了一个5432的端口的,所以修改这个配置
restore_command = 'cp /app/backup/wal_back/%f %p'
1.4.4、启动备库
1、直接启动报错
pg_ctl start -D /app/telepg/pg_data_new
waiting for server to start....2022-02-11 15:39:26.607 CST [131871] LOG: starting PostgreSQL 12.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
2022-02-11 15:39:26.607 CST [131871] LOG: listening on IPv4 address "0.0.0.0", port 54321
2022-02-11 15:39:26.608 CST [131871] LOG: listening on Unix socket "/tmp/.s.PGSQL.54321"
2022-02-11 15:39:26.619 CST [131871] LOG: redirecting log output to logging collector process
2022-02-11 15:39:26.619 CST [131871] HINT: Future log output will appear in directory "log".
stopped waiting
pg_ctl: could not start server
Examine the log output.
日志:
2022-02-11 15:39:26.703 CST,,,131873,,620612ae.20321,3,,2022-02-11 15:39:26 CST,,0,FATAL,XX000,"could not locate required checkpoint record",,"If you are restoring from a backup, touch ""/app/telepg/pg_data_new/recovery.signal"" and add required recovery options.
If you are not restoring from a backup, try removing the file ""/app/telepg/pg_data_new/backup_label"".
Be careful: removing ""/app/telepg/pg_data_new/backup_label"" will result in a corrupt cluster if restoring from a backup.",,,,,,,""
2、根据提示创建recovery.signal
touch /app/telepg/pg_data_new/recovery.signal
3、再次启动数据库,成功启动
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$pg_ctl start -D /app/telepg/pg_data_new
waiting for server to start....2022-02-11 15:46:10.219 CST [132432] LOG: starting PostgreSQL 12.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
2022-02-11 15:46:10.219 CST [132432] LOG: listening on IPv4 address "0.0.0.0", port 54321
2022-02-11 15:46:10.221 CST [132432] LOG: listening on Unix socket "/tmp/.s.PGSQL.54321"
2022-02-11 15:46:10.234 CST [132432] LOG: redirecting log output to logging collector process
2022-02-11 15:46:10.234 CST [132432] HINT: Future log output will appear in directory "log".
done
server started
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$ps -ef|grep postgres
telepg 129080 128997 0 15:00 pts/2 00:00:00 psql -Upostgres
telepg 129091 349224 0 15:00 ? 00:00:00 postgres: postgres test_rhl1 [local] idle
telepg 132432 1 0 15:46 ? 00:00:00 /app/telepg/pg12.5/bin/postgres -D /app/telepg/pg_data_new
telepg 132433 132432 0 15:46 ? 00:00:00 postgres: logger
telepg 132438 132432 0 15:46 ? 00:00:00 postgres: checkpointer
telepg 132439 132432 0 15:46 ? 00:00:00 postgres: background writer
telepg 132441 132432 0 15:46 ? 00:00:00 postgres: stats collector
telepg 132445 132432 0 15:46 ? 00:00:00 postgres: walwriter
telepg 132446 132432 0 15:46 ? 00:00:00 postgres: autovacuum launcher
telepg 132447 132432 0 15:46 ? 00:00:00 postgres: archiver last was 00000003.history
telepg 132448 132432 0 15:46 ? 00:00:00 postgres: logical replication launcher
telepg 132462 130738 0 15:46 pts/0 00:00:00 grep --color=auto postgres
telepg 349224 1 0 2021 ? 00:01:47 /app/telepg/pg12.5/bin/postgres -D /app/telepg/pg12.5_data
telepg 349225 349224 0 2021 ? 00:00:00 postgres: logger
telepg 349227 349224 0 2021 ? 00:00:04 postgres: checkpointer
telepg 349228 349224 0 2021 ? 00:02:08 postgres: background writer
telepg 349229 349224 0 2021 ? 00:02:13 postgres: walwriter
telepg 349230 349224 0 2021 ? 00:02:34 postgres: autovacuum launcher
telepg 349231 349224 0 2021 ? 00:00:32 postgres: archiver last was 0000000200000000000000DD.00000028.backup
telepg 349232 349224 0 2021 ? 00:03:53 postgres: stats collector
telepg 349233 349224 0 2021 ? 00:00:07 postgres: logical replication launcher
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$
4、检查备份期间的dml是否生效
结果:发现在备份期间的操作也会成功恢复
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$psql -p54321 -Upostgres
psql (12.5)
Type "help" for help.
postgres=# \c test_rhl1
You are now connected to database "test_rhl1" as user "postgres".
test_rhl1=# \l
test_rhl1=# select * from tb1;
id | name
----+----------
1 | asd
2 | qwe
3 | ert
4 | asdasdsd ---备份期间insert
5 | asdsd ---备份期间insert
(5 rows)
5、查看启动成功后的目录变化
- backup_label后多了 .old,但里面的内容没有变化
- 多了 postmaster.opts
- 多了 postmaster.pid
- recovery.signal自动删除
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$ll
total 72
-rw------- 1 telepg telepg 210 Feb 11 14:59 backup_label.old
drwx------ 7 telepg telepg 67 Feb 11 14:52 base
-rw-r----- 1 telepg telepg 30 Feb 11 15:46 current_logfiles
drwx------ 2 telepg telepg 4096 Feb 11 15:48 global
drwx------ 2 telepg telepg 4096 Feb 11 15:41 log
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_commit_ts
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_dynshmem
-rw------- 1 telepg telepg 4826 Jun 15 2021 pg_hba.conf
-rw------- 1 telepg telepg 1636 Jun 15 2021 pg_ident.conf
drwx------ 4 telepg telepg 68 Feb 11 15:46 pg_logical
drwx------ 4 telepg telepg 36 Jun 15 2021 pg_multixact
drwx------ 2 telepg telepg 18 Feb 11 15:46 pg_notify
drwx------ 2 telepg telepg 6 Feb 11 14:59 pg_replslot
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_serial
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_snapshots
drwx------ 2 telepg telepg 6 Nov 1 15:26 pg_stat
drwx------ 2 telepg telepg 84 Feb 11 15:50 pg_stat_tmp
drwx------ 2 telepg telepg 18 Feb 11 15:46 pg_subtrans
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_tblspc
drwx------ 2 telepg telepg 6 Jun 15 2021 pg_twophase
-rw------- 1 telepg telepg 3 Jun 15 2021 PG_VERSION
drwx------ 3 telepg telepg 140 Feb 11 15:46 pg_wal
drwx------ 2 telepg telepg 90 Aug 19 17:30 pg_xact
-rw------- 1 telepg telepg 88 Jun 15 2021 postgresql.auto.conf
-rw------- 1 telepg telepg 26843 Feb 11 15:38 postgresql.conf
-rw-r----- 1 telepg telepg 63 Feb 11 15:46 postmaster.opts
-rw-r----- 1 telepg telepg 90 Feb 11 15:46 postmaster.pid
-rw------- 1 telepg telepg 0 Feb 11 14:59 tablespace_map.old
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$cat backup_label.old
START WAL LOCATION: 0/DD000028 (file 0000000200000000000000DD)
CHECKPOINT LOCATION: 0/DD000060
BACKUP METHOD: streamed
BACKUP FROM: master
START TIME: 2022-02-11 14:59:18 CST
LABEL: pg_backup
START TIMELINE: 2
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$cat postmaster.opts
/app/telepg/pg12.5/bin/postgres "-D" "/app/telepg/pg_data_new"
[paas-sotc-telepgtest-002][telepg][/app/telepg/pg_data_new]$cat postmaster.pid
132432
/app/telepg/pg_data_new
1644565570
54321
/tmp
0.0.0.0
54321001 23
ready
6、查看启动期间数据库的日志
- 发现会先进行starting archive recovery,restored log file
- 等archive recovery complet,之后就可以启动库了
2022-02-11 15:46:10.234 CST,,,132432,,62061442.20550,1,,2022-02-11 15:46:10 CST,,0,LOG,00000,"ending log output to stderr",,"Future log output will go to log destination ""csvlog"".",,,,,,,""
2022-02-11 15:46:10.236 CST,,,132434,,62061442.20552,1,,2022-02-11 15:46:10 CST,,0,LOG,00000,"database system was interrupted; last known up at 2022-02-11 14:59:18 CST",,,,,,,,,""
2022-02-11 15:46:10.306 CST,,,132434,,62061442.20552,2,,2022-02-11 15:46:10 CST,,0,LOG,00000,"starting archive recovery",,,,,,,,,""
2022-02-11 15:46:10.309 CST,,,132434,,62061442.20552,3,,2022-02-11 15:46:10 CST,,0,LOG,00000,"restored log file ""00000002.history"" from archive",,,,,,,,,""
2022-02-11 15:46:10.331 CST,,,132434,,62061442.20552,4,,2022-02-11 15:46:10 CST,,0,LOG,00000,"restored log file ""0000000200000000000000DD"" from archive",,,,,,,,,""
2022-02-11 15:46:10.379 CST,,,132434,,62061442.20552,5,,2022-02-11 15:46:10 CST,1/0,0,LOG,00000,"redo starts at 0/DD000028",,,,,,,,,""
2022-02-11 15:46:10.380 CST,,,132434,,62061442.20552,6,,2022-02-11 15:46:10 CST,1/0,0,LOG,00000,"consistent recovery state reached at 0/DD000328",,,,,,,,,""
2022-02-11 15:46:10.380 CST,,,132432,,62061442.20550,2,,2022-02-11 15:46:10 CST,,0,LOG,00000,"database system is ready to accept read only connections",,,,,,,,,""
2022-02-11 15:46:10.384 CST,,,132434,,62061442.20552,7,,2022-02-11 15:46:10 CST,1/0,0,LOG,00000,"redo done at 0/DD000328",,,,,,,,,""
2022-02-11 15:46:10.384 CST,,,132434,,62061442.20552,8,,2022-02-11 15:46:10 CST,1/0,0,LOG,00000,"last completed transaction was at log time 2022-02-11 15:01:00.25688+08",,,,,,,,,""
2022-02-11 15:46:10.402 CST,,,132434,,62061442.20552,9,,2022-02-11 15:46:10 CST,1/0,0,LOG,00000,"restored log file ""0000000200000000000000DD"" from archive",,,,,,,,,""
2022-02-11 15:46:10.446 CST,,,132434,,62061442.20552,10,,2022-02-11 15:46:10 CST,1/0,0,LOG,00000,"selected new timeline ID: 3",,,,,,,,,""
2022-02-11 15:46:10.501 CST,,,132434,,62061442.20552,11,,2022-02-11 15:46:10 CST,1/0,0,LOG,00000,"archive recovery complete",,,,,,,,,""
2022-02-11 15:46:10.505 CST,,,132434,,62061442.20552,12,,2022-02-11 15:46:10 CST,1/0,0,LOG,00000,"restored log file ""00000002.history"" from archive",,,,,,,,,""
2022-02-11 15:46:10.527 CST,,,132432,,62061442.20550,3,,2022-02-11 15:46:10 CST,,0,LOG,00000,"database system is ready to accept connections",,,,,,,,,""