暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

pg数据库安装及主从搭建

##解压&编译&安装,是需要编译的包

下载源码网址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应该就可以了。


感谢您能看到最后,如对您有所帮助请点击左边的大拇指为我点赞,谢谢。
最后修改时间:2023-10-17 15:56:06
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论