Postgresql 主从
文章目录
主库配置
- 修改 postgresql.conf
1 2 3 4 5
listen_address = '*' wal_level = replica wax_wal_senders = 10 wal_keep_segments = 64 hot_standby = on
- 启动主库 postgresql-10 服务
1
systemctl start postgresql-10
- 创建同步账户
1 2
create user replica superuser password '123456'; -- 这里可以只赋予 replication 权限,后面从库复制初始数据库时使用其他有权限帐号
- 修改 pg_hba.conf
1
host replication replica samenet md5
从库配置
- 停止从库 postgresql-10 服务,清空数据库目录
1 2
systemctl stop postgresql-10 rm -rf /var/lib/pgsql/10/data/*
- 从主库复制初始数据库
1 2 3 4 5 6 7 8
pg_basebackup \ -h <主库ip> \ -U replica \ -F p \ -X stream \ -P -R \ -D /var/lib/pgsql/10/data/ \ -l backup_20191104
- -h 指定连接的数据库的主机名或IP地址
- -U 指定连接的用户名
- -F 指定了输出的格式,支持p(原样输出)或者t(tar格式输出)
- -X 表示备份开始后,启动另一个流复制连接从主库接收WAL日志
- -P 表示允许在备份过程中实时的打印备份的进度
- -R 表示会在备份结束后自动生成recovery.conf文件
- -D 指定备份写入的数据目录,需要与数据库配置的数据库目录一致,初次备份之前从库的数据目录需要手动清空
- -l 表示指定一个备份的标识
检查状态
- 检查从库进程
1 2
ps -ef|grep postgres # 可以看到 wal sender 和 receiver process 两个进程
- 从库为只读模式,无法进行 增/删/改 操作
- 主库查看 replication 客户端
1
select client_addr,sync_state from pg_stat_replication;
文章作者 Colben
上次更新 2019-11-04