postgresql9.5安装、主从复制、主备切换

您所在的位置:网站首页 i2c的主从切换 postgresql9.5安装、主从复制、主备切换

postgresql9.5安装、主从复制、主备切换

2023-07-09 21:47| 来源: 网络整理| 查看: 265

一、安装pg9.5

网上教程都是yum源找不到,很崩溃

自己去官网找到了办法换源,在这个网址的最底部有教程:Repo RPMs - PostgreSQL YUM Repository

// 配置源,如果是9.6就改成9.6,本次使用9.5 cat /etc/yum.repos.d/pgdg-95.repo [pgdg90] name=PostgreSQL 9.5 RPMs for RHEL/CentOS 7 baseurl=https://yum-archive.postgresql.org/9.5/redhat/rhel-7-x86_64 enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG EOF // 安装 yum install postgresql95-server // 初始化并启动postgresql /usr/pgsql-9.5/bin/postgresql95-setup initdb // 看命令 systemctl list-unit-files --type=service | grep postgresql // 启动postgresql systemctl enable postgresql-9.5 // 开机自启动 systemctl start postgresql-9.5 // 启动 systemctl restart postgresql-9.5 // 重启 systemctl stop postgresql-9.5 // 停止 坑:如果报错就执行 清除yum缓存 的命令,然后重新安装 Not using downloaded pgdg90/repomd.xml because it is older than what we have: // 清除yum缓存 sudo yum clean all // 安装 yum install postgresql95-server 二、主库配置

一些路径:

/var/lib/pgsql/9.5/data/pg_hba.conf /var/lib/pgsql/9.5/data/postgresql.conf

postgresql.conf 配置文件修改

// 必须配置 listen_addresses='*' #允许从节点连接 wal_level=hot_standby #以启用归档模式 max_wal_senders=2 #允许的最大WAL发送者数量,指定连接到主节点的从节点数量,大于1就行 wal_keep_segments=64 #保留的WAL段数 hot_standby=on #备份的时候允许查询,启用从节点的热备模式 wal_log_hints=on # pg_rewind要使用,放心打开,不会有需要手动清理的文件产生 full_page_writes = on # pg_rewind要使用,放心打开,不会有需要手动清理的文件产生 // 选择配置 wal_send_timeout=60s #打开 archive_mode=on #启用归档模式 archive_command= /bin/true #暂时用伪命令就行 #archive_command = 'cp %p /path/to/archive/%f'

创建一个账户repl2负责主从复制

sudo -u postgres psql -d runoobdb 创建允许复制的账户 CREATE ROLE repl2 LOGIN REPLICATION PASSWORD '123456';

pg_hba.conf 配置文件修改,把 postgres账户 也提前配置上,后面也要用这个账户

host replication trust 如: host replication repl2 0.0.0.0/0 trust host all repl2 0.0.0.0/0 trust host all postgres 0.0.0.0/0 trust

权限问题,这里必须是0700,如果是0777会有各种问题!!!

执行 chown -R postgres:postgres /var/lib/pgsql/9.5/data chmod -R 0700 /var/lib/pgsql/9.5/data

启动主库

三、从库配置

注意:从库不要初始化,如果已经初始化,需要清空 /usr/local/postgresql/data 目录

# 删除前先备份 cp -r var/lib/pgsql/9.5/data var/lib/pgsql/9.5/data.bak # 删除 rm -rf /var/lib/pgsql/9.5/data/*

从主库备份数据

/usr/pgsql-9.5/bin/pg_basebackup -h 主库ip -U repl2 -F p -x -P -R -D \ /var/lib/pgsql/9.5/data/ -l rep_backup20230705

 recovery.conf 配置文件修改

#以下配置如果有就不加 recovery_target_timeline = 'latest' # 一般加这一行就行 standby_mode = on primary_conninfo = 'host=主机IP port=5432 user=admin password=123456'

权限问题:

执行 chown -R postgres:postgres /var/lib/pgsql/9.5/data chmod -R 0700 /var/lib/pgsql/9.5/data

启动postgresql 

四、状态监控

日志文件位置:/var/lib/pgsql/9.5/data/pg_log/postgresql-Sun.log

sql语句:

select pg_is_in_recovery(); // t 表示备库

 监控命令:

/usr/pgsql-9.5/bin/pg_controldata /var/lib/pgsql/9.5/data/

五、测试 sudo -u postgres psql -d runoobdb CREATE DATABASE runoobdb; \l // 看数据库 \c runoobdb // 切换数据库 CREATE TABLE COMPANY( NAME TEXT NOT NULL, AGE INT NOT NULL ); INSERT INTO COMPANY (NAME,AGE) VALUES ('Allen', 25); INSERT INTO COMPANY (NAME,AGE) VALUES ('Lily', 30); INSERT INTO COMPANY (NAME,AGE) VALUES ('ZHANG', 68);

主库新增数据,备库能查到,只是此时备机是只读的,因为防止乱套了 

六、主机故障、备机切换成新主机

停止主机

备机切换成主机

sudo -u postgres /usr/pgsql-9.5/bin/pg_ctl promote -D /var/lib/pgsql/9.5/data // 如果是sql:SELECT pg_ctl promote; 七、旧主机切换成新备机,使用pg_rewind

使用pg_rewind:pg_rewind 是用于将备机回滚到旧主机状态的工具

优点:速度比较快,可以理解为增量的数据恢复

使用前提:旧主机没有新增数据的产生。如果旧主机和新主机都有新数据产生,不适合使用pg_rewind,而应该使用pg_basebackup来全量恢复数据

sudo -u postgres /usr/pgsql-9.5/bin/pg_rewind --target-pgdata=/var/lib/pgsql/9.5/data/ --source-server="host=192.168.1.39 dbname=runoobdb user=postgres" -P

接下来把新备机上的recovery.conf 配置文件修改,按照步骤三。注意改掉ip,还有要注意权限问题

启动新备机

新主库新增数据,新备库能查到

至此,完成 主从复制 —— 主机宕机 + 备机升主 —— 老主机提升为新备机

八、另:一些报错解决

解决: a、设置:hot_standby=on            #备份的时候允许查询,启用从节点的热备模式  b、先stop再start试试

pg_basebackup: FATAL:  could not open relation mapping file "global/pg_filenode.map": No such file or directory

解决:参考权限不够



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3