
正文
postgresql流复制长语句的简单介绍
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
PostgreSQL部署 - 单机流复制
创建主备的环境变量文件, 因为是在同一台机上起两个PG实例, 环境变量要各自设置。
vi master.env
vi slave.env
新开一个shell终端(后续称为 terminal_master )
新开一个shell终端(后续称为 terminal_slave )
经过上面几步, 一个一主一备的集群就搭建好了, 下面开始验证流复制是否工作正常。
切换到 terminal_master 终端
切换到 terminal_slave 终端
一个false一个tree, 证明目前主备状态正常。
切换到 terminal_slave 终端
切换到 terminal_master 终端
切换到 terminal_slave 终端
DDL能顺利同步。
切换到 terminal_slave 终端
切换到 terminal_master 终端
切换到 terminal_slave 终端
切换到 terminal_master 终端
切换到 terminal_slave 终端
切换到 terminal_master 终端
主备切换完成, 且数据同步工作正常。
目前虽然工作正常, 但是角色是互换了的, 后续可以停掉 slave ,再做一次主备切换, 恢复成原始状态。
这个就作为练习了, 不再贴出操作步骤。
目前是靠手工切换主备的, 线上系统一般都要配置成自动切换, 这个时候就需要引入一些其他手段了, 譬如 patroni 之类的HA工具。
相关问答
Q1: PostgreSQL 如何写一段简单的循环语句
工具/材料:Management Studio。
1、首先在桌面上,点击“Management Studio”图标。
2、再者在该界面中,点击左上角“新建查询”选项。
3、继续在该界面中,输入循环增加新数据sql语句“declare @i int set @i=1 while @i100 begin insert into test1(no,name)values(@i,'用户名') set @i=@i+1 end”。
4、再者在该界面中,点击左上方“执行”按钮。
5、最后在该界面中,显示循环增加新数据成功。
Q2: postgresql流复制 怎么验证备份
PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰常有限。所以一直寻找完美的备份恢复方案。
梦里寻他千百度,伊人却在灯火阑珊处...其实PostgreSQL内置不少的工具,寻找的备份恢复方案就在其中:pg_dump,psql。这两个指令 在数据库的安装目录下,比如我自己本地安装的,路径形如:C:\Program Files\PostgreSQL\9.5\;然后进入到bin文件夹,会看到不少的exe文件,这就是PostgreSQL内置的工具了。里面会找到 pg_dump.exe,psql.exe两个文件。我们怎么用他们?
用法:
备份数据库,指令如下:
pg_dump -h 164.82.233.54 -U postgres databasename C:\databasename.bak
开始-运行-cmd 弹出dos控制台;然后 在控制台里,进入PostgreSQL安装目录bin下:
cd C:\Program Files\PostgreSQL\9.0\bin
最后执行备份指令:
pg_dump -h 164.82.233.54 -U postgres databasename C:\databasename.bak
指令解释:如上命令,pg_dump 是备份数据库指令,164.82.233.54是数据库的ip地址(必须保证数据库允许外部访问的权限哦~),当然本地的数据库ip写 localhost;postgres 是数据库的用户名;databasename 是数据库名。 意思是导出到C:\databasename.bak文件里,如果没有写路径,单单写databasename.bak文件名,那么备份文件会保存在C: \Program Files\PostgreSQL\9.0\bin 文件夹里。
恢复数据库,指令如下:
psql -h localhost -U postgres -d databasename C:\databasename.bak(测试没有成功)
pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "symbolmcnew" --no-password --verbose "databasename.backup"(测试成功)
指令解释:如上命令,psql是恢复数据库命令,localhost是要恢复到哪个数据库的地址,当然你可以写上ip地址,也就是说能远程恢复(必须保证 数据库允许外部访问的权限哦~);postgres 就是要恢复到哪个数据库的用户;databasename 是要恢复到哪个数据库。 的意思是把C:\databasename.bak文件导入到指定的数据库里。
以上所有的是针对windows而言的,如果在linux下,会不会有效?
在linux里依然有效。有一个值得注意的是:如果直接进入PostgreSQL的安装目录bin下,执行命令,可能会出现 找不到pg_dump,psql的现象,我们在可以这样:
备份:
/opt/PostgreSQL/9.5/bin/pg_dump -h 164.82.233.54 -U postgres databasename databasename.bak
恢复:
/opt/PostgreSQL/9.5/bin/psql -h localhost -U postgres -d databasename databasename.bak
Q3: 在PostgreSQL中怎么把一个数据库中一个表的数据复制到另一个数据库的表中 高手们帮帮忙,很急!!!
Postgresql不支持跨数据库操作。
可以通过pg_dump加上pg_restore或psql来完成迁移
或者直接使用sql语句中的copy语句来完成数据的迁移
具体看你的情况来选择一个合适的方法,你可以加我HI,我给你些建议
postgresql流复制长语句的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、postgresql流复制长语句的信息别忘了在本站进行查找喔。








