##解压&编译&安装,是需要编译的包
下载源码网址http://www.postgres.cn/download/

下载速度还可以本身包就不大,注意规划好目录,要安装在那个目录就放在哪里。
tar -xzf postgresql-12.2.tar.gz
cd postgresql-12.2/
--配置,应该会有一些error报错注意看,需要将所有error报错解决才可以。可以参考这个网址https://blog.csdn.net/danqingc/article/details/98486514/
./configure --prefix=/opt/pgsql --with-pgport=5432 --with-libxml
--编译所有
--可能会报错需要一些依赖,如果你的测试机不能联网,需要搭个yum源。
make world
--安装postgresql
make install
##环境变量
vi /etc/profile
export PATH=/opt/pgsql/bin:$PATH ##根据你的实际环境编写
##新建用户
useradd postgres
chown -R postgres:postgres /opt/pgsql/
##初始化一个数据库存储区域
su - postgres
$ initdb -D /data 或
$ pg_ctl -D /data initdb
##后台启动
$ postgres -D /usr/local/pgsql/data >logfile 2>&1 &
##开机启动
echo "/usr/local/pgsql/bin/pg_ctl start -l /var/pgsql.log -D /usr/local/pgsql/data" >> /etc/rc.local/
-- su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog'
-------主从搭建部分
--主节点操作
(1)创建归档目录
mkdir pg_archive
(2)创建一个数据库用户replica进行主从同步
postgres用户登录到数据库
create role replica login repl encrypted password 'repl';
(3)修改pg_hba.conf,增加两行配置,允许replica用户来同步
[postgres@cltest220237 data]$ vi pg_hba.conf
# "local" is for Unix domain socket connections only
host all all 从节点ip/24 trust #允许从服务器连接到主服务器
host replication repl 从节点ip/24 md5 #允许从服务器使用replica用户来复制
(4)修改postgresql.conf
vi /usr/local/pgsql/data/postgresql.conf
###
listen_addresses = '*' #监听所有IP
archive_mode = on #允许归档
archive_command = 'cp %p /data/pg_archive/%f' #用该命令来归档logfile segment
wal_level =replica
hot_standby = on
max_wal_senders = 10 #这个设置可以最多有几个流复制连接
wal_keep_segments = 256 #设置流复制保留的最多的xlog数目
wal_sender_timeout = 60s #设置流复制主机发送数据的超时时间
max_connections = 100 #从库的max_connections必须要大于主库
(5)配置完两个文件后重启数据库
pg_ctl -D /data stop
pg_ctl -D /data start
(6)测试从服务器能否连接主服务器数据库
从节点操作,如下面操作查看数据库名,确实连上主库
psql -h 主节点ip -U postgres
--------从节点操作
(1)从主节点拷贝数据到从节点
在从库操作,删掉从库数据目录下的所有内容,然后通过pg_basebackup基础备份。
#关闭当前从节点的数据库
pg_ctl stop -D /data/pgdata
#清空从节点数据
cd /data/pgdata
rm -rf *
#从主节点拷贝数据到从节点(基础备份)
pg_basebackup -h主节点 -U repl -D /data/pgdata/ --checkpoint=fast -X stream --write-recovery-conf --progress --verbose --status-interval=3
#修改从库postgresql.conf配置文件
primary_conninfo='user=repl password=repl host=主ip port=5432'
#启动从数据库服务
pg_ctl start -D /data/pgdata
#查看主库从库是否有walsender和walreciver进程
ps -ef|grep -v grep |grep walreceiver 主ip
ps -ef|grep -v grep |grep walsender 从
#主库查看复制状态
psql
postgres=# select * from pg_stat_replication;
ps:如果你在起库时候pgdata目录的权限没问题,但是报错权限异常,把目录改成700应该就可以了。




