Postgresql 9.6.12在windows上的主从部署配置搭建。 postgresql 数据库主从复制。postgresql 基于windows的主从
公司最近要部署postgresql(以下简称pg)数据主从复制,之前没怎么接触过pg数据库主从。 对这个概念也不是很熟悉。
网上找教程,结果搜索到的很多都是Linux,以及配合windows系统下的部署 。 没有找到主从都是windows系统的教程。很多教程折腾了好久报错。各种报错。
自己折腾了这么久,也算是部署搭建成功了。 所以写下这个教程。 供其他小伙伴们参考。不足之处多多批评指出。欢迎交流探讨。
1. 安装环境:
主机:xxx.119 windows Server2012
从机 xxx. 202 windows 10
pg版本: 9.6.12
首先分别在主从机子上都安装好pg软件,这里不多做说明。 网上教程很多。
安装完之后,可以不装其他多余的插件。
我在此次默认一个安装密码root ,也就是 默认用户名postgresql 的密码。
1.1 主机配置
软件安装完毕之后,
进入cmd中, 进入到pg安装目录的bin目录, 我这里安装目录是 D:\server\postgresql9.6
检查安装版本:
补充一点,如果不想每次进入到bin目录太麻烦的话,可以配置path, 配置bin到path,然后直接cmd中就能用psql命令了。
这样在任何目录都能直接使用psql命令
1.2 再然后用默认的用户登录数据库看看。。 前面说到的默认密码是root,
在cmd中, psql -h 192.168.0.119 -U postgres
然后输入密码root
如图
这样就表示登录成功了。 注意,输入密码的时候是没有显示的。
可以用相关的指令查看表或者数据库。
这里简单说几个, 其他自行百度
\l 查看所有数据库
\dt 查看当前所有表
然后可以退出了。 在这个页面可以 直接 Ctrl+C 退出命令, 或者 \q退出。
接下来配置主库的postgresql.conf文件 ,文件在安装目录的data文件夹中
配置以下几个参数:
- listen_address = ‘*’(默认localhost)
- wal_level = hot_standby(默认是minimal)
- max_wal_senders=2(默认是0)
- wal_keep_segments=64(默认是0)
配置完成之后,
再登录主机的postgresql 用户, 创建一个超级用户。
create user repl superuser password 'root';
用户创建完成之后,打开pg_hba.conf 文件进行配置
到这里,主库就完成了。
然后开始从库的配置
首先,清空从机上的data文件夹中的内容,这里建议改名,比如说改成data-01,
在从机上刚刚安装完成pg之后,可能data不能改名,因为有程序在使用,进入到服务, 把pg的服务停止
windows键+R 输入 services.msc
找到 pg的服务,
将其停止,就能给data改名了, 或者直接删除data中的内容,改名之后再新建一个data文件夹。。
然后开始从主机这了备份主机的数据库。
在cmd中 运行用下指令(注意data后面还有一个\)
pg_basebackup -h 192.168.0.1 -U repl -F p -x -P -R -D D:\server\postgresql9.6\data\
在前面都操作正确的情况下,然后会提示你输入密码,这里暂时没有保存截图。
输入密码root之后,就开始进行复制了, 等复制完成100%之后,我们发现data文件夹下多出了很多文件和文件夹, 这个是从主机上复制过来的。
这个时候其实差不多已经完成了。
然后你再从机上登录从机的pg数据库。 用户postgresql 登录。 。 。 登录从机本机数据库 psql -h localhost -U postgres
这个时候你会发现你登录不上去,因为刚刚已经关闭了服务了,
然后你会到服务中再启动服务,
但是,通常情况下,这个服务启动不了。
这个时候,接下里就要在从机的postgresql.conf 文件中做一些修改了。
将hot_standby
改为启用状态,即hot_standby=on
。
更改完成之后,再去启动pg的服务。
可能这个时候还是启动不了?
怎么办呢?
进入任务管理器。 找到后台任务,把pg的进行全部杀死
完成之后再去启动服务。 应该就能启动了 。。。
现在开始测试下。。
登录主机:
psql -h localhost -U repl -d postgres
然后在主机上我们创建一张表 test****
create table test****(id int, name text)
然后再从机上登录从机的数据库
psql -h localhost -U postgres -d postgres
可以看到从机的数据库中已经有了我们在主机中创建的表test****。
说明是能自动备份的。
另外有几个问题:
主机中创建表之后没有成功的提示。 不知道是哪里的问题。 但是能正常复制到从机。
最后,文章参考来源:https://blog.****.net/wlwlwlwl015/article/details/53287855
感谢大神。。。