一、安装postgresql、postgis(有9.6/11.6/13/14各版本的离线安装包) 以下例子安装的版本为postgresql13、postgis30_13,因已提前准备好安装所需的RPM包,所以使用RPM形式安装。

安装包链接:https://pan.baidu.com/s/1lFL6tmK5KBUkJAPSV3r9iA  提取码:1012

1、rpm包安装: mkdir /tmp/pgsql && cd /tmp/pgsql 将13版本的RPM包传到/tmp/pgsql中 rpm -ivh *.rpm --nodeps --force 2、查看安装结果:rpm -qa | grep postg #输出结果 postgresql13-server-13.6-1PGDG.rhel7.x86_64 postgresql13-contrib-13.6-1PGDG.rhel7.x86_64 postgresql-libs-9.2.24-7.el7_9.x86_64 postgis30_13-3.0.5-1.rhel7.x86_64 postgresql13-libs-13.6-1PGDG.rhel7.x86_64 postgresql13-13.6-1PGDG.rhel7.x86_64 postgis30_13-client-3.0.5-1.rhel7.x86_64 3、配置: # 初始化数据库 # /usr/pgsql-13/bin/postgresql-13-setup initdb # 启动pg # systemctl start postgresql-13 # 设置开机启动# systemctl enable postgresql-13 4、修改pg配置文件(此次安装的服务器数据盘是/data/) vi /var/lib/pgsql/13/data/postgresql.conf #取消data_directory注释,修改data_directory = 'ConfigDir'为data_directory = '/data/pgsql_data/' data_directory = '/data/pgsql_data/' #修改最大连接数 max_connections #将监听地址修改为* #默认listen_addresses配置是注释掉的,所以可以直接在配置文件开头加入该行 listen_addresses='*' #修改配置文件 vi /var/lib/pgsql/13/data/pg_hba.conf #在问价尾部加入,如果出现其他数据库连不上pgsql,就将md5修改为trust。修改为trust后会导致连接数据库时不需要密码 host    all             all             0.0.0.0/0               md5 创建pgsql数据存储路径:mkdir -p /data/pgsql_data/ cp -r /var/lib/pgsql/13/data/* /data/pgsql_data/ chown -R postgres:postgres /data/pgsql_data/ mv  /var/lib/pgsql/13/data  /tmp/data vi /usr/lib/systemd/system/postgresql-13.service # 将Environment=PGDATA=/var/lib/pgsql/13/data/修改为Environment=PGDATA=/data/pgsql_data/ Environment=PGDATA=/data/pgsql_data/ #重启PostgreSQL服务 chmod 700 /data/pgsql_data systemctl daemon-reload systemctl restart postgresql-13 5、修改postgres账号密码: 1、进入PostgreSQL命令行:su postgres 2、启动SQL Shell:psql 3、修改密码:ALTER USER postgres WITH PASSWORD 'Psql@135'; 4、\q用于退出psql命令行 然后使用navicat连接pgsql,能连接表示安装成功。也可以使用命令行连接pgsql。

二、postgresql13主从配置: 1、主库设置: 1.1、创建同步账号: 登陆Master库,创建具有用于传递数据的具有replication权限的用户【也可以直接用Super user当作replication用户,但不推荐】 CREATE ROLE repl login replication password 'Psql!@135'; 1.2、修改Master库的pg_hba.conf,把Master库和Standby库的IP地址添加进Master库网络策略白名单中,使Standby库可以连上 Master库,同时便于主备切换: host    replication     repl            从库IP/32         trust host    replication     repl            主库IP/32         trust 修改master库postgresql.conf文件:vi postgresql.conf wal_level = replica                  # 开启wal日志归档 max_wal_senders = 10            # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个 wal_sender_timeout = 60s      # 设置流复制主机发送数据的超时时间 max_connections = 1000        # 这个设置要注意下,从库的max_connections必须要大于主库的 shared_buffers = 8GB             #推荐内存的1/4 synchronous_standby_names = '' hot_standby = on  work_mem = 128MB maintenance_work_mem = 64MB archive_mode = on archive_command = 'cp %p /data/pgsql_data/arch_dir/%f; find /data/pgsql_data/arch_dir -type f -mtime +7 |xargs rm -f' 1.3、新建归档目录,赋予权限,重启主库: mkdir -p /data/pgsql_data/arch_dir chown -R postgres:postgres /data/pgsql_data systemctl restart postgresql-13

2、从库配置: 2.1、停止postgres服务:systemctl stop postgresql-13 2.2、删除从库数据文件:rm -rf /data/pgsql_data/* 2.3、从主库拉取数据文件:/usr/pgsql-13/bin/pg_basebackup -h 主库IP -U repl -F p  -P -R -D /data/pgsql_data 2.4、修改所属组:chown -R postgres:postgres /data/pgsql_data 2.5、修改postgresql.conf:vi postgresql.conf hot_standby = on max_connections = 1200 2.6、启动从库,并在主库中查看流复制的信息可以使用主库上的视图:systemctl start postgresql-13(从库中运行) select pid,state,client_addr,sync_priority,sync_state from pg_stat_replication;(主库中运行)   pid  |   state   | client_addr  | sync_priority | sync_state  -------+-----------+--------------+---------------+------------  58243 | streaming | 35.80.151.13 |             0 | async (如看到从库IP35.80.151.13,则表明主从已同步) 2.7、再次测试主动同步: 在主库创建数据库test:进入数据库,运行create database test; 去从库查看是否出现test:SELECT datname FROM pg_database; 在主库删除test数据库:drop database test; 对比主从数据库大小:select pg_size_pretty(pg_database_size('DB_name'));

三、主备切换步骤(12.0以上版本切换步骤。以下为切换演练,停止主库pgsql,模拟主库故障): 1、在主库操作:systemctl stop postgresql-13 2、在备库操作:su - postgres psql select pg_promote(true,60); 3、验证(在主库和备库上运行以下一条命令查看输出结果): /usr/pgsql-13/bin/pg_controldata /data/pgsql_data 主备库英文显示如下: Database cluster state: in production(表示此为主库) Database cluster state: in archive recovery(表示此为备库) 主备库中文显示如下: 数据库簇状态: 在运行中(表示此为主库) 数据库簇状态: 正在归档恢复(表示此为备库) 4、如果原来的主库因为宕机,将备库切换为主库后。原主库经修复后恢复正常,此时启动原主库后,原主库也会显示为in production,因此需要将原主库降为备库,操作与建立备库时一样。

# 12.0以下版本切换步骤

1、在主库操作:systemctl stop postgresql-11 2、在备库操作:su postgres 2.1、检查状态:/usr/pgsql-11/bin/pg_controldata -D /data/pgsql_data # 显示in archive recovery说明为备库 Database cluster state:               in archive recovery

2.2、 激活备库为可读写:/usr/pgsql-11/bin/pg_ctl promote -D /data/pgsql_data/

2.3、检查备库上的数据库角色:/usr/pgsql-11/bin/pg_controldata -D /data/pgsql_data 如果:Database cluster state: 显示in production说明已经提升为主库。

2.4、此时原主库也是in production状态,需要将其转换成备库(主库降为备库的操作见如上从库的配置步骤): 停止postgres服务:systemctl stop postgresql-11 删除数据文件:rm -rf /data/pgsql_data/* 从主库拉取数据文件:/usr/pgsql-11/bin/pg_basebackup -h 主节点ip -U repl -F p  -P -R -D /data/pgsql_data 修改所属组:chown -R postgres:postgres /data/pgsql_data 修改postgresql.conf:vi postgresql.conf max_connections = 1200 启动pgsql服务:systemctl start postgresql-11 查看数据库角色是否变为备库:/usr/pgsql-11/bin/pg_ctl promote -D /data/pgsql_data/(是否显示为in archive recovery)  

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。