精华内容
下载资源
问答
  • 昨天写了一篇window下基于两台服务器配置postgresql主从数据库的说明(基于windows平台的postgresql主从数据库配置),但考虑到不是所有人都有两台服务器可以使用,因此今天会介绍下在同一台windows服务器下配置...

    昨天写了一篇window下基于两台服务器配置postgresql主从数据库的说明(基于windows平台的postgresql主从数据库配置),但考虑到不是所有人都有两台服务器可以使用,因此今天会介绍下在同一台windows服务器下配置postgresql主从数据库的步骤。

      重点之处:

     pg_ctl start -D "D:\Program Files\PostgreSQL\10\data" -o "-p 5432"
    pg_ctl start -D "D:\Program Files\PostgreSQL\10\data2" -o "-p 5433"

    可以注意上边两行代码,他们的区别是指定了不同的data文件夹以及端口,这便是基于同一服务器的核心。

     

    以下配置说明开始:

    一,前期准备

    首先我的服务器为:

    192.168.218.31

    端口为:

    5432(主),5433(从)

    注意:

    主数据库操作的文件均是data文件夹下的;

    从数据库操作的文件均是data2文件夹下的,data2的创建我后边会讲到,这个不用急。

     二,主数据库操作 (以下操作与上一篇文章的配置有共同之处,相同处我就直接复制了)

    1. 配置pg_hba.conf文件

     文件具体位置取决于安装目录,我的是在D:\Program Files\PostgreSQL\10\data下。

     在文件末尾增加一下代码,目的是增加了名为replica的用户,以进行数据库同步的操作。填写的ip为从数据库的地址(本机地址)。

    host    replication     replica         192.168.218.31/32      md5

    2. 创建replica相关权限

    可以在pgadmin中直接运行sql语句:

    CREATE ROLE replica login replication encrypted password 'replica'

    3.配置postgresql.conf文件

    进行以下配置, 每个字段的含义在文件里有说明,便不再讨论了:

    wal_level = hot_standby 
    max_wal_senders = 32 
    wal_keep_segments = 256 
    wal_sender_timeout = 60s
    max_connections = 100

    4.重启一下主数据库服务

    由于我的安装目录下有空格,因此对路径加了双引号。

    pg_ctl restart -D "D:\Program Files\PostgreSQL\10\data\"

    三,从数据库操作

    1.创建文件夹data2,该文件夹需要给予相关权限(我只是开发用,所以给了全部的权限),改权限的方式不懂得就百度吧,很简单。

    2.将主数据库的data文件夹内容通过pg_basebackup备份过来:

    pg_basebackup -F p --progress -D "D:\Program Files\PostgreSQL\10\data2" -h 127.0.0.1 -p 5432 -U replica --password

    记得密码也是replica啊!(我的命令直接copy就好,输入后提示输入密码时再输replica)

    3.配置recovery.conf

    复制PostgreSQL\10\share 下的recovery.conf.sample到data2下,重命名为recovery.conf。

    修改以下配置:

    standby_mode = on 
    primary_conninfo = 'host=192.168.218.31 port=5432 user=replica password=replica' 
    recovery_target_timeline = 'latest'

    4.配置postgresql.conf文件

    max_connections = 1000 
    hot_standby = on
    max_standby_streaming_delay = 30s
    wal_receiver_status_interval = 1s 
    hot_standby_feedback = on 

    5.启动从库

     pg_ctl start -D "D:\Program Files\PostgreSQL\10\data2" -o "-p 5433"

    要记得主用的时默认端口5432,因此从使用了5433;主库pg_ctl相关命令使用的是data,从库使用刚配置完得data2。

    6.确认是否成功

    在主数据库的pgadmin中可以执行:

    select client_addr,sync_state from pg_stat_replication;

    我的会有如下显示:

    可以看到两个不同的地址:

    第一个便是刚才创建的从库的信息, 第二个是昨天创建的另一台服务器的从库的信息(具体可参考我另一篇文章,也可以不用管,你自己搞得话应该就只显示一个)。

    也就是表明我现在有了两个从库了,如此一来同一台服务器下postgresql主从数据库配置便完成了。

    参考:

    https://stackoverflow.com/questions/37861262/create-multiple-postgres-instances-on-same-machine

    展开全文
  • 由于目前的需求,需要做数据库的读写分离,为了方便本地代码的调试,便尝试了一下配置本地的postgre主从数据库。鉴于网上的教程都是基于Linux平台的,我便记录下基于windows的配置。 针对postgresql一些具体的概念...

    由于目前的需求,需要做数据库的读写分离,为了方便本地代码的调试,便尝试了一下配置本地的postgre主从数据库。鉴于网上的教程都是基于Linux平台的,我便记录下基于windows的配置。

    针对postgresql一些具体的概念,此处不在赘述,可以参考官方文档postgresql高可用、负载均衡和复制

    一,前期准备

    我手头上有两台服务器,安装了相同版本(10)基于windows平台的postgresql数据库,将分别作为主从数据库服务器:

    192.168.218.31 ->主

    192.168.218.106  ->从

    二,主数据库操作

    以下操作在主数据库的服务器进行

    1. 配置pg_hba.conf文件

     文件具体位置取决于安装目录,我的是在D:\Program Files\PostgreSQL\10\data下。

    在文件末尾增加一下代码,目的是增加了名为replica的用户,以进行数据库同步的操作。填写的ip为从数据库的地址。

    host    replication     replica         192.168.218.106/32      md5

    2. 创建replica相关权限

    可以在pgadmin中直接运行sql语句:

    CREATE ROLE replica login replication encrypted password 'replica'

    3.配置postgresql.conf文件

    进行以下配置, 每个字段的含义在文件里有说明,便不再讨论了:

    wal_level = hot_standby 
    max_wal_senders = 32 
    wal_keep_segments = 256 
    wal_sender_timeout = 60s
    max_connections = 100

    4.重启一下主数据库服务

    由于我的安装目录下有空格,因此对路径加了双引号。

    pg_ctl restart -D "D:\Program Files\PostgreSQL\10\data\"

    三,从数据库操作

    以下操作在从数据库的服务器进行

    1.配置data

    首先将主数据库的data文件夹内容通过pg_basebackup备份过来:

     pg_basebackup -F p --progress -D "D:\Program Files\PostgreSQL\10\data2" -h 192.168.218.31 -p 5432 -U replica --password

    完成后发现PostgreSQL\10\的目录下多了data2出来,此时删除旧的data文件夹,然后重命名data2文件夹为data。

    假如删除失败,先运行命令:

    pg_ctl stop -D "D:\Program Files\PostgreSQL\10\data\"

    用来停止服务,然后就能成功删除。

    2.配置recovery.conf

    复制PostgreSQL\10\share 下的recovery.conf.sample到data下,重命名为recovery.conf。

    修改以下配置:

    standby_mode = on 
    primary_conninfo = 'host=192.168.218.31 port=5432 user=replica password=replica' 
    recovery_target_timeline = 'latest'

    3.配置postgresql.conf

    修改一下配置:

    max_connections = 1000 
    hot_standby = on
    max_standby_streaming_delay = 30s
    wal_receiver_status_interval = 1s 
    hot_standby_feedback = on 

    4.启动从库

    使用pg_ctl start -D "D:\Program Files\PostgreSQL\10\data",假如出现Permission denied提示时,表明权限不足,需要修改文件夹权限,具体方式可百度。

    四,确认是否成功

    在主数据库的pgadmin中可以执行:

    select client_addr,sync_state from pg_stat_replication;

    假如出现以下查询结果,便说明已经开始同步

     

    至此,基于windows的postgresql主从配置便完成了。

    展开全文
  • 一。 内网环境测试 (192.168.8.20 192.168.8.21 2台机器安装路径均和外网保持一致) Root .../mapbar/app/pgsql/bin/postgres -D /mapbar/app/.../mapbar/db/program/postgresql-9.2.4/bin/postgres -D /ma...
    一。   内网环境测试  (192.168.8.20    192.168.8.21   2台机器安装路径均和外网保持一致)
    
    Root    
    
    启动命令:
    /mapbar/app/pgsql/bin/postgres -D /mapbar/app/pgsql/data
    /mapbar/db/program/postgresql-9.2.4/bin/postgres -D /mapbar/db/data
    
    
    
    
    一。 修改主机的配置文件,然后重启数据库:
    
    1. 添加复制的用户:
    
    su  postgres
    /mapbar/app/pgsql/bin/psql postgres  
    Create user repl superuser password '111qqq,,,';
    
    2. 修改pg_hba.conf 文件:
    
    vi /mapbar/app/pgsql/data/pg_hba.conf  (这里8.20, 8.21 最好都加上 要不以后备机切主机也需要增加权限ip)
    host    replication     repl         192.168.8.21/0      password
    
    3. 修改postgresql.conf 文件:
    
    wal_level = hot_standby	
    max_wal_senders = 5
    listen_addresses = '*'
    
    (  这段不用了  写的不对
    archive_mode =on  --开启归档
    archive_command ='test ! -f /mapbar/app/pgsql/archive_log/%f && cp %p /mapbar/app/pgsql/archive_log/%f' 
    )
    
    
    hot_standby = on
    
    4.  重启数据库
    
    
    
    二。  修改备机的配置文件,然后关闭备机数据库:
    
    1. 修改 recovery.conf: (此文件是从: /mapbar/db/program/postgresql-9.2.4/share   下面的recovery.conf.sample  文件拷贝到data下 改名而得)
    
    standby_mode = on
    primary_conninfo = 'host=192.168.8.20 port=5432 user=repl password=111qqq,,,'
    
    
    三。     主机执行命令:(或者到bin下面执行 ./psql)
    
    Su postgres:
    psql -c "select pg_start_backup('initial_backup');"
    Su  root:
    rsync -cva -P --inplace --exclude=*pg_xlog* /mapbar/app/pgsql/data/ 192.168.8.21:/mapbar/db/data/
    Su postgres:
    psql -c "select pg_stop_backup();"
    
    四。   启动备机的数据库:
    
    五。  测试新加入一个user用户:
    
     看看备机数据库有没有这个用户
    
    
    =========================   备机切主机    ===================================
    
    六。 如果想从备机切换到主机:
    
    备机:
    1. recovery.conf 增加:
    
    trigger_file = '/mapbar/sh/trigger.kenyon'
    
    2. 重启数据库
    
    3. 停掉主机的数据库 
    
    4. 备机执行:
    
    touch /mapbar/sh/trigger.kenyon    (创建了一个文件,数据库可以读到就切换为主机)
    
    这时候:recovery.conf 文件已经变成了  recovery.done
    
    5. 切换tomcat 连接 8.21的数据库,启动。
    添加一个账号: 21AAA 的数据,这时8.20 是没有这个数据的
    
    主机:
    6. 拷贝备机的recovery.done  到主机上:recovery.conf:
    修改里面的内容:
    primary_conninfo = 'host=192.168.8.21 port=5432 user=repl password=111qqq,,,'
    
    (   ================   这一步应该在开始配置的时候就加上, 避免备机数据库的重启
    修改备机的 pg_hba.conf 的配置,允许主机访问:
    host    replication     repl         192.168.8.20/32      password
    
    重启备机的数据库
    
    )
    
    
    7. 启动主机:
    报错:
    FATAL:  timeline 1 of the primary does not match recovery target timeline 2
    
    需要重新从备机 copy data 到主机:
         cd /mapbar/db/program/postgresql-9.2.4/bin/
    
    Su postgres:
    ./psql -c "select pg_start_backup('initial_backup');"
    
    Su  root:
    rsync -cva -P --inplace  /mapbar/db/data/ 192.168.8.20:/mapbar/app/pgsql/data/
    
    Su postgres:
    ./psql -c "select pg_stop_backup();"
    
    8. 启动主机,这时主机已变成了备用机
    
    使用原备机的数据库创建账号,可以看见原主机也有了账号
    
    
    
    
    
    相关资料:
    http://my.oschina.net/Kenyon/blog/98217
    
    http://www.tuicool.com/articles/rmEnUnN
    
    http://blog.sina.com.cn/s/blog_6cd44dbc0101cbvt.html
    
    http://www.pgsqldb.org:8079/pgdoc/tutorial-zh_cn.html
    
    
    http://francs3.blog.163.com/blog/static/4057672720149285445881/

     

    展开全文
  • postgresql主从复制配置

    千次阅读 2019-07-20 18:51:32
    postgresql主从复制是一种高可用解决方案,可以实现读写分离。postgresql主从复制是基于xlog来实现的,主库开启日志功能,从库根据主库xlog来完成数据的同步。 主从复需要注意的地方: 启动从库之前,不能执行初始...

    postgresql主从复制是一种高可用解决方案,可以实现读写分离。postgresql主从复制是基于xlog来实现的,主库开启日志功能,从库根据主库xlog来完成数据的同步。

    主从复需要注意的地方:

    • 启动从库之前,不能执行初始化。
    • 启动从库之前,需要通过base_backup从主服务器上同步配置与数据。
    • 启动从库之前,需要对同步之后的配置文件进行修改。
    • 启动从库之前,需要设置一个恢复的配置文件。
    • 从库只能读,不能写。

    下面介绍主从复制的实现,这里以两台虚拟机为例,主节点IP是192.168.56.201,从节点IP是192.168.56.202,这里两台机器都是通过源码编译安装的方式安装的postgresql,版本是11.4。编译安装指定的前缀是/usr/local,因此安装完成,可执行程序会在/usr/local/bin目录下。

    首先需要在主库上初始化数据库,并启动数据库服务。  

    启动的时候,不能以root用户来启动。

    编译安装不会创建postgres用户,因此我们需要先创建postgres用户和用户组。 我们会将postgresql数据存储路径设置在/home/postgres/data下。

    groupadd postgres
    useradd -g postgres postgres

    切换用户,然后初始化数据库。

    初始化成功之后,会有个提示,如何启动数据库,按照提示命令,我们启动数据库。

    /usr/local/bin/pg_ctl -D /home/postgres/data -l logfile start

    这里启动数据库之后,我们登陆数据库,做两件事情:准备一些数据,将来从节点同步之后,用来做数据验证。创建一个admin/123456的用户,用来做主从复制。

    这样在主库上的操作就完成了,接下来就是修改配置文件,然后重启主库。

    修改pg_hba.conf,增加刚才创建的用户到文件末尾,method指定为md5,表示密码开启md5验证。

    修改postgresql.conf,开启注释,并修改以下配置:

    listen_addresses="*"
    wal_level=hot_standby
    max_wal_senders=2
    wal_keep_segments=64
    max_connections=100 

    重启主库,至此,完成主库的所有准备工作:

    /\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

    下面就是配置和启动从库了,前面注意事项里面提到,不能初始化从库,因为我们需要首先从主库备份数据,备份之后,从库的/home/postgres/data里面的数据和配置信息就和主库一致了。

    首先从库也需要postgres/postgres用户组和用户,先创建:

    groupadd postgres
    useradd -g postgres postgres
     

    之后,切换到postgres用户,进行数据备份和启动操作。

    首先是利用base_backup命令进行备份:

    /usr/local/bin/pg_basebackup -h 192.168.56.201 -p 5432 -U admin -F p -P -D /home/postgres/data 

    因为是从库访问,而且是用的admin用户,因此需要输入密码。这里显示备份成功。

    因为配置postgresql.conf是从主库同步过来的,这里需要修改一些配置,改为从库的配置:

    #wal_level=hot_standby                      #从库不需要这个配置
    #max_wal_senders=2                         #同上
    #wal_keep_segments=64                   #同上
    hot_standby=on                                  #开启hot_standby模式
    max_standby_streaming_delay=30s  #可选,流复制最大延迟
    wal_receiver_status_interval=10s       #可选,向主库报告状态的最大间隔时间
    hot_standby_feedback=on                  #可选,查询冲突时向主库反馈
    max_connections=1000                      #最大连接数一般大于主库就行 

    还需要准备一个恢复配置文件,这个文件在安装postgresql时,会生成到/usr/local/share/postgresql目录下,名字是recovery.conf.sample。我们复制并修改名称为recovery.conf并放置在/home/postgres/data目录下,修改配置:

    recovery_target_timeline = 'latest'
    standby_mode = on
    primary_conninfo = 'host=192.168.56.201 port=5432 user=admin password=123456' 

    这三个配置很直观,recovery_target_timeline='latest'表示恢复最新的数据,standby_mode表示从节点的角色是备选,primay_conninfo表示主库连接信息。

    至此,从库的配置工作准备完成,接着就可以启动数据库了。

    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

    主从复制到此就配置完成了,接下来就是验证阶段:

    1、从主从机器运行的进程验证:

    主节点服务器会增加一个walsender进程

    从节点服务器增加一个walreceiver进程 

     2、从数据上验证:

    主库在首次启动的时候,没有做主从配置之前,就插入了4条记录在test数据库xx_user表中。如今再次插入一条数据,也显示成功,查询会显示5条记录。 

    从库在首次启动之后,数据是从主库备份过来的,第一次进入查找就有4条记录。等主库插入一条记录之后,再次查看是5条记录,从库数据均同步成功,表示主从复制配置正确。

    最后我们在从库中做插入操作,显示操作失败,因为从库是只读的,不能做增删改的写操作,只能查询。

    3、这里可以从/usr/local/bin/pg_controldata /home/postgres/data命令的结果状态中可以验证,主从关系,主库的集群状态是in production,从库是in archive recovery,当我们的主库崩溃,我们可以切换从库为主库。这时候主库状态是shut down,而从库是in production。这里我们模拟停掉主库。

    pg_ctl stop -m fast

    马上在从库上切换从库为主库:

    pg_ctl promote

    这里显示了从库的状态由in archive recovery 变为in production的截图:

    正常从库的状态:

    主库shutdown,从库执行切换主库操作之后: 

    展开全文
  • PostgreSQL主从热备配置

    2014-04-22 11:55:56
    PostgreSQL主从热备配置主服务器:main.example.com从服务器:spare.example.com1、PostgreSQL安装2、主数据库服务器设置添加从服务器信息 vi /var/lib/pgsql/9.3/data/pg_hba.conf # IPv4 local connections:host ...
  • postgresql主从同步配置

    2018-02-12 18:33:00
    前言 不久前,公司的一台物理机器硬件坏了,导致运行在其上的虚拟机都挂了。...由于之前虚拟机使用的的是postgresql,因此本博是对postgresql主从备份的配置。写本博的主要目的有以下几点: 1.记录下来配...
  • Postgresql主从热备配置

    2019-09-20 10:36:47
    软件环境 CentOS 5.1 Postgresql 9.4.10 一、安装postgreSQL 1.YUM自动获取版本 SHELL>wget --no-check-certificate https://yum.postgresql.org/9.4/redh...
  • 主从服务器IP: 192.168.11.131 postgreSQL master 192.168.11.132 postgreSQL slave   服务器系统版本: # cat /etc/redhat-release  Red Hat Enterprise Linux Server release 7.2 (Maipo)   PG版本: ...
  • 安装postgresql 11,详见 https://blog.csdn.net/qq_35550345/article/details/114074835 配置成可以远程登录 需要手动故障切换 https://www.cnblogs.com/miclis/p/10480979.html 172.16.212.61为master,172.16.212...
  • 本文postgresql主从配置基于postgresql12安装全过程 一、准备 两台服务器:192.168.116.10、192.168.116.11 二、配置 主库 创建复制流用户 su - postgres psql CREATE ROLE replica login replication encrypted ...
  • docker run --name pgsmaster -p 5500:5432 -e POSTGRES_PASSWORD=pgsmaster -v $(pwd)/pgsmaster:/var/lib/postgresql/data -d postgres docker run --name pgsslave -p 5501:5432 -e POSTGRES_PASSWORD=...
  • PostgreSQL 主从配置

    2020-03-04 17:25:47
    - postgresql.conf主库信息配置 - pg_hba.conf关闭防火墙主库创建复制用户备库操作清空所有数据目录从主节点获取数据编辑standby.signal文件配置postgresql.conf文件重启备库验证主从方法-1方法-2方法-3参数解释 ...
  • Postgresql 12 配置流复制 生产环境服务器Ubuntu18下 数据库版本: Postgresql 12 主服务 : 8.142.12.83 从服务器:121.4.132.236 在主服务器和备用服务器上安装PostgreSQL 12 第1步: sudo sh -c ‘echo “deb ...
  • postgresql主从配置

    2018-05-19 11:03:00
    master:10.0.1.114 slaver:10.0.1.116 一、yum安装... 二、主从配置 1、主数据配置(10.0.1.114) 1.1 初始化 /usr/pgsql-9.6/bin/postgresql96-setup initdb ...
  • Postgresql主从配置

    2020-03-15 14:08:36
    PostgreSql在9.0之后引入了主从的流复制机制,所谓流复制,就是从服务器通过tcp流从主服务器中同步相应的数据。这样当主服务器数据丢失时从服务器中仍有备份。 与基于文件日志传送相比,流复制允许保持从服务器更新...
  • postgresql 主从配置

    2019-04-12 11:17:00
     参数配置:  wal_level  ver:10  minimal:是默认的值,它仅写入崩溃或者突发关机时所需要的信息(不建议使用)  replica:= 9.6版本以前的archive和hot_standby --该级别支持wal归档和复制  ...
  • 转载自:https://blog.csdn.net/weixin_41048363/article/details/80340651 master:10.0.1.114 slaver:10.0.1.116 一、yum安装... 二、主从配置 1、主数据配置(10.0.1....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,695
精华内容 1,878
关键字:

postgresql主从数据库配置