参考:https://www.jianshu.com/p/7fe9754c9c5f
https://www.modb.pro/db/29419
一:安装以及初始工作
安装环境:
os:CentOS Linux release 7.3.1611<br />pg:postgresql-12.2
安装基础依赖:
yum install -y readline-devel zlib-devel make gcc
注:安装依赖失败考虑修改镜像,或者官网下载压缩包自行安装,安装的版本要求最好与官网一致
创建用户组和用户:pg的命令无法在root下执行
groupadd postgres<br />useradd -g postgres postgres
解压软件包至/opt目录:
tar -zxvf postgresql-12.2.tar.gz -C opt
指定软件包安装路径:
注:安装的时候一定看好选项,配置上debug选项,否则不能调试
./configure --prefix=/usr/local/postgresql-12
编译安装:
make && make install
二:主备搭建
创建目录
创建主备的环境变量文件, 因为是在同一台机上起两个PG实例, 环境变量要各自设置。
postgresql.conf也可以设置端口
vi master.env
注:PGHOME指的是安装目录 可以省略PGMAJOR,根据自己实际安装来,环境变量source后可以自动识别port端口
vi slave.env
注意这里的PG_HOME是安装目录,在非root下该文件为只读
初始化master实例
注:以下命令切换到postgres用户下运行,并将postgres用户添加到sudoer,部分创建的文件夹设置为postgres下
su - postgres
chown -R postgres.postgres xx
xx:data目录 或者log目录等
注:初始化数据库为initdb -D xx :pgdata目录,主库需要初始化,从库直接从主库拉取配置
pg需要配置一个流复制账号进行主从同步。并且还需要在从服务器配置文件中授权该用户
初始化slave实例
三:验证
一个false一个tree, 证明目前主备状态正常。
验证其他参考博客:
https://www.jianshu.com/p/7fe9754c9c5f
四:PG必备命令行:
psql:进入pg命令行
chown -R postgres.postgres postgresql/data``设置拥有者,防止权限不够
tail logs/xx.log:查看错误日志
创建流复制用户
psql -c " CREATE USER repuser replication LOGIN ENCRYPTED PASSWORD 'repuser';"
'user=repuser password=repuser host=localhost port=6543' 流复制用户密码
source master.env 刷新环境变量
pg_ctl -l logs/master.log start 启动服务
pg_ctl stop 停止服务
# 拉取全量备份, 注意master用的端口是6543
pg_basebackup -D $PGDATA -Fp -Xs -v -P -h localhost -p 6543 -U repuser
\d :列出表
create table rep_test(id int,name text);创建表
insert into rep_test values(1,'slave instance added');
select * from rep_test;
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');
补充命令行:ip addr show 查看ip
vi:/xx查找
mkdir -p 递归创建
chmod 700 -R /var/lib/postgresql/data修改文件权限
GDB调试:psql命令行下退出,重新打开进程号会变,开启了新的进程,调试不要退出ps -ef|grep postgres 找到进程号
环境变量:export::当前终端有效,窗口关闭后无效
vim ~/.bashrc:永久生效
vim ~/.bash_profile:永久生效 .是隐藏文件
source(或点)命令通常用于重新执行刚修改的初始化文档
vi xx.env sourcexx.env