从入门到差点放弃,postgresql极简安装+主从配置
Posted 77 months ago postgresql master linux 主从 配置 安装 password
安装
解压后
pgsql/bin/initdb -D /usr/local/pgsql/data
local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
local/pgsql/bin/createdb test
local/pgsql/bin/psql test
账户设置
创建用户
CREATE USER oschina WITH PASSWORD 'oschina123';
CREATE ROLE adam WITH LOGIN CREATEDB PASSWORD '654321'; 记得添加login权限
改密码
ALTER ROLE davide WITH PASSWORD 'hu8jmn3';
让一个角色能够创建其他角色和新的数据库:
ALTER ROLE miriam CREATEROLE CREATEDB;
查看所有数据库
psql -l
删除数据库
dropdb mydb
使用数据库
psql mydb
创建数据库
createdb mydb
配置主从
1.主创建同步账号
CREATE USER replica replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD 'replica';
2,postgresql.conf
wal_level = hot_standby # 这个是设置主为wal的主机
max_wal_senders = 32 # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = 256 # 设置流复制保留的最多的xlog数目
wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间
max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的
3,
pg_hda.conf
host all all 0.0.0.0/0 md5
4,
pg_basebackup -F p --progress -D /data/replica -h 192.168.1.12 -p 5432 -U replica --password
5,复制recovery.conf
6,re的内容
standby_mode = on # 这个说明这台机器为从库
primary_conninfo = 'host=10.12.12.10 port=5432 user=replica password=replica' # 这个说明这台机器对应主库的信息
recovery_target_timeline = 'latest' # 这个说明这个流复制同步到最新的数据
postgresql。conf
max_connections = 1000 # 一般查多于写的应用从库的最大连接数要比较大
hot_standby = on # 说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
wal_receiver_status_interval = 1s # 多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on # 如果有错误的数据复制,是否向主进行反馈
测试成果
主的机器上sender进程 从的机器上receiver进程
主的机器上
select * from pg_stat_replication;
pid | 8467 # sender的进程
usesysid | 44673 # 复制的用户id
usename | replica # 复制的用户用户名
application_name | walreceiver
client_addr | 10.12.12.12 # 复制的客户端地址
client_hostname |
client_port | 55804 # 复制的客户端端口
backend_start | 2015-05-12 07:31:16.972157+08 # 这个主从搭建的时间
backend_xmin |
state | streaming # 同步状态 startup: 连接中、catchup: 同步中、streaming: 同步
sent_location | 3/CF123560 # Master传送WAL的位置
write_location | 3/CF123560 # Slave接收WAL的位置
flush_location | 3/CF123560 # Slave同步到磁盘的WAL位置
replay_location | 3/CF123560 # Slave同步到数据库的WAL位置
sync_priority | 0 #同步Replication的优先度
0: 异步、1~?: 同步(数字越小优先度越高)
sync_state | async # 有三个值,async: 异步、sync: 同步、potential: 虽然现在是异步模式,但是有可能升级到同步模式
最后注意几个坑
-
systemd 启动的话 配置文件可能在etc下
-
hba配置文件放开ip
-
创建用户时给的权限
-
记得给文件夹postgres的 用户组和用户身份