首页 / 数据库 / MySQL / 使用pg_basebackup搭建PostgreSQL流复制环境
接触了PostgreSQL的高可用,在这里先进行流复制实验。环境: OS:[ha@node0 ~]$ uname -a Linux node0 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
内存:1G CPU:1核 数据库:postgres=# select version(); version
-------------------------------------------------------------------------------- ------------------------------- PostgreSQL 9.4.5 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120 313 (Red Hat 4.4.7-16), 64-bit (1 row)
“ 在搭建流复制环境时,并不必须设置 archive_mode 参数为 on ,很多资料在介绍搭建流复制环境时设置这个参数为 on ,可能是出于开启 WAL 归档更安全的原因,因为在主库宕机并且较长时间不能恢复时,从库依然可以读取归档目录的 WAL,从而保证不丢数据; 另一方面,如果主库设置了较大的 wal_keep_segments ,也可以不用开启archive_mode,因为主库保留了足够的 WAL,从而大大降低了因从库所需要的 WAL 被主库覆盖而需要从归档去取 WAL 的情况。所以从这方面说,archive_mode 参数的设置与搭建流复制并没有直接关系。 提示: 对于比较繁忙的库,在搭建流复制从库时,建议主库设置较大的 wal_keep_segments 参数。 ”b.pg_hba.confhost all all 192.168.238.0/24 md5 host replication rep 192.168.238.0/24 trust
这里说明的是,网上有其他对replication设置为md5,并建立.pgpass文件,这种方法也是可行的。 c.新建用户repcreate user rep replication encrypted password "rep";2.使用pg_basebackup进行从库备份[ha@localhost pgdb]$ pg_basebackup -D $PGDATA -F p -X stream -v -P -h 192.168.238.130 -U rep transaction log start point: 0/2000028 on timeline 1 pg_basebackup: starting background WAL receiver 20945/20945 kB (100%), 1/1 tablespace transaction log end point: 0/20000F0 pg_basebackup: waiting for background process to finish streaming ... pg_basebackup: base backup completed [ha@localhost pgdb]$ ll total 20 drwxrwxr-x. 2 ha ha 4096 Dec 26 00:54 bin drwx------. 18 ha ha 4096 Dec 26 12:02 data drwxrwxr-x. 4 ha ha 4096 Dec 26 00:54 include drwxrwxr-x. 4 ha ha 4096 Dec 26 00:54 lib drwxrwxr-x. 4 ha ha 4096 Dec 26 00:54 share [ha@localhost pgdb]$ cd data/ [ha@localhost data]$ ls backup_label pg_hba.conf pg_replslot pg_subtrans postgresql.auto.conf base pg_ident.conf pg_serial pg_tblspc postgresql.conf global pg_logical pg_snapshots pg_twophase pg_clog pg_multixact pg_stat PG_VERSION pg_dynshmem pg_notify pg_stat_tmp pg_xlog
这里需要对目录进行一下说明:data目录可以通过pg_basebackup自动创建,但是其他表空间,需要手动创建并赋权,这里需要注意的是,权限为700。3.从库配置 a.postgresql.confhot_standby = on