当前位置: 首页 > news >正文

postgres数据备份与主从配置

备份PostgreSQL数据库

备份格式有几种选择:
bak:压缩二进制格式
sql:明文转储
tar: tarball

mydb=# \q
-bash-4.2$ pg
pgawk          pg_dump        pgrep
pg_basebackup  pg_dumpall     pg_restore# 备份所有的
-bash-4.2$ pg_dumpall > pg_backup.bak# 备份 mydb库的
-bash-4.2$ pg_dump mydb > mydb.bak
-bash-4.2$ ls
14  mydb.bak pg_backup.bak
-bash-4.2$ pwd
/var/lib/pgsql# 导出postgres库所有表
pg_dump -U postgres -f/tmp/postgres.sql postgres # 导出postgres库中 表test的数据
pg_dump -U postgres -f/tmp/postgres.sql -t test postgres# 导出postgres库 以tar形式压缩保存为postgres.tar   -F 格式
pg_dump -U postgres -F t -f /tmp/postgres.tar postgres恢复数据库
# 恢复postgres.sql数据到postgres数据库,  
psql -U postgres -f /tmp/postgres.sql postgres# 恢复postgres.tar数据到postgres数据库  psql 打不开tar文件
pg_restore -U postgres -d postgres /tmp/postgres.tar(su -postgres
pg_dump daname>dbname.bak

postgres 主从

清理历史文件

rm -rf /var/lib/pgsmaster 
rm -rf /var/lib/pgsslave 
docker rm -f pgsmaster 
docker rm -f pgsslave
docker network create pg-network
docker run -d --network=pg-network --name pgsmaster -p 5500:5432 -e POSTGRES_PASSWORD=postgres -v /var/lib/pgsmaster:/var/lib/postgresql/data  postgres:16.4# 先不做挂载
docker run -d --network=pg-network --name pgsslave -p 5433:5432 -e POSTGRES_PASSWORD=postgres   postgres:16.4

查看 pg IP地址 配置主IP信息,运行读的IP

docker inspect pgsmaster|grep IPAddress 
docker inspect pgsslave |grep IPAddresscat >>/var/lib/pgsmaster/postgresql.conf <<-'EOF'
primary_conninfo='host=172.19.0.2 port=5432 user=repl password=repl' 
EOFcat >>/var/lib/pgsmaster/pg_hba.conf <<-'EOF'
host replication repl  172.19.0.2/32   md5
host replication repl  172.19.0.3/32   md5
EOF

master创建从用户

docker  exec -it  pgsmaster /bin/bash
psql -U postgres
set synchronous_commit =off;
create role repl login replication encrypted password 'repl';
\du 
\qexit
docker restart pgsmaster

slave 备份文件并拷贝出容器

docker exec -it pgsslave /bin/bash#pg_basebackup  向主服务器的数据备份。dump大文件 从库直接加载
pg_basebackup -Fp --progress -D /home/opt/postgresql-16.0/data/ -R -h 172.19.0.2 -p 5432 -U repl --password
Password:
waiting for checkpoint
23136/23136 kB (100%), 1/1 tablespaceroot@99e541cc922a:/# ls /var/lib/postgresql/data/
base ...
root@99e541cc922a:/# exit[root@vm ~]# docker cp pgsslave:/home/opt/postgresql-16.0/data/ /var/lib/pgsslave
Successfully copied 40.6MB to /var/lib/pgsslave[root@vm ~]# ls /var/lib/pgsslave
...  standby.signal 标识文件,[root@vm ~]# docker rm -f pgsslave

重写映射并启动slave

docker run -d --network=pg-network --name pgsslave -p 5433:5432 -e POSTGRES_PASSWORD=postgres -v /var/lib/pgsslave:/var/lib/postgresql/data  postgres:16.4docker logs -f pgsslave
select * from  pg_stat_replication;  # 查看复制状态

查看从库同步信息

ceate table tbl1(id int, text varchar(10)); 
insert into tbl1 values (1, 'helloworld');
http://www.lryc.cn/news/495299.html

相关文章:

  • 【二分查找】力扣 275. H 指数 II
  • 使用uni-app进行开发前准备
  • AI开发-深度学习框架-PyTorch-torchnlp
  • VBA数据库解决方案第十七讲:Recordset对象记录位置的定位方法
  • Ubuntu 操作系统
  • Maven 内置绑定到底怎么回事?
  • 如何把Qt exe文件发送给其他人使用
  • 【汇编语言】call 和 ret 指令(三) —— 深度解析汇编语言中的批量数据传递与寄存器冲突
  • 定义函数合并字符串—超详细讲解
  • 实现 vue3 正整数输入框组件
  • Leetcode - 周赛425
  • c++(斗罗大陆2)
  • redis常见数据类型
  • MySQL - 性能优化
  • Linux进程概念-详细版(一)
  • K8S网络系列--Flannel网络下UDP、VXLAN模式的通信流程机制分析
  • ThreadLocal的设计思考
  • shell脚本练习(2)
  • 通讯专题4.1——CAN通信之计算机网络与现场总线
  • Harmony NEXT-越过相机读写权限上传图片至项目云存储中
  • MATLAB基础应用精讲-【数模应用】Retinex图像去雾算法(附MATLAB和python代码实现)
  • 点击A组件跳转到B页面的tab的某一列
  • HarmonyOS xml转换JavaScript 常用的几个方法
  • Linux笔记---进程:进程等待
  • 【Linux】匿名管道通信场景——进程池
  • 算法妙妙屋-------1.递归的深邃回响:全排列的奇妙组合
  • 【maven-6】Maven 生命周期相关命令演示
  • 黑马程序员Java笔记整理(day06)
  • LeetCode【代码随想录】刷题(动态规划篇)
  • 【看海的算法日记✨优选篇✨】第三回:二分之妙,寻径中道