PostgreSql 安装及主从

postgresql主从配置

master:      10.10.1.61
slaver:        10.10.1.62

yum源看官方文档https://www.postgresql.org/download/linux/redhat/
安装官方yum源(安装postgresql 10版yum源)

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

一、yum安装

yum install -y postgresql postgresql-server
  1. 安装完成后不能直接启动数据库,需要先手动初始化数据库:

     service postgresql initdb
    
  2. 再启动数据库:

    systemctl start postgresql
    
  3. 切换到操作系统下的“postgres”用户,登陆数据库:

    su - postgres
    -bash-4.2$psql
    

(安装的PostgreSQL的数据目录,默认在/var/lib/pgsql/data)
二、主从配置
1、主数据配置(10.10.1.61)
1.1 初始化

service postgresql initdb

1.2 启动postgresql

 systemctl start postgresql

1.3 切换到postgres用户(安装好生成默认的用户)

su - postgres
-bash-4.2$psql

1.4 创建账号并授权

postgres=# create role 账户名 login replication encrypted password '密码';  

1.5 修改/var/lib/pgsql/data/pg_hba.conf配置文件.

host replication repl 10.10.1.0/24 md5
host all repl 10.10.1.0/24 trust 

1.6 修改postgresql.conf

-bash-4.2$ vim postgresql.conf 
listen_addresses = '10.10.1.61'    
wal_level = hot_standby  #热备模式 
max_wal_senders= 6 #可以设置最多几个流复制链接,差不多有几个从,就设置多少 
wal_keep_segments = 10240  #重要配置  
#wal_send_timeout = 60s 无效  
max_connections = 512 #从库的 max_connections要大于主库 
archive_mode = on #允许归档  
archive_command = 'test ! -f /var/lib/pgsql/data/archivedir/%f && cp %p /var/lib/pgsql
/data/archivedir/%f'   #根据实际情况设置  

三、从数据库配置(10.10.1.62)
1、切换到postgres

[root@localhost data]# su - postgres  

2、拷贝master配置相关文件。

-bash-4.2$ rm -rf /var/lib/pgsql/data/* 
-bash-4.2$ pg_basebackup -h 10.10.1.61 -U repl -D /var/lib/pgsql/data -X stream -P      
-bash-4.2$ cp /usr/share/pgsql/recovery.conf.sample /var/lib/pgsql/data/recovery.conf  

3、修改recovery.conf文件

standby_mode = on 
primary_conninfo = 'host=10.10.1.61 port=5432 user=repl password=123456' 
#trigger_file = '/var/lib/pgsql/9.6/data/trigger.kenyon'    #主从切换时后的触发文件 (没有配置,使用默认)

recovery_target_timeline = 'latest' 

4、修改postgresql.conf文件

listen_addresses = 10.10.1.62 
wal_level = hot_standby  
max_connections = 1000 #一般从的最大链接要大于主的。  
hot_standby = on #说明这台机器不仅仅用于数据归档,也用于查询  
max_standby_streaming_delay = 30s  
wal_receiver_status_interval = 10s #多久向主报告一次从的状态。  
hot_standby_feedback = on #如果有错误的数据复制,是否向主进行范例  

四、检测
1、在master数据库中测试

postgres=# select client_addr,sync_state from pg_stat_replication; 
 client_addr | sync_state 
-------------+------------ 
 10.10.1.61  | async 
(1 row)  

2、在master数据库中创建test数据库

postgres=# create database test; 
CREATE DATABASE 
postgres=# \l     //  查看当前所有数据库 
                                  List of databases 
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges 
-----------+----------+----------+-------------+-------------+----------------------- 
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          + 
           |          |          |             |             | postgres=CTc/postgres 
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          + 
           |          |          |             |             | postgres=CTc/postgres 
 test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(4 rows) 
   
postgres=#  

3、在从数据库中查看数据库是否同步。

postgres=# \l 
                                  List of databases 
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges 
-----------+----------+----------+-------------+-------------+----------------------- 
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          + 
           |          |          |             |             | postgres=CTc/postgres 
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          + 
           |          |          |             |             | postgres=CTc/postgres 
 test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(4 rows)  

安装postgis插件(postgis24_10)
安装时出现没有依赖包,解决(安装以下版本的epel源):

rpm -ivh ftp://bo.mirror.garr.it/1/slc/centos/7.0.1406/extras/x86_64/Packages/epel-release-7-5.noarch.rpm
yum install -y postgis24_10


psql -d ltpostgis -f /usr/share/postgresql/10/contrib/postgis-2.4/postgis.sql 
psql -d chat -f /usr/share/postgresql/10/contrib/postgis-2.4/postgis.sql 
psql -d chat -f /usr/share/postgresql/10/contrib/postgis-2.4/spatial_ref_sys.sql 
psql -d chat -f /usr/share/postgresql/10/contrib/postgis-2.4/topology.sql 



 CREATE EXTENSION pg_trgm;
 psql chat -c'CREATE EXTENSION pg_trgm;'

欢迎关注我的公众号

在这里插入图片描述

原文链接:http://www.chenxujiang.club/article/5

### PostgreSQL 源码安装并配置主从复制 #### 准备工作 为了确保环境的一致性和稳定性,在开始之前需要确认操作系统已经更新到最新状态,并且安装必要的开发工具和依赖项。对于CentOS来说,可以通过`yum groupinstall "Development Tools"`命令来安装这些工具[^3]。 #### 下载源代码 访问PostgreSQL官方网站获取所需版本的源代码压缩文件。例如,使用wget命令下载特定版本(如v9.6.3): ```bash wget https://ftp.postgresql.org/pub/source/v9.6.3/postgresql-9.6.3.tar.gz ``` 解压后进入目录准备编译安装过程。 #### 编译与安装 执行如下指令完成编译及安装操作: ```bash tar zxvf postgresql-*.tar.gz cd postgresql-*/ ./configure --prefix=/usr/local/pgsql make && make install ``` 这一步骤会把PostgreSQL安装至指定路径下(/usr/local/pgsql),同时创建相应的数据库集群初始化脚本等资源。 #### 初始化主服务器 在主节点上运行initdb命令来进行初次初始化: ```bash /usr/local/pgsql/bin/initdb -D /data/pg_data/ ``` 这里假设/data/pg_data作为存储位置;请根据实际情况调整此参数值[^1]。 #### 配置主服务端口监听地址及其他必要设置 编辑postgresql.conf文件修改listen_addresses='*'允许远程连接请求接入,并适当调整wal_level、max_wal_senders等相关参数支持流复制功能[^4]: ```properties # 文件位于 $PGDATA 目录内,默认为上面 initdb 创建的数据目录 listen_addresses = '*' port = 5432 wal_level = replica max_wal_senders = 3 hot_standby = on archive_mode = on archive_command = 'test ! -f /var/lib/pgsql/wals/%f && cp %p /var/lib/pgsql/wals/%f' ``` #### 设置主库用户密码 利用psql客户端更改默认超级管理员账户postgres的新密码以便后续管理维护更加安全可靠: ```bash /usr/local/pgsql/bin/psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'your_new_password';" ``` #### 备份初始数据用于同步给从机 停止当前正在运行的服务实例之后再做全量备份动作,这样能保证所传输的内容是最新的完整副本: ```bash pg_basebackup -h localhost -D /path/to/recovery_directory -P -X stream -U replication_user_name ``` 其中/path/to/recovery_directory代表目标机器上的恢复点保存地点;replication_user_name则是事先定义好的具有REPLICATION权限的角色名称[^2]。 #### 启动主服务器 启动完成后检查日志输出验证一切正常无误后再继续下一步操作: ```bash /usr/local/pgsql/bin/pg_ctl start -D /data/pg_data/ ``` #### 安装配置从服务器 重复上述部分步骤直至成功搭建起第二个独立的工作站为止。注意要单独设立不同的数据存放空间以及对应的配置文档副本。 #### 修改recovery.conf文件启用热备模式 将先前由pg_basebackup导出所得的结果集迁移到新建立起来的目标站点当中去,并在其根目录里新增名为recovery.conf的小型文本档,内容大致如下所示: ```properties standby_mode = 'on' primary_conninfo = 'host=master_ip_address port=5432 user=replication_user password=replication_password' trigger_file = '/tmp/failover.trigger' restore_command = 'cp /var/lib/pgsql/archivedir/%f "%p"' ``` 此处master_ip_address指的是上游提供者的真实IPV4数值形式表示法;而其他几个变量则需依据具体场景灵活替换实际存在的字符串表达式。 #### 开启从服务器 最后重启该进程使其生效即完成了整个流程的设计实施阶段: ```bash /usr/local/pgsql/bin/pg_ctl start -D /slave_node_pg_data_path/ ``` 此时应该能够观察到底层机制自动拉取增量变更记录进而保持两者之间持续一致的状态了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值