测试环境:VBR v11.0.1.1261、Agent 5.0.1.4493、CentOS Linux release 8.4.2105、PostgreSQL 14.0。
Veeam for PostgreSQL是使用Veeam Agent的Entire computer整机备份、结合Application-aware processing应用感知的备份方式去备份PostgreSQL数据库。
PostgreSQL 处理的要求和限制:
-
Veeam Agent支持PostgreSQL数据库版本是:9.5 – 14.0。
-
不支持在同一服务器上具有多个PostgreSQL实例的备份,即:只能备份指定的单个实例。
使用postgres用户,查看PostgreSQL的config_file。本次测试输出是:/database/pgdata/postgresql.conf。
root@PostgreSQL01 ~]# su - postgres
psql (14.0)
Type "help" for help.
postgres=# show config_file;
config_file
----------------------------------
/database/pgdata/postgresql.conf
(1 row)
查看database名称。本次测试数据库是:veeamdemo。
postgres=# SELECT datname FROM pg_database;
datname
-----------
postgres
template1
template0
veeamdemo
(4 rows)
postgres=#
指定PostgreSQL的lib文件。注意:在root用户下执行。假设安装PostgreSQL数据库时,lib的目录为:/home/postgres/lib/。
root@PostgreSQL01 ~]# cd /home/postgres/lib/
lroot@PostgreSQL01 lib]# ls
adminpack.so dict_snowball.so _int.so libpgcommon.a lo.so pgstattuple.so tablefunc.so utf8_and_gbk.so
amcheck.so dict_xsyn.so isn.so libpgcommon_shlib.a ltree_plpython3.so pg_surgery.so tcn.so utf8_and_iso8859_1.so
auth_delay.so earthdistance.so jsonb_plperl.so libpgfeutils.a ltree.so pg_trgm.so test_decoding.so utf8_and_iso8859.so
auto_explain.so euc2004_sjis2004.so jsonb_plpython3.so libpgport.a moddatetime.so pg_visibility.so tsm_system_rows.so utf8_and_johab.so
autoinc.so euc_cn_and_mic.so latin2_and_win1250.so libpgport_shlib.a old_snapshot.so pgxml.so tsm_system_time.so utf8_and_sjis2004.so
bloom.so euc_jp_and_sjis.so latin_and_mic.so libpgtypes.a pageinspect.so pgxs unaccent.so utf8_and_sjis.so
bool_plperl.so euc_kr_and_mic.so libecpg.a libpgtypes.so passwordcheck.so pkgconfig utf8_and_big5.so utf8_and_uhc.so
btree_gin.so euc_tw_and_big5.so libecpg_compat.a libpgtypes.so.3 pg_buffercache.so plperl.so utf8_and_cyrillic.so utf8_and_win.so
btree_gist.so file_fdw.so libecpg_compat.so libpgtypes.so.3.14 pgcrypto.so plpgsql.so utf8_and_euc2004.so
citext.so fuzzystrmatch.so libecpg_compat.so.3 libpq.a pg_freespacemap.so plpython3.so utf8_and_euc_cn.so
cube.so hstore_plperl.so libecpg_compat.so.3.14 libpq.so pgoutput.so postgres_fdw.so utf8_and_euc_jp.so
cyrillic_and_mic.so hstore_plpython3.so libecpg.so libpq.so.5 pg_prewarm.so refint.so utf8_and_euc_kr.so
dblink.so hstore.so libecpg.so.6 libpq.so.5.14 pgrowlocks.so seg.so utf8_and_euc_tw.so
dict_int.so insert_username.so libecpg.so.6.14 libpqwalreceiver.so pg_stat_statements.so sslinfo.so utf8_and_gb18030.so
root@PostgreSQL01 ~]# cd /etc/ld.so.conf.d/
root@PostgreSQL01 ld.so.conf.d]# touch postgresql-pgdg-libsV.conf
sroot@PostgreSQL01 ld.so.conf.d]# chmod 777 postgresql-pgdg-libsV.conf
proot@PostgreSQL01 ld.so.conf.d]# vi postgresql-pgdg-libsV.conf
rroot@PostgreSQL01 ld.so.conf.d]# cat postgresql-pgdg-libsV.conf
/home/postgres/lib/
.root@PostgreSQL01 ld.so.conf.d]# /sbin/ldconfig /etc/ld.so.conf.d/postgresql-pgdg-libsV.conf
root@PostgreSQL01 ld.so.conf.d]#
在PostgreSQL数据库服务器上安装Veeam Agent后,需要把config_file、database名称填写到veeam.ini配置文件里。
Proot@PostgreSQL01 ~]#vi /etc/veeam/veeam.ini
....省略其他信息,只保留postgres部分。
hpostgres]
# Path to PostgreSQL configuration file
configPath = /database/pgdata/postgresql.conf
# Default PostgreSQL database to connect to
dbname = veeamdemo
....省略其他信息,只保留postgres部分。
编辑完veeam.ini后,需要重启Veeam Agent服务。
oroot@PostgreSQL01 ~]# service veeamservice restart
Redirecting to /bin/systemctl restart veeamservice.service
>root@PostgreSQL01 ~]#
新建Agent备份策略的Backup Mode选项里,选择Entire computer整机备份。
依次:Guest Processing--Enable application-aware processing--Applications--Edit。
在General选项里,选择Require successful processing (recommended)。
在PostgresSQL选项里,Add输入postgres帐号、密码。注意:不能是root帐号。
本次测试使用Database user with password方式,详细信息可参考以下网址:
发起备份任务后,确保备份成功,且日志输出信息有“A PostgreSQL checkpoint has been triggered successfully”。
排错建议:如果在备份过程中出现不能“应用感知”到PostgreSQL数据库,则需要查看Veeam相关日志信息。
在“/var/log/veeam/Backup/”目录下,会生成以备份策略命名的文件夹,以存放相关Veeam日志。重点查看VeeamPostgres.log日志信息。
rroot@PostgreSQL01 Session_20211214_095401_{efc88dc8-a1ec-4840-a7fc-78870b14ca77}]# pwd
/var/log/veeam/Backup/Agent Backup Job_PostgreSQL - 192.168.2.26/Session_20211214_095401_{efc88dc8-a1ec-4840-a7fc-78870b14ca77}
kroot@PostgreSQL01 Session_20211214_095401_{efc88dc8-a1ec-4840-a7fc-78870b14ca77}]# ls
Agent.Source.log Job.log veeammount.log VeeamOracle.log VeeamPostgres.log
groot@PostgreSQL01 Session_20211214_095401_{efc88dc8-a1ec-4840-a7fc-78870b14ca77}]# tail -20 VeeamPostgres.log
p14.12.2021 09:54:02.200] <140521346643264> lpbcomm| 192.168.2.26
14.12.2021 09:54:02.200] <140521346643264> lpbcomm| ::1
c14.12.2021 09:54:02.200] <140521346643264> lpbcomm| }
R14.12.2021 09:54:02.200] <140521346643264> lpbsvc | Main thread has started.
14.12.2021 09:54:02.200] <140521346643264> lpbsvc | Current group name pveeam]
a14.12.2021 09:54:02.200] <140521346643264> sig | Waiting for Ctrl-C processing thread...
14.12.2021 09:54:02.200] <140520951301888> | Thread started. Role: 'Ctrl-C thread', thread id: 140520951301888, parent id: 140521346643264.
c14.12.2021 09:54:02.200] <140521346643264> sig | Ctrl-C thread has been started. ID: 23140]
e14.12.2021 09:54:02.200] <140521346643264> | Entering FIPS 140-2 mode of operation
814.12.2021 09:54:02.208] <140521346643264> lpbcore| Connecting to veeamservice...
e14.12.2021 09:54:02.208] <140521346643264> lpbcore| Connecting to veeamservice... ok.
c14.12.2021 09:54:02.209] <140521346643264> lpbcore| Loading PostgreSQL client from OS user root]
614.12.2021 09:54:02.219] <140521346643264> postgre| PostgreSQL client library [libpq.so.5] was loaded successfully.
614.12.2021 09:54:02.219] <140521346643264> postgre| Connecting to PostgreSQL with connection info: r14.12.2021 09:54:02.270] <140521346643264> postgre| Request execute gcheckpoint].
14.12.2021 09:54:02.274] <140521346643264> postgre| Request executed successfully.
14.12.2021 09:54:02.611] <140521346643264> postgre| Disconnecting from PostgreSQL.
.14.12.2021 09:54:02.614] <140520951301888> sig | CtrlC thread received stop signal. Exiting.
]14.12.2021 09:54:02.614] <140520951301888> | Thread finished. Role: 'Ctrl-C thread'.
o14.12.2021 09:54:02.615] <140521346643264> sig | Ctrl-C thread stopped.
eroot@PostgreSQL01 Session_20211214_095401_{efc88dc8-a1ec-4840-a7fc-78870b14ca77}]#
如果需要寻求Veeam Support的Case支持,建议提前使用日志收集命令 veeamconfig grablogs ,如把收集好的 veeam_logs_val_20211215_101502.tar.gz 日志文件,发给Veeam Support去分析。
2root@PostgreSQL01 ~]# veeamconfig grablogs
Logs have been exported successfully.
.root@PostgreSQL01 ~]# ls
anaconda-ks.cfg veeam_logs_val_20211215_101502.tar.gz
croot@PostgreSQL01 ~]#
如对以上过程有技术疑问,请联系本文作者:helly.wu@veeam.com