前言:本文是做主库的热备份到从库,即主库中的数据即时备份到从库,第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