postgresql物理备份之pg_basebackup
2018-01-16 18:33
1611 查看
pg_basebackup是从postgresql 9.1版本开始提供的一个方便基础备份的工具,它会把整个数据库实例的数据都拷贝出来,而不只是把实例中的部分(如某个数据库或表)单独备份;
pg_basebackup 备份过程:
1)开启归档
创建归档目录
mkdir -p /ssd/pg957/arch
chown -R postgres:postgres /ssd/pg957/arch
配置归档命令
vi $PGDATA/postgresql.conf
archive_mode = on
archive_command = ‘DATE=
wal_level = hot_standby #配置日志模式
注解:
%p 表示xlog文件名$PGDATA的相对路径, 如pg_xlog/00000001000000190000007D
%f 表示xlog文件名, 如00000001000000190000007D
2)重启数据库使参数生效,验证归档。
checkpoint;
select pg_switch_xlog();
[root@hgdb01 20180117]# pwd
/ssd/pg957/arch/20180117
[root@hgdb01 20180117]# ls
000000020000000000000003 000000020000000000000004
3)创建replication权限的角色, 或者超级用户的角色。
create role repl nosuperuser replication login connection limit 32 encrypted password ‘111111’;
4)配置pg_hba.conf,添加以下内容
host replication repl 0.0.0.0/0 md5
pg_ctl reload
5)执行备份(因为使用流复制协议, 所以支持异地备份)
mkdir
6)备份完毕,查看备份文件
[postgres@hgdb01 ~]cd/dbbak/2018−01−17[postgres@hgdb012018−01−17] ll
total 46M
-rw-rw-r–. 1 postgres postgres 1.5K Jan 17 01:13 16400.tar
-rw-rw-r–. 1 postgres postgres 46M Jan 17 01:13 base.tar
[postgres@hgdb01 2018-01-17]$ tar -tvf base.tar |less #查看备份包内容
附件 pg_basebackup 参数说明
可以通过pg_basebackup –help 详细查看
-h 指定连接的数据库的主机名或IP地址,这里就是主库的ip。
-U 指定连接的用户名,此处是我们刚才创建的专门负责流复制的repl用户。
-F 指定了输出的格式,支持p(原样输出)或者t(tar格式输出)。
-x 表示备份开始后,启动另一个流复制连接从主库接收WAL日志。
-P 表示允许在备份过程中实时的打印备份的进度。
-R 表示会在备份结束后自动生成recovery.conf文件,这样也就避免了手动创建。
-D 指定把备份写到哪个目录,这里尤其要注意一点就是做基础备份之前从库的数据目录(/usr/local/postgresql/data)目录需要手动清空。
-l 表示指定一个备份的标识
by 波罗
pg_basebackup 备份过程:
1)开启归档
创建归档目录
mkdir -p /ssd/pg957/arch
chown -R postgres:postgres /ssd/pg957/arch
配置归档命令
vi $PGDATA/postgresql.conf
archive_mode = on
archive_command = ‘DATE=
date +%Y%m%d; DIR=”/ssd/pg957/arch/DATE";(test−dDIR || mkdir -p DIR) && cp %pDIR/%f’
wal_level = hot_standby #配置日志模式
注解:
%p 表示xlog文件名$PGDATA的相对路径, 如pg_xlog/00000001000000190000007D
%f 表示xlog文件名, 如00000001000000190000007D
2)重启数据库使参数生效,验证归档。
checkpoint;
select pg_switch_xlog();
[root@hgdb01 20180117]# pwd
/ssd/pg957/arch/20180117
[root@hgdb01 20180117]# ls
000000020000000000000003 000000020000000000000004
3)创建replication权限的角色, 或者超级用户的角色。
create role repl nosuperuser replication login connection limit 32 encrypted password ‘111111’;
4)配置pg_hba.conf,添加以下内容
host replication repl 0.0.0.0/0 md5
pg_ctl reload
5)执行备份(因为使用流复制协议, 所以支持异地备份)
mkdir
date +%F; pg_basebackup -F t -x -D ./
date +%F-h 192.168.137.222 -p 1921 -U repl
6)备份完毕,查看备份文件
[postgres@hgdb01 ~]cd/dbbak/2018−01−17[postgres@hgdb012018−01−17] ll
total 46M
-rw-rw-r–. 1 postgres postgres 1.5K Jan 17 01:13 16400.tar
-rw-rw-r–. 1 postgres postgres 46M Jan 17 01:13 base.tar
[postgres@hgdb01 2018-01-17]$ tar -tvf base.tar |less #查看备份包内容
附件 pg_basebackup 参数说明
可以通过pg_basebackup –help 详细查看
-h 指定连接的数据库的主机名或IP地址,这里就是主库的ip。
-U 指定连接的用户名,此处是我们刚才创建的专门负责流复制的repl用户。
-F 指定了输出的格式,支持p(原样输出)或者t(tar格式输出)。
-x 表示备份开始后,启动另一个流复制连接从主库接收WAL日志。
-P 表示允许在备份过程中实时的打印备份的进度。
-R 表示会在备份结束后自动生成recovery.conf文件,这样也就避免了手动创建。
-D 指定把备份写到哪个目录,这里尤其要注意一点就是做基础备份之前从库的数据目录(/usr/local/postgresql/data)目录需要手动清空。
-l 表示指定一个备份的标识
by 波罗
相关文章推荐
- Postgres:pg_basebackup物理备份与还原
- PostgreSQL备份之pg_basebackup
- PostgreSQL中流复制pg_basebackup做了什么
- Postgresql备份与还原命令pg_dump
- PostgreSQL DBA快速入门(三) - 逻辑和物理备份
- PostgresXC:从源码编译、安装、配置数据库集群以及用pg_basebackup配置Datanode的热备份
- postgresql 物理备份 tar
- postgresql pg_dump备份测试
- pg_basebackup 不备份哪些文件
- postgresql 数据库的备份和恢复 (pg_dump 和 pg_restore)
- PostgreSQL使用pg_basebackup搭建主备流复制环境
- 使用pg_dumpall备份postgresql
- PostgreSQL之 pg_basebackup
- Postgresql备份之pg_dump
- pg_restore - 从一个由 pg_dump 创建的备份文件中恢复 PostgreSQL 数据库。
- PostgreSQL物理备份与恢复
- PostgreSQL之pgdump备份恢复
- PostgreSQL使用pg_basebackup搭建主备流复制环境
- postgresql备份恢复之pg_dump大数据处理
- PostgreSQL pg_dump&psql 数据的备份与恢复