Pg 13 wal-g 本地目录备份与恢复

一、安全备份配置

1.系统包
-# more /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
-#

1).install postgresql
-# yum install gcc-c++ readline-devel zlib-devel
-# tar zxvf postgresql-13.1.tar.gz
-# cd postgresql-13.1
-# ./configure --prefix=/opt/pgsql/13.1
-# make -j 2
-# make install
2).add postgres user
-# useradd postgres
-# passwd postgres
Changing password for user postgres.
New password:
BAD PASSWORD: The password contains the user name in some form
Retype new password:
passwd: all authentication tokens updated successfully.

3).add data dir
-# mkdir /pgdata
-# chown postgres.postgres /pgdata/
-# chmod 700 /pgdata/

4).配置PATH路径
-# su - postgres
$ vi .bash_profile
-# User specific environment and startup programs
export PATH=/opt/pgsql/13.1/bin:$PATH:$HOME/.local/bin:$HOME/bin

初始化数据库

-# su - postgres
$ initdb --version
initdb (PostgreSQL) 13.1
$ initdb -D /pgdata/

2.下载wal-g
下载链接
-# wget https://github.com/wal-g/wal-g/releases/download/v0.2.19/wal-g.linux-amd64.tar.gz
-# tar zxvf wal-g.linux-amd64.tar.gz
-# mv wal-g /opt/pgsql/13.1/bin/
-# chmod 755 /opt/pgsql/13.1/bin/wal-g

3.配置archive目录
-# mkdir /pg_archive
-# chown postgres.postgres /pg_archive/

4.配置文件
1).postgresql.conf
listen_addresses = *
wal_level = logical
archive_mode = on
archive_command = ' WALG_FILE_PREFIX=/pg_archive /opt/pgsql/13.1/bin/wal-g wal-push %p'
archive_timeout = 60

2).check archive_command configure

$ psql
psql (13.1)
Type "help" for help.

postgres=# show archive_command ;
archive_command
##--------------------------------------------------------------------
WALG_FILE_PREFIX=/pg_archive /opt/pgsql/13.1/bin/wal-g wal-push %p
(1 row)

postgres=#

5.备份测试
1).创建第一个物理备份
$ WALG_FILE_PREFIX=/pg_archive/ wal-g backup-push /pgdata
INFO: 2020/12/31 16:39:29.106836 Doing full backup.
INFO: 2020/12/31 16:39:29.404539 Calling pg_start_backup()
INFO: 2020/12/31 16:39:29.571764 Walking ...
INFO: 2020/12/31 16:39:29.574369 Starting part 1 ...
INFO: 2020/12/31 16:39:31.703930 Finished writing part 1.
INFO: 2020/12/31 16:39:31.703958 Starting part 2 ...
INFO: 2020/12/31 16:39:31.703967 /global/pg_control
INFO: 2020/12/31 16:39:31.705683 Finished writing part 2.
INFO: 2020/12/31 16:39:31.708400 Calling pg_stop_backup()
INFO: 2020/12/31 16:39:32.728365 Starting part 3 ...
INFO: 2020/12/31 16:39:32.730934 backup_label
INFO: 2020/12/31 16:39:32.731307 tablespace_map
INFO: 2020/12/31 16:39:32.731515 Finished writing part 3.
INFO: 2020/12/31 16:39:32.743279 Wrote backup with name base_00000001000000000000003A

$
$ WALG_FILE_PREFIX=/pg_archive/ wal-g wal-show
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
| TLI | PARENT TLI | SWITCHPOINT LSN | START SEGMENT | END SEGMENT | SEGMENT RANGE | SEGMENTS COUNT | STATUS | BACKUPS COUNT |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
##| 1 | 0 | 0 | 000000010000000000000037 | 000000010000000000000048 | 18 | 18 | OK | 1 |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
[postgres@pg01 wal_005]$ WALG_FILE_PREFIX=/pg_archive/ wal-g wal-verify
INFO: 2020/12/31 17:02:25.129285 Detected earliest available backup: base_00000001000000000000003A
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START | END | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
##| 1 | 00000001000000000000003A | 000000010000000000000048 | 15 | FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
WAL storage status: OK
[postgres@pg01 wal_005]$ WALG_FILE_PREFIX=/pg_archive/ wal-g backup-list
name last_modified wal_segment_backup_start
base_00000001000000000000003A 2020-12-31T16:39:32+08:00 00000001000000000000003A
[postgres@pg01 wal_005]$

6.安全增强
1).安装envdir
-# yum install python3-pip
-# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ envdir
-# which envdir
/usr/local/bin/envdir
-#

2).配置wal-g目录环境变量

-# umask u=rwx,g=rx,o=
-# mkdir -p /etc/wal-g.d/env
-# echo '/pg_archive' > /etc/wal-g.d/env/WALG_FILE_PREFIX
-# echo 'postgres' > /etc/wal-g.d/env/PGUSER
-# echo 'pg@123' > /etc/wal-g.d/env/PGPASSWORD
-# chown -R postgres:postgres /etc/wal-g.d

3).修改pg_hba.conf

-# TYPE DATABASE USER ADDRESS METHOD

-# "local" is for Unix domain socket connections only
local all all md5
-# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
-# IPv6 local connections:
-# host all all ::1/128 trust
-# Allow replication connections from localhost, by a user with the
-# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust

4).修改数据库密码
postgres=# alter user postgres password 'pg@123';
测试登录
$ psql
Password for user postgres:
psql (13.1)
Type "help" for help.
postgres=#

5).修改postgresql.conf

archive_command = '/usr/local/bin/envdir /etc/wal-g.d/env /opt/pgsql/13.1/bin/wal-g wal-push %p'

6).配置生效
$ pg_ctl reload -D /pgdata/

7).检查archive_command配置
postgres=# show archive_command
archive_command
#------------------------------------------------------------------------------
/usr/local/bin/envdir /etc/wal-g.d/env /opt/pgsql/13.1/bin/wal-g wal-push %p
(1 row)
postgres=#

8).备份测试
$ envdir /etc/wal-g.d/env wal-g backup-push /pgdata
INFO: 2020/12/31 18:22:57.775867 Doing full backup.
INFO: 2020/12/31 18:22:57.784613 Calling pg_start_backup()
INFO: 2020/12/31 18:22:57.791893 Walking ...
INFO: 2020/12/31 18:22:57.792123 Starting part 1 ...
INFO: 2020/12/31 18:22:58.220720 Finished writing part 1.
INFO: 2020/12/31 18:22:58.220745 Starting part 2 ...
INFO: 2020/12/31 18:22:58.220754 /global/pg_control
INFO: 2020/12/31 18:22:58.293059 Finished writing part 2.
INFO: 2020/12/31 18:22:58.295364 Calling pg_stop_backup()
INFO: 2020/12/31 18:22:59.320693 Starting part 3 ...
INFO: 2020/12/31 18:22:59.321500 backup_label
INFO: 2020/12/31 18:22:59.321551 tablespace_map
INFO: 2020/12/31 18:22:59.321601 Finished writing part 3.
INFO: 2020/12/31 18:22:59.324579 Wrote backup with name base_00000001000000000000000B

$ envdir /etc/wal-g.d/env wal-g wal-verify
INFO: 2020/12/31 18:23:57.784705 Detected earliest available backup: base_00000001000000000000000B
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START | END | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
| 1 | 00000001000000000000000B | 00000001000000000000000B | 1 | FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
WAL storage status: OK

$ envdir /etc/wal-g.d/env wal-g wal-show
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
| TLI | PARENT TLI | SWITCHPOINT LSN | START SEGMENT | END SEGMENT | SEGMENT RANGE | SEGMENTS COUNT | STATUS | BACKUPS COUNT |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
###| 1 | 0 | 0 | 00000001000000000000000B | 00000001000000000000000B | 1 | 1 | OK | 1 |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+

$ envdir /etc/wal-g.d/env wal-g backup-list
name last_modified wal_segment_backup_start
base_00000001000000000000000B 2020-12-31T18:22:59+08:00 00000001000000000000000B
$

创建测试数据

postgres=# create table t1(id int);
CREATE TABLE
postgres=# insert into t1 select id from generate_series (1,1000000) as t(id);
INSERT 0 1000000
postgres=# checkpoint ;
CHECKPOINT
postgres=# select pg_switch_wal();
pg_switch_wal
##---------------
0/10D37080
(1 row)

postgres=# insert into t1 select id from generate_series (1,1000000) as t(id);
INSERT 0 1000000
postgres=# checkpoint ;
CHECKPOINT
postgres=# select pg_switch_wal();
pg_switch_wal
##---------------
0/14DCA5E8
(1 row)

postgres=#

检查新的归档数量

$ envdir /etc/wal-g.d/env wal-g backup-list
name last_modified wal_segment_backup_start
base_00000001000000000000000B 2020-12-31T18:22:59+08:00 00000001000000000000000B
$
$ envdir /etc/wal-g.d/env wal-g wal-verify
INFO: 2020/12/31 18:29:01.492516 Detected earliest available backup: base_00000001000000000000000B
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START | END | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
| 1 | 00000001000000000000000B | 000000010000000000000014 | 10 | FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
WAL storage status: OK

注意:
归档wal文件增多,下面三项递增
END
SEGMENTS COUNT

$
$ envdir /etc/wal-g.d/env wal-g wal-show
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
| TLI | PARENT TLI | SWITCHPOINT LSN | START SEGMENT | END SEGMENT | SEGMENT RANGE | SEGMENTS COUNT | STATUS | BACKUPS COUNT |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
###| 1 | 0 | 0 | 00000001000000000000000B | 000000010000000000000014 | 10 | 10 | OK | 1 |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
$

注意:
归档wal文件增多,下面三项递增
END SEGMENT
SEGMENT RANGE
SEGMENTS COUNT

二、删除备份演练

1.执行第二次物理备份

$ envdir /etc/wal-g.d/env wal-g backup-push /pgdata
INFO: 2020/12/31 18:33:48.362181 Doing full backup.
INFO: 2020/12/31 18:33:48.371295 Calling pg_start_backup()
INFO: 2020/12/31 18:33:48.498971 Walking ...
INFO: 2020/12/31 18:33:48.499112 Starting part 1 ...
INFO: 2020/12/31 18:33:49.638038 Finished writing part 1.
INFO: 2020/12/31 18:33:49.638063 Starting part 2 ...
INFO: 2020/12/31 18:33:49.638072 /global/pg_control
INFO: 2020/12/31 18:33:49.640035 Finished writing part 2.
INFO: 2020/12/31 18:33:49.642343 Calling pg_stop_backup()
INFO: 2020/12/31 18:33:50.674269 Starting part 3 ...
INFO: 2020/12/31 18:33:50.675054 backup_label
INFO: 2020/12/31 18:33:50.675098 tablespace_map
INFO: 2020/12/31 18:33:50.675140 Finished writing part 3.
INFO: 2020/12/31 18:33:50.677326 Wrote backup with name base_000000010000000000000016
$
2.检查备份信息
$ envdir /etc/wal-g.d/env wal-g wal-show
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
| TLI | PARENT TLI | SWITCHPOINT LSN | START SEGMENT | END SEGMENT | SEGMENT RANGE | SEGMENTS COUNT | STATUS | BACKUPS COUNT |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
###| 1 | 0 | 0 | 00000001000000000000000B | 000000010000000000000016 | 12 | 12 | OK | 2 |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
[postgres@localhost pg_archive]$ envdir /etc/wal-g.d/env wal-g backup-list
name last_modified wal_segment_backup_start
base_00000001000000000000000B 2020-12-31T18:22:59+08:00 00000001000000000000000B
base_000000010000000000000016 2020-12-31T18:33:50+08:00 000000010000000000000016
[postgres@localhost pg_archive]$
[postgres@localhost pg_archive]$ envdir /etc/wal-g.d/env wal-g wal-verify
INFO: 2020/12/31 18:34:20.585552 Detected earliest available backup: base_00000001000000000000000B
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START | END | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
| 1 | 00000001000000000000000B | 000000010000000000000016 | 12 | FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
WAL storage status: OK
$

3.执行第三次备份

$ envdir /etc/wal-g.d/env wal-g backup-push /pgdata
INFO: 2020/12/31 18:41:10.662537 Doing full backup.
INFO: 2020/12/31 18:41:10.671256 Calling pg_start_backup()
INFO: 2020/12/31 18:41:10.745248 Walking ...
INFO: 2020/12/31 18:41:10.745384 Starting part 1 ...
INFO: 2020/12/31 18:41:11.775127 Finished writing part 1.
INFO: 2020/12/31 18:41:11.775151 Starting part 2 ...
INFO: 2020/12/31 18:41:11.775159 /global/pg_control
INFO: 2020/12/31 18:41:11.778236 Finished writing part 2.
INFO: 2020/12/31 18:41:11.780645 Calling pg_stop_backup()
INFO: 2020/12/31 18:41:12.811946 Starting part 3 ...
INFO: 2020/12/31 18:41:12.812844 backup_label
INFO: 2020/12/31 18:41:12.812882 tablespace_map
INFO: 2020/12/31 18:41:12.812920 Finished writing part 3.
INFO: 2020/12/31 18:41:12.815261 Wrote backup with name base_000000010000000000000019
[postgres@localhost pg_archive]$ envdir /etc/wal-g.d/env wal-g backup-list
name last_modified wal_segment_backup_start
base_00000001000000000000000B 2020-12-31T18:22:59+08:00 00000001000000000000000B
base_000000010000000000000016 2020-12-31T18:33:50+08:00 000000010000000000000016
base_000000010000000000000019 2020-12-31T18:41:12+08:00 000000010000000000000019
$
$ envdir /etc/wal-g.d/env wal-g wal-show
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
| TLI | PARENT TLI | SWITCHPOINT LSN | START SEGMENT | END SEGMENT | SEGMENT RANGE | SEGMENTS COUNT | STATUS | BACKUPS COUNT |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
###| 1 | 0 | 0 | 00000001000000000000000B | 000000010000000000000019 | 15 | 15 | OK | 3 |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
$ envdir /etc/wal-g.d/env wal-g wal-verify
INFO: 2020/12/31 18:41:57.221827 Detected earliest available backup: base_00000001000000000000000B
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START | END | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
| 1 | 00000001000000000000000B | 000000010000000000000019 | 15 | FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
WAL storage status: OK
$

4.继续插入数据

postgres=# insert into t1 select id from generate_series (1,1000000) as t(id);
INSERT 0 1000000
postgres=# insert into t1 select id from generate_series (1,1000000) as t(id);
INSERT 0 1000000
postgres=# insert into t1 select id from generate_series (1,1000000) as t(id);
INSERT 0 1000000
postgres=# checkpoint ;
CHECKPOINT
postgres=# select pg_switch_wal();
pg_switch_wal
##---------------
0/25833840
(1 row)

postgres=#

5.检查备份信息

$ envdir /etc/wal-g.d/env wal-g wal-verify
INFO: 2020/12/31 18:43:36.134033 Detected earliest available backup: base_00000001000000000000000B
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START | END | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
| 1 | 00000001000000000000000B | 000000010000000000000025 | 27 | FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
WAL storage status: OK
$
$ envdir /etc/wal-g.d/env wal-g wal-show
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
| TLI | PARENT TLI | SWITCHPOINT LSN | START SEGMENT | END SEGMENT | SEGMENT RANGE | SEGMENTS COUNT | STATUS | BACKUPS COUNT |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
###| 1 | 0 | 0 | 00000001000000000000000B | 000000010000000000000025 | 27 | 27 | OK | 3 |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
$ envdir /etc/wal-g.d/env wal-g backup-list
name last_modified wal_segment_backup_start
base_00000001000000000000000B 2020-12-31T18:22:59+08:00 00000001000000000000000B
base_000000010000000000000016 2020-12-31T18:33:50+08:00 000000010000000000000016
base_000000010000000000000019 2020-12-31T18:41:12+08:00 000000010000000000000019
$

postgres=# select * from pg_stat_archiver ;
-[ RECORD 1 ]------+------------------------------
archived_count | 44
last_archived_wal | 000000010000000000000026
last_archived_time | 2020-12-31 18:48:27.820485+08
failed_count | 0
last_failed_wal |
last_failed_time |
stats_reset | 2020-12-31 17:51:02.703605+08

postgres=#

6.恢复测试
1).clear pgdata dir
$ cd /pgdata/
$ rm -rf *
2).restore pgdata dir
$ envdir /etc/wal-g.d/env wal-g backup-fetch /pgdata LATEST
3).create recovery.signal file
$ touch recovery.signal
4).modify restore_command

restore_command='/usr/local/bin/envdir /etc/wal-g.d/env /opt/pgsql/13.1/bin/wal-g wal-fetch %f %p'

5).start database
$ pg_ctl start -D /pgdata/
waiting for server to start....2020-12-31 19:03:07.032 CST [12695] LOG: redirecting log output to logging collector process
2020-12-31 19:03:07.032 CST [12695] HINT: Future log output will appear in directory "log".
done
server started
$

6).check data
$ psql
Password for user postgres:
psql (13.1)
Type "help" for help.

postgres=#
postgres=#
postgres=# select count(*) from t1 ;
count
##---------
5000000
(1 row)

postgres=#

7.删除备份
1).检查备份信息
备份列表TLI:1,2
$ envdir /etc/wal-g.d/env wal-g wal-verify
INFO: 2020/12/31 19:06:50.231985 Detected earliest available backup: base_00000001000000000000000B
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START | END | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
| 1 | 00000001000000000000000B | 000000010000000000000026 | 28 | FOUND |
| 2 | 000000020000000000000027 | 000000020000000000000028 | 2 | FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
WAL storage status: OK
$
$ envdir /etc/wal-g.d/env wal-g wal-show
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
| TLI | PARENT TLI | SWITCHPOINT LSN | START SEGMENT | END SEGMENT | SEGMENT RANGE | SEGMENTS COUNT | STATUS | BACKUPS COUNT |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
###| 1 | 0 | 0 | 00000001000000000000000B | 000000010000000000000026 | 28 | 28 | OK | 3 |
###| 2 | 1 | 654311424 | 000000020000000000000027 | 000000020000000000000028 | 2 | 2 | OK | 1 |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
$

$ envdir /etc/wal-g.d/env wal-g backup-list
name last_modified wal_segment_backup_start
base_00000001000000000000000B 2020-12-31T18:22:59+08:00 00000001000000000000000B
base_000000010000000000000016 2020-12-31T18:33:50+08:00 000000010000000000000016
base_000000010000000000000019 2020-12-31T18:41:12+08:00 000000010000000000000019
base_000000020000000000000028 2020-12-31T19:06:31+08:00 000000020000000000000028
$

2).删除备份,
保留两个全备份及后续增量

a.默认仅仅执行删除演练
$ envdir /etc/wal-g.d/env wal-g delete retain FULL 2
......
......
INFO: 2020/12/31 19:12:26.897540 Dry run, nothing were deleted

$ envdir /etc/wal-g.d/env wal-g backup-list
name last_modified wal_segment_backup_start
base_00000001000000000000000B 2020-12-31T18:22:59+08:00 00000001000000000000000B
base_000000010000000000000016 2020-12-31T18:33:50+08:00 000000010000000000000016
base_000000010000000000000019 2020-12-31T18:41:12+08:00 000000010000000000000019
base_000000020000000000000028 2020-12-31T19:06:31+08:00 000000020000000000000028
$

b.确认执行删除备份
$ envdir /etc/wal-g.d/env wal-g delete retain FULL 2 --confirm

c.检查备份信息
$ envdir /etc/wal-g.d/env wal-g backup-list
name last_modified wal_segment_backup_start
base_000000010000000000000019 2020-12-31T18:41:12+08:00 000000010000000000000019
base_000000020000000000000028 2020-12-31T19:06:31+08:00 000000020000000000000028
$
$ envdir /etc/wal-g.d/env wal-g wal-show
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
| TLI | PARENT TLI | SWITCHPOINT LSN | START SEGMENT | END SEGMENT | SEGMENT RANGE | SEGMENTS COUNT | STATUS | BACKUPS COUNT |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
###| 1 | 0 | 0 | 000000010000000000000019 | 000000010000000000000026 | 14 | 14 | OK | 1 |
###| 2 | 1 | 654311424 | 000000020000000000000027 | 000000020000000000000029 | 3 | 3 | OK | 1 |
+-----+------------+-----------------+--------------------------+--------------------------+---------------+----------------+--------+---------------+
$
$ envdir /etc/wal-g.d/env wal-g wal-verify
INFO: 2020/12/31 19:18:47.388313 Detected earliest available backup: base_000000010000000000000019
+-----+--------------------------+--------------------------+----------------+--------+
| TLI | START | END | SEGMENTS COUNT | STATUS |
+-----+--------------------------+--------------------------+----------------+--------+
| 1 | 000000010000000000000019 | 000000010000000000000026 | 14 | FOUND |
| 2 | 000000020000000000000027 | 000000020000000000000029 | 3 | FOUND |
+-----+--------------------------+--------------------------+----------------+--------+
WAL storage status: OK
$

参考文档:
https://github.com/wal-g/wal-g
https://github.com/wal-g/wal-g/blob/master/PostgreSQL.md
https://supabase.io/blog/2020/08/02/continuous-postgresql-backup-walg
https://coderwall.com/p/cwe2_a/backup-and-recover-a-postgres-db-using-wal-e

上一篇:【MTK】CTS&ITS谷歌认证测试项常见fail项解法


下一篇:Appium对手机chrome浏览器操作