pgsql 主从
vim /home/opt/postgresql-16.0/data/postgresql.conf
#设置以下
listen_addresses = '*' # 允许远程连接
hot_standby = on # 打开热备
wal_level = replica # 设置 WAL 日志级别为 replica
max_wal_senders = 3 # 允许的 WAL 发送者数量,根据需要进行调整
archive_mode = on
archive_command = 'cp "%p" /home/opt/postgresql-16.0/data/archive/%f'
mkdir /home/opt/postgresql-16.0/data/archive
chown postgres:postgres -R /home/opt/postgresql-16.0/data/archive
su - postgres
pg_ctl -D /home/opt/postgresql-16.0/data restart
#创建slave用户
psql
create role replicator with login replication encrypted password '密码';
vim /home/opt/postgresql-16.0/data/pg_hba.conf
#添加以下
host replication replicator ip地址/32 md5
从服务器
首先,你需要创建一个新的PostgreSQL实例。然后,停止这个实例,并且同步用的数据目录需要是空的
#使用pg_basebackup命令从主服务器复制数据
pg_basebackup -Fp --progress -D /home/opt/postgresql-16.0/data/ -R -h 主库ip地址 -p 主库端口 -U replicator --password
chown postgres:postgres -R /home/opt/postgresql-16.0/data/
#创建slave配置文件
vim /home/opt/postgresql-16.0/data/standby.signal
#添加以下
standby_mode = on #on为从库
primary_conninfo = 'host=主库ip地址 port=主库端口 user=replicator password=密码' #主库信息
recovery_target_timeline = 'latest' #流复制同步最新数据
su - postgres
pg_ctl -D /home/opt/postgresql-16.0/data start
验证主从关系
#主库上验证
psql
select * from pg_stat_replication;
#从库上验证
pg_controldata -D /home/opt/postgresql-16.0/data/ | grep 'Database cluster state'
#正常显示
Database cluster state: in archive recovery
代码解释
其他命令
#备份数据
pg_dump -U postgres -F c -b -f 备份文件路径 备份的数据库名称
#恢复数据
pg_restore -U postgres -d 备份的数据库名称 备份文件路径
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2024-01-10 nginx 根据端口进行判断进行自动跳转
2024-01-10 pgsql