首页 > 数据库 >postgresql离线安装及双机热备

postgresql离线安装及双机热备

时间:2023-07-01 17:44:57浏览次数:49  
标签:postgresql postgres local 离线 data pgsql usr 双机

前言:本文是做主库的热备份到从库,即主库中的数据即时备份到从库,第1-5步是要在主机和备机都要执行,第6步是主机的数据库初始化,第8步是备机的数据库初始化

1.安装依赖(主机,备机) root用户

在一台有网的电脑上先下载好所需的依赖
yum install --downloadonly --downloaddir=/tmp/ zlib-devel readline-devel gcc-c++ -y

然后将下载的rpm全部拷贝到装postgresql电脑上,我这里打包好了所有的依赖和9.6.10的安装包,一起上传到服务器,有需要的自己下(链接:https://pan.baidu.com/s/1nDUcIdiMSXLrByH3S9YTNg 提取码:gxrj

解压文件并安装依赖

tar -zxvf postgresql.tar.gz

进入到dependencies目录下执行

rpm -Uvh --force --nodeps *.rpm

 

 2.关闭firewalld(主机,备机) root用户

关闭firewalld
systemctl stop firewalld
systemctl disable firewalld

 

 3.编译安装(主机,备机) root用户

解压postgresqlan安装文件
tar -zxvf postgresql-9.6.10.tar.gz

 

创建安装目录

mkdir -p /usr/local/pgsql

检查安装环境

./configure --prefix=/usr/local/pgsql

 

编译

make

 

安装

make install

 

 4.创建postgres用户来安装postgresql(主机,备机) root用户

创建用户组和用户
groupadd postgres useradd -g postgres postgres passwd postgres

 

在/usr/local/pgsql下创建数据目录data,log

mkdir -p /usr/local/pgsql/data

mkdir -p /usr/local/pgsql/log
赋予postgres用户整个pgsql目录的权限

chown -R postgres:postgres /usr/local/pgsql

 

 

5.配置环境变量(主机,备机) root用户

在/etc/profile文件最后加入下面内容
vim /etc/profile
#postgresql 
export PGDATA=/usr/local/pgsql/data
export PGHOME=/usr/local/pgsql
export PATH=$PGHOME/bin:$PATH

 

使环境变量生效 source /etc/profile

 

6.初始化主机数据库(主机) postgres用户

切换到postgres用户
su - postgres

 到安装包目录下执行

cd /opt/postgresql/postgresql-9.6.10

initdb

 

 7.启动pgsql服务并配置主从关系(主机:192.168.31.23,备机:192.168.31.49)(主机) postgres用户

启动服务
pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/postgresql.log start 
查看服务进程
ps -ef|grep postgres

 

用自带的工具连接数据库并修改postgres用户密码

psql

\password

 

创建热备用户

create role data_backup login replication encrypted password '123456';

 使用\q退出数据库

 

修改配置文件

vim /usr/local/pgsql/data/postgresql.conf

按照下面进行配置修改(需要在文件中找,有的是注释掉的)

listen_addresses="*"
port=5432
max_connections=500
wal_level=hot_standby  #wal归档复制级别为hot_standby异步流复制
max_wal_senders=2  #主库可以最多有多少个并发的standby数据库
wal_keep_segments=64  #指定pg_xlog目录保存的wal log的最小数量。每个文件一般是16M。

 

vim /usr/local/pgsql/data/pg_hba.conf

按照如下进行配置修改

 

 重启数据库

pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/postgresql.log restart

 

可以使用数据库连接工具远程连接了

 

8. 启动备机数据库(备机) postgres用户

切换到postgres用户
su - postgres

 

从主机备份数据

pg_basebackup -h 192.168.31.23 -p 5432 -U data_backup -F p -P -D /usr/local/pgsql/data

这里要求输入数据库备份用户的密码,我这里是123456,第一次输输错了服务器postgres用户的密码,所以报错了;

 

修改配置文件

vim /usr/local/pgsql/data/postgresql.conf

按照下面进行配置修改

max_connections=1000 #最大连接数一般大于主库就行
#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 #可选,查询冲突时向主库反馈

 

创建恢复配置recovery.conf文件

这个文件在安装postgresql时,会生成到/usr/local/pgsql/share/postgresql目录下,名字是recovery.conf.sample。
我们复制并修改名称为recovery.conf并放置在/usr/local/pgsql/data目录下

cp /usr/local/pgsql/share/recovery.conf.sample /usr/local/pgsql/data/recovery.conf

vim /usr/local/pgsql/data/postgresql.conf

按照如下进修配置修改

recovery_target_timeline = 'latest'  #从主库恢复最新的数据
standby_mode = on  #开启备库
primary_conninfo = 'host=192.168.31.149 port=5432 user=data_backup password=123456' #连接主库

 

启动数据库

pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/log/postgresql.log start

查看下进程发现postgres没有起来,看日志可以发现是/usr/local/pgsql/data 目录的权限有问题(这里是个坑,pg_basebackup过来的文件权限不是700)

切换到root用户执行

chmod 700 -R /usr/local/pgsql/data

然后切回到postgres用户在重新启动数据库

查看主机postgres进程

 

查看备机postgres进程

 

 9.测试

主库和从库都没有表

 

在主库新建一张表,并插入一条数据,看看从库中是否有

 

标签:postgresql,postgres,local,离线,data,pgsql,usr,双机
From: https://www.cnblogs.com/zengwb/p/17517934.html

相关文章

  • postgresql 14安装步骤(linux)
     ps:(跟别人视频看的,有坑,记得全看完)打开官网https://www.postgresql.org/download/linux/redhat/选择需要数据库的版本,虚拟机系统根据官方文档的步骤安装即可(我用的是postgresql14+centos7,主要是学习测试使用)  按照步骤安装:(yum)1.配置yum源sudoyuminstall-y......
  • 离线安装ffmpeg源码包【详细教程】
    今天分享一下ffmpeg源码包的安装过程,针对在没有网络环境下,且不能直接使用yum如何成功安装ffmpeg源码包。博主本人通过正式服务器测试,记录整个安装过程。值得大家收藏同时,我会分享一下如何使用ffmpeg对H.264格式视频(MP4)进行m3u8+ts切片的转换,并生成m3u8+ts格式文件ffmpeg所需要环......
  • postgresql数据库查看表结构
      2、 ......
  • 数据库SqlServer迁移PostgreSql实践
    SqlServer属于商业数据库,不可能像Mysql等数据库一样,去解析相关的数据库binlog,从而实现增量数据的回放,结合应用属性,最后确定采用离线迁移方式,从SqlServer中将表数据全部读出,然后将数据写入到pg中,采用此种方案的弊病就是程序端需停止写入(应用可将部分数据缓存到本......
  • postgresql 字符串转整数 int、integer
    postgresql字符串转整数int、integer --把'1234'转成整数selectcast('1234'asinteger);--用substring截取字符串,从第8个字符开始截取2个字符:结果是12selectcast(substring('1234abc12',8,2)asinteger)---使用to_number函数来转换成整数---to_number(text,......
  • MICROSOFT SQL SERVER TO POSTGRESQL MIGRATION USING PGLOADER
    Tocontinueourmigrationseries,today’spostwillfocusonpgloader.PgloaderisanotherOpenSourcedatamigrationutilityforPostgreSQLfromMySQLandSQLServer.Today’sdemowillmigrateasampledatabase(StackOverflow)fromMSSQ......
  • gmap构建离线地图,用createCustomerTiledLayer方法,瓦片地址尾部多了 ?x={x}&y={y}&z&{z
    gmap构建离线地图,用createCustomerTiledLayer方法,瓦片地址尾部多了?x={x}&y={y}&z&{z}导致无法显示地图。functioninitMap(){this.map=newGL.Map('map',{center:"120.650847,31.3092434",zoom:12,zoomControl:f......
  • 谷歌云:全面推出 AlloyDB for PostgreSQL 与数据库迁移服务
    【本文由CloudAce整理发布。CloudAce是谷歌云全球战略合作伙伴,拥有300多名工程师,也是谷歌最高级别合作伙伴,多次获得GoogleCloud合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。】2022年12月,谷歌云宣布全面推出AlloyDB......
  • 谷歌云:全面推出 AlloyDB for PostgreSQL 与数据库迁移服务
    【本文由CloudAce 整理发布。CloudAce 是谷歌云全球战略合作伙伴,拥有300多名工程师,也是谷歌最高级别合作伙伴,多次获得GoogleCloud合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。】2022年12月,谷歌云宣布全面推出 Allo......
  • PostgreSQL技术大讲堂 - 第20讲:事务概述与隔离级别
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。第20讲:事务概述与隔离级别内容1:ACID四大特性内容2:PostgreSQL......