博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL备份之pg_basebackup
阅读量:6864 次
发布时间:2019-06-26

本文共 6702 字,大约阅读时间需要 22 分钟。

  hot3.png

一、准备

连接上master节点创建replication用户

# CREATE ROLE replicator with login replication password 123456;

修改白名单pg_hba.conf

# host    replication    all        xxxxx/32    md5

二、制作基础备份

# pg_basebackup --format=tar \ #使用打包方式备份--xlog-method=fetch \    #获取wal文件方式,等备份结束后把备份期间所有的wal备份--compress=1 \    #压缩等级--checkpoint=fast \    #执行检查点的方式--label=backup \    #标签--pgdata=/data/backup/ #备份目录--progress \    #打印过程--verbose \    #打印详细信息--host='172.17.5.45' \    #master节点ip--port=5432 \    #master节点端口--user=postgres    #连接master节点的用户Password: transaction log start point: 2/34000028 on timeline 1414272/414272 kB (100%), 3/3 tablespaces                                         transaction log end point: 2/34000128pg_basebackup: base backup completed

备份默认会占用一个连接,需要设置大一点,还可以使用

-r, --max-rate=RATE    maximum transfer rate to transfer data directory                         (in kB/s, or use suffix "k" or "M")

限制传输速度

# ll backup/total 123196-rw-r--r--. 1 root root       129 Sep  8 01:21 25375.tar.gz-rw-r--r--. 1 root root       128 Sep  8 01:21 25376.tar.gz-rw-r--r--. 1 root root 126141406 Sep  8 01:22 base.tar.gz

base.tar.gz是数据目录的备份,其他两个是表空间的备份

三、恢复

1. 解压缩
# cd /data/backup/# mkdir pgdata 25375 25376# tar zxf base.tar.gz -C pgdata/# ls pgdata/backup_label  global   pg_dynshmem  pg_ident.conf  pg_logical    pg_notify    pg_serial     pg_stat      pg_subtrans  pg_twophase  pg_xlog               postgresql.confbase          pg_clog  pg_hba.conf  pg_log         pg_multixact  pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION   postgresql.auto.conf  recovery.conf# tar zxf 25375.tar.gz -C 25375# tar zxf 25376.tar.gz -C 25376 # ls25375  25375.tar.gz  25376  25376.tar.gz  base.tar.gz  pgdata
2. 修改表空间软连接

<># ln -sf /data/backup/25375 pgdata/pg_tblspc/25375 [root@node2 backup]# ln -sf /data/backup/25376 pgdata/pg_tblspc/25376                     [root@node2 backup]# ll pgdata/pg_tblspc/ total 0 lrwxrwxrwx. 1 root root 18 Sep  8 01:35 25375 -> /data/backup/25375 lrwxrwxrwx. 1 root root 18 Sep  8 01:35 25376 -> /data/backup/25376

3. 修改数据目录权限
# chown -R postgres:postgres pgdata/ 25375 25376 # chmod 0700 pgdata/# lltotal 123208drwxr-xr-x.  3 postgres postgres      4096 Sep  8 01:32 25375-rw-r--r--.  1 root     root           129 Sep  8 01:21 25375.tar.gzdrwxr-xr-x.  3 postgres postgres      4096 Sep  8 01:33 25376-rw-r--r--.  1 root     root           128 Sep  8 01:21 25376.tar.gz-rw-r--r--.  1 root     root     126141406 Sep  8 01:22 base.tar.gzdrwx------. 19 postgres postgres      4096 Sep  8 01:31 pgdata
4. 启动
# su postgres$ pg_ctl -D pgdata/ startserver starting [    2015-09-08 05:40:04.510 UTC 11107 55ee74b4.2b63 1 0]LOG:  redirecting log output to logging collector process[    2015-09-08 05:40:04.511 UTC 11107 55ee74b4.2b63 2 0]HINT:  Future log output will appear in directory "pg_log".$ psql psql (9.4.4)Type "help" for help.postgres=# \db+                                  List of tablespaces    Name    |  Owner   |      Location      | Access privileges | Options | Description ------------+----------+--------------------+-------------------+---------+------------- pg_default | postgres |                    |                   |         |  pg_global  | postgres |                    |                   |         |  tblspc1    | postgres | /data/backup/25375 |                   |         |  tblspc2    | postgres | /data/backup/25376 |                   |         | (4 rows)

四、 制作从库

1. 获取备份文件
# pg_basebackup --format=plain \    #使用目录方式--write-recovery-conf \    #生成简单recovery.conf--xlog-method=stream \    #使用stream的方式备份wal文件,会再占用一个max_wal_sender,wal文件一生成就会备份--checkpoint=fast \--label=backup \--pgdata=/data/test_pgdata_94 \--progress \--verbose \--host='172.17.5.45' \--port=5432 \--user=postgresPassword: transaction log start point: 2/38000028 on timeline 1pg_basebackup: starting background WAL receiver397887/397887 kB (100%), 3/3 tablespaces                                         transaction log end point: 2/380000F0pg_basebackup: waiting for background process to finish streaming ...pg_basebackup: base backup completed
2. 修改目录权限
# chown -R postgres:postgres test_pgdata_94 tblspc1/ tblspc2/# chmod 0700 test_pgdata_94# ll test_pgdata_94total 104-rw-------. 1 postgres postgres  189 Sep  8 01:43 backup_labeldrwx------. 6 postgres postgres 4096 Sep  8 01:43 basedrwx------. 2 postgres postgres 4096 Sep  8 01:43 globaldrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_clogdrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_dynshmem-rw-------. 1 postgres postgres 4581 Sep  8 01:43 pg_hba.conf-rw-------. 1 postgres postgres 1636 Sep  8 01:43 pg_ident.confdrwxr-xr-x. 2 postgres postgres 4096 Sep  8 01:43 pg_logdrwx------. 4 postgres postgres 4096 Sep  8 01:43 pg_logicaldrwx------. 4 postgres postgres 4096 Sep  8 01:43 pg_multixactdrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_notifydrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_replslotdrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_serialdrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_snapshotsdrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_statdrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_stat_tmpdrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_subtransdrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_tblspcdrwx------. 2 postgres postgres 4096 Sep  8 01:43 pg_twophase-rw-------. 1 postgres postgres    4 Sep  8 01:43 PG_VERSIONdrwx------. 3 postgres postgres 4096 Sep  8 01:43 pg_xlog-rw-------. 1 postgres postgres   88 Sep  8 01:43 postgresql.auto.conf-rw-------. 1 postgres postgres 4676 Sep  8 01:43 postgresql.conf-rw-r--r--. 1 postgres postgres  131 Sep  8 01:43 recovery.conf# ll tblspc1/total 4drwx------. 2 postgres postgres 4096 Sep  8 01:43 PG_9.4_201409291# ll tblspc2total 4drwx------. 2 postgres postgres 4096 Sep  8 01:43 PG_9.4_201409291
3. 启动
# su postgres$ pg_ctl -D test_pgdata_94 startserver starting$ [    2015-09-08 05:49:55.383 UTC 12100 55ee7703.2f44 1 0]LOG:  redirecting log output to logging collector process[    2015-09-08 05:49:55.383 UTC 12100 55ee7703.2f44 2 0]HINT:  Future log output will appear in directory "pg_log".$ psql psql (9.4.4)Type "help" for help.postgres=# \db+                                List of tablespaces    Name    |  Owner   |   Location    | Access privileges | Options | Description ------------+----------+---------------+-------------------+---------+------------- pg_default | postgres |               |                   |         |  pg_global  | postgres |               |                   |         |  tblspc1    | postgres | /data/tblspc1 |                   |         |  tblspc2    | postgres | /data/tblspc2 |                   |         | (4 rows)

参考:

转载于:https://my.oschina.net/aven92/blog/502755

你可能感兴趣的文章