4. 从库配置
首先要说明的是从库也需要安装 PostgreSQL 数据库服务,需要 pg_ basebackup 命令工具才能在从库上生成的master 主库的基础备份。但是还要强调一点:从库上初始化数据库时指定的数据目录“/data/psql110/data”需要清 空,才可以在从库上使用 pg_basebackup 命令工具来生成 master 主库的基础备份数据。
从此处开始配置从库(10.0.0.110),首先要通过 pg_basebackup 命令行工具在从库上生成基础备份:

简单做一下参数说明(可以通过 pg_basebackup --help 进行查看):
● -h:指定连接的数据库的主机名或ip地址,这里就是主库的ip。
● -U:指定连接的用户名,此处是刚才创建的专门负责流复制的repl
用户。
● -F:指定了输出的格式,支持p(原样输出)或者t(tar格式输出)。
● -x:表示备份开始后,启动另一个流复制连接从主库接收WAL日志。
● -P:表示允许在备份过程中实时地打印备份的进度。
● -R:表示会在备份结束后自动生成recovery.conf文件,这样也就避免了手动创建。
● -D:把备份写到指定目录,这里尤其要注意一点就是做基础备份之前从库的数据目录(/data/psql110/data/)需要手动清空。
● -l:表示指定一个备份的标识。

运行命令后看到如下进度提示就说明生成基础备份成功:

如上由于在 pg_hba.conf 中指定的 MD5 认证方式,所以需要输入密码。最后还需要修改一下从库数据目录下的 postgresql.conf 文件,将 hot_standby 改为启用状态,即 hot_standby=on。到此为止就算配置结束了,现在可以启动从库:

从库上查看流复制进程:


主库上查看流复制进程:


此时从库上可以看到流复制的进程,同样主库也能看到该进程。表明主从流复制配置成功。
同步测试演示:创建库和创建表做测试,在 master 服务器(10.0.0.100) 中创建 testdb02 库,并且建一张表,添加几条数据。
master 上操作:

检查:
[antdb@localhost pg_xlog]$ psql -p10280 -c '\list '|grep testdb02


从库上检查:


可以看到完美同步,那么从库是否能删除呢?下面测试一下。从库上测试删除数据库 testdb02:

Standby 的数据无法删除,正如之前说的,Standby 只提供只读服务,而只有 master 才能进行读写操作,所以 master 才有权限删除数据。master 删除的同时 Standby 中的数据也将同步删除,查看复制状态,主库中执行操作,具体如图 6-6 所示。





