装置postgres,理论环境已装置可跳过,参考官网装置

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -sudo apt-get update# 抉择装置版本,这里默认14.5sudo apt-get -y install postgresql-14 

装置pgbackRest

mkdir -p /buildwget -q -O - https://ghproxy.com/https://github.com/pgbackrest/pgbackrest/archive/release/2.41.tar.gz | tar zx -C /buildsudo apt-get -y install make gcc libpq-dev libssl-dev libxml2-dev pkg-config liblz4-dev libzstd-dev libbz2-dev libz-dev libyaml-devcd /build/pgbackrest-release-2.41/src && ./configure && makesudo cp pgbackrest /usr/binsudo chmod 755 /usr/bin/pgbackrest

创立配置文件

sudo mkdir -p -m 770 /var/log/pgbackrestsudo chown postgres:postgres /var/log/pgbackrestsudo mkdir -p /etc/pgbackrestsudo mkdir -p /etc/pgbackrest/conf.dsudo touch /etc/pgbackrest/pgbackrest.confsudo chmod 640 /etc/pgbackrest/pgbackrest.confsudo chown postgres:postgres /etc/pgbackrest/pgbackrest.confsudo mkdir -p /var/lib/pgbackrestsudo chmod 750 /var/lib/pgbackrestsudo chown postgres:postgres /var/lib/pgbackrest# 写入配置文件cat << EOF > /etc/pgbackrest/pgbackrest.conf[postgres]pg1-path=/var/lib/postgresql/14/main[global]repo1-path=/var/lib/pgbackrestrepo1-retention-full=2repo1-cipher-pass=Dpy3iBVyfoAsDH+OQyApvpNT5ijs3jPI3fuVgTRKKbckN9HZe74ObGtsdkrhaa7Trepo1-cipher-type=aes-256-cbcprocess-max=3[global:archive-push]compress-level=3EOF

批改postgres 配置文件

sed -i "s/#archive_mode = off/archive_mode = on/g" /etc/postgresql/14/main/postgresql.confsed -i "s/#archive_command = ''/archive_command = 'pgbackrest --stanza=postgres archive-push %p'/g" /etc/postgresql/14/main/postgresql.confsed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/14/main/postgresql.confsed -i "s/#max_wal_senders = 10/max_wal_senders = 3/g" /etc/postgresql/14/main/postgresql.conf

容许近程登录(可选)

echo "host    all             all             0.0.0.0/0               scram-sha-256" >> /etc/postgresql/14/main/pg_hba.conf 

批改明码(可选)

sudo -u postgres psql << EOF ALTER USER postgres WITH PASSWORD 'postgres';EOF

创立stanza

sudo -u postgres pgbackrest --stanza=postgres --log-level-console=info stanza-create

查看stanza

sudo -u postgres pgbackrest --stanza=postgres --log-level-console=info check

重启postgres

sudo -u postgres /usr/lib/postgresql/14/bin/pg_ctl -D /var/lib/postgresql/14/main/ restart

以上步骤就实现pgbackrest 的根本设置了


全量备份
sudo -u postgres pgbackrest --stanza=postgres --log-level-console=info backup
增量备份
sudo -u postgres pgbackrest --stanza=postgres type=incr --log-level-console=info backup
差别备份
sudo -u postgres pgbackrest --stanza=postgres type=diff --log-level-console=info backup
执行还原
执行还原前须要先停掉postgres
sudo -u postgres /usr/lib/postgresql/14/bin/pg_ctl -D /var/lib/postgresql/14/main/ stoppgbackrest --stanza=postgres --log-level-console=info --delta restore