一、编译安装初始化等

./configure
--prefix=/release
--with-openssl
--without-ldap
--with-libxml -
-enable-thread-safety
make -j4
make install initdb -D /home/postgres/postgres_5432/data -U postgres -W --wal-segsize= -E UTF8
# 注意事项:
# 、-D 类似于mysql的datadir,data目录必须是空目录(否则初始化失败),且权限必须是0700(否则无法重启)
# 、--wal-segsize= 选项:默认的就是16M大小的wal日志,PostgreSQL11版本的一个重要调整是支持initdb和 pg_resetwal修改WAL文件大小,而11版本之前只能在编译安装PostgreSQL时设置WAL文件大小。这一特性能够方便WAL文件的管理。WAL日志文件大小默认为16MB,该值必须是1到1024之间的2的次方,增大WAL文件大小能够减少WAL日志文件的产生。类似于mysql的redolog
pg_resetwal --wal-segsize= -D /home/postgres/postgres_5432/data PostgreSQL的默认用户名和数据库也是“postgres”,不过没有默认密码。在安装PostgreSQL之后可以默认用户登录
# 先切换帐号
su - postgres
# 启动
pg_ctl start -D ../data
# 测试服务是否开启
ps -ef|grep postgres # 停止服务
pg_ctl -D datadir stop -m smart # 鸡肋。等待活动的事务提交结束,并等待客户端主动断开链接后关闭数据库,如果客户端不断开链接,则停止服务会失败,可以简写成: -ms
pg_ctl -D datadir stop -m fast #提倡。回滚所有活动中的事务,并强制断开客户端的链接,简写:-mf
pg_ctl -D datadir stop -m immediate # 不推荐。立即终止所有服务器进程,下次启动时,会先进入恢复状态,简写:-mi ./psql -h localhost -p -U postgres -W
psql -h localhost -p -U postgres -d postgres -f a.sql 执行sql文件
psql -h localhost -p -U postgres -d postgres -c "select * from table_name limit 5;"
# 相当于mysql中的 -e参数

二、相关配置说明

# pg_ctl reload,支持热加载,不用重启。
# 、pg中pg_hba.conf,与mysql中的mysql.user表功能类似
格式
type database user address method
# 允许主机address上的用户user通过type方式以method的认证方式来连接database数据库,比如:
host all all 10.10.10.10/ trust
# type有local、host、hostssl、hostnossl
#local用unix域套接字,相当于mysql中使用—S参数来指定套接字,host为tcp/ip, # database的值:具体的数据库名称、all表示匹配所有数据库但不具有匹配物理复制的连接请求,replication匹配物理复制的连接请求。多个数据库名称用逗号分割。 # user有all,多个用户名称用逗号分割。 # address,0.0.0.0/0表示所有主机,10.10.10.10/32某个ip,10.10.10.0/24表示一个网段,逗号分隔 # method有trust、md5、ident(,只适合本地连接,用户映射文件pg_ident.conf(mapUser root root)) # 、postgresql.conf,类似于mysql中的my.cnf文件
shared_buffers #类似于mysql中innodb_buffer_pool_size
wal_level = hot_standby
hot_standby = on # 在备份的同时允许查询
hot_standby_feedback = on # 查询冲突时向主反馈 checkpoint_segments =
checkpoint_timeout = 5min
archive_mode = on
archive_command = '/bin/date' wal_receiver_status_interval = 1s
wal_receiver_timeout = 60s
wal_keep_segments =
max_wal_senders =
max_standby_archive_delay = 300s # 从向主报告状态的最大间隔时间
max_standby_streaming_delay = 30s # 流复制最大延迟 todo:如何得到的?如何处理? # 、reconvery.conf,主从复制的从库必要文件。 standby_mode = 'on'
trigger_file = '/database/pgdata/postgresql.trigger.1949'
primary_conninfo = 'host=10.1.11.73 port=5432 user=replica password=replica keepalives_idle=60'

三、备份

# 单库一致性逻辑备份:每次只导出一个数据库,而且它不会导出角色或表空间(属于集群范围)相关的信息。不能ddl操作
pg_dump -h hostname -p port -U username -f filename.sql -F p -C -E UTF8 --no-tablespaces
--lock-wait-timeout=5s --exclude-table-data=TABLE --exclude-schema=SCHEMA db_name
# --if-exists --clean
# 那么在恢复的时候,如果您仍然拥有旧数据,并且希望恢复整个数据库,则可能需要删除现有数据库,然后重新创建它。需要对应的角色和表空间。
psql -h host -p port -U postgres -d databasename < filename.sql # 整个集群一致性逻辑备份
pg_dumpall -g -h hostname -p port -U postgres -f ./global.dmp
# 仅导出role
pg_dumpall -r -h hostname -p port -U postgres -f ./global.dmp
# 仅导出tablespace
pg_dumpall -t -h hostname -p port -U postgres -f ./global.dmp # 恢复
psql -h host -p port -U postgres < filename.sql ########################################################################
# 、完全停掉数据库,然后使用系统命令例如cp,scp等复制一份数据。
# 、pg_basebackup
要进行手动、一致的物理备份,需要以下步骤:
在备份开始创建一个检查点pg_start_backup(‘some label’)
拷贝目录中的数据
使用命令pg_stop_backup()停止备份
所有这些可以通过运行pg_basebackup实现
pg_basebackup -U postgres -h hostname -x -D datadir
#

四、实例、表空间、数据库、模式、模式对象

# 实例---表空间(pg_default,目录)----数据库(template1)---模式(public)---模式对象
######################################################################################
# 表空间,对应一个目录,是数据存放的物理位置,创建表空间,表空间是一个目录,表空间与数据库是一对多的关系,建议一一对应。
create tablespace tablespace_name with
owner user_name
location '/home/postgres/postgresql11_5432/tablespace_name';
# 创建数据库,一个数据库至少有一个模式,一个数据库在实例中全局唯一。
create database databases_name
owner user_name # 数据库所有者默认是当前创建数据库的角色
template template_name # 默认克隆template1数据库,而他的的默认表空间是pg_default
tablespace tablespace_name;# 默认的表空间是pg_default。在数据库初始化时创建的
encoding utf8
# 一个数据库下面有多个不同模式
# 不同数据库下的模式互不相关
# 建议 数据库的用户分别创建一个与用户名相同的模式, # 创建用户--表空间---数据库---模式(与用户名相同名称),然后将search_path设置为"$user", # mysql的区别

五、流复制原理

# 流复制:、同步流复制和异步流复制原理。(多进程)
# 选择:如果主库和从库不是很忙的话,异步流复制的主从延迟能控制在毫秒级别。 # 流复制:是物理复制,其核心原理是主库将预写日志WAL日志流发送给备库,备库接收到WAL志流后进行重做,而逻辑复制虽然也是基于wal日志,但是他是先解析wal日志后再进行重放,而且ddl语句不会被复制。 # 、流复制只能进行实例级别的复制,而逻辑复制能够进行数据库级别的复制。mysql则也是实例级别。
# 、dml和ddl操作,流复制都会进行复制。但是逻辑复制中,ddl操作从库不会进行复制。。这一点mysql也是具备的。
# 、流复制主库可读写,而从库只允许读,不能写。逻辑复制的从库则可读写。mysql需要设置全局变量read_only,
# 、流复制要求pg大版本必须一致,而逻辑复制则可跨越大版本。mysql中主库和从库版本可以不一致。 # 异步流复制原理
# WAL日志类似于mysql的binlog日志,默认16M大小,
# 主库WAL日志发送进程, 备WAL日志接受进程,
# 异步流复制指主库上提交事务时不需要等待备库接接受写入WAL日志时便返回成功,如果主库异常看机,主库上已提交事务可能还没来得及发送给备库,
就会造成备库数据丢失,备库丢失数据量和WAL复制延迟有关,WAL制延迟越大,备库上丢失的数据量越大。这一点就和mysql基于binlog的复制原理类似。

#主库配置postgresql.conf
synchronous_commit = on /remote_apply
hot standby = on
synchronous_standby_narnes = node # 备库配置recovery.conf
recovery_target_timeli = 'latest' # 从备份的时间线恢复到最近的时间线
standby_mode = on # 启用该数据库为备库
primary_conninfo= 'host=Hostnamer port=5432 user=repuser application_narne=node'
# pg_ctl reload 生效 # 同步流复制:要求主库把WAL日志写入磁盘,同时等待WAL日志记录复制到备库、并且WAL日志记录在任何一个备库写入磁盘后,才能向应用返回Commit结果。
# 一旦所有备库故障,在主库的应用操作则会被挂起,所以此方式建议起码是1主2备。
# 默认从库只读,而mysql需要设置read_only变量
# PostgreSQL使用另一组全局变量,记录同步流复制节点已经接收到的XLOG LSN,以及已经持久化的XLOG LSN。用户在发起提交请求后,backend process除了要判断本地wal有没有持久化,
同时还需要判断同步流复制节点的XLOG有没有接收到或持久化(通过synchronous_commit参数控制)。如果同步流复制节点的XLOG还没有接收或持久化,backend process会进入等待状态。 # 用户发起dml操作的提交后,主库的backend进程,先判断本地wal有没有持久化,同时还要判断任意一个同步流复制节点的XLOG有没有接收到或持久化(使用一组记录同步流复制节点已经接收到的XLOG LSN,以及已经持久化的XLOG LSN全局变量),
# 主库提交事务时,需等待至少一个备库接收WAL并返回确认信息后主库才客户端返回成功。如果是一主一备时,如果从库宕机,则主库无法提交事务,读操作没有任何影响,写操作将处于阻塞状态。因此一主一备的情况下一般都不会采用同步复制方式。
# 一主多从架构的时候,可以设置一个备库为同步备库,其余为异步备库,当同步备库异常宕机后可将其升级为同步备库,这样主库写操作不受影响。
local
remote_write
on
remote_apply

pg总览的更多相关文章

  1. 简析服务端通过GT导入SHP至PG的方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要在浏览器端直接上传SHP后服务端进行数据的自动入PG ...

  2. 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序

    前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来 ...

  3. PG 中 JSON 字段的应用

    13 年发现 pg 有了 json 类型,便从 oracle 转 pg,几年下来也算比较熟稔了,总结几个有益的实践. 用途一:存储设计时无法预料的文档性的数据.比如,通常可以在人员表准备一个 json ...

  4. pg gem 安装(postgresql94)

    使用下面命令安装报错 gem install pg 错误: [root@AS-test middle_database]# gem install pgBuilding native extensio ...

  5. #pg学习#postgresql的安装

    1.按照官网给的步骤编译安装(Mac安装是比较容易的,相比Liunx) cd /Users/renlipeng/Desktop/postgresql-9.5.1 ./configure --prefi ...

  6. PG 函数的易变性(Function Volatility Categories)

    此概念的接触是在做分区表的时候碰到的,分区表按时间字段分区,在查询时当where条件中时间为now()或者current_time()等时是无法查询的,即使进行格式转换也不行,只有是时间格式如‘201 ...

  7. mysql 序列与pg序列的比较

    mysql序列(这里只谈innodb引擎): 在使用mysql的AUTO_INCREMENT时,使用AUTO_INCREMENT的字段必须建有索引,也可以为索引的一部分.当没有索引时会报错:      ...

  8. 使用zfs进行pg的pitr恢复测试

    前段时间做了一下zfs做pg的增量恢复测试,mark一下. 服务器信息: 主机:192.168.173.43 备机:192.168.173.41 主备使用流复制搭建,在备机上面进行了zfs快照备份. ...

  9. 基于Metronic的Bootstrap开发框架总览

    基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理 最近一直很多事情,博客停下来好久没写了,整理下思路,把最近研究的基于Metronic的Bootstrap开发框 ...

随机推荐

  1. 7.RabbitMQ RFC同步调用

    RabbitMQ RFC同步调用是使用了两个异步调用完成的,生产者调用消费者的同时,自己也作为消费者等待某一队列的返回消息,消费者接受到生产者的消息同时,也作为消息发送者发送一消息给生产者.参考下图: ...

  2. SPI 及初始化例子

    概述 时钟相性与极性 CPOL(Clock Polarity)控制空闲状态时SCK的值:CPOL=0,空闲时SCK=0:CPOL=1,空闲时SCK=1. CPHA(Clock Phase)控制何时捕获 ...

  3. POJ2406-Power Strings-KMP循环节/哈希循环节

    Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc&quo ...

  4. C/S通信

    一直在考虑写一个服务端和客户端通信的框架,就现在的需求,打算走http协议. 通信方式打算用Key/Value的形式. 这里面其实还是有很多的问题的,这样的一个通信框架其实是SOA的一部分.其他 但是 ...

  5. JAVA利用JXL导出 EXCEL (在原有的excel模板上把数据导到excel上)

    添加依赖 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>j ...

  6. python 13 字符编码

    转自 http://www.cnblogs.com/BeginMan/p/3166363.html 一.字符编码中ASCII.Unicode和UTF-8的区别 点击阅读:http://www.cnbl ...

  7. Android笔记之从图库选择图片

    Demo链接:https://pan.baidu.com/s/1T4T2pTEswmbcYYfpN3OwDw,提取码:pzqy 参考链接:[Android Example] Pick Image fr ...

  8. verifier 调试内存泄露

    没啥技术含量,都是老段子了, 这次记下来,只是我想说,我也做过,留个念相. 前置条件,电脑里面必须得有Verifier,有了之后把自己的驱动加进去, WinDBG上双机,然后就可以跑了,跑一段时间就可 ...

  9. Springboot整合dubbo搭建基本的消费、提供和负载均衡

    文章目录 1.确定接口 2.创建提供者 2.1 pom配置 2.2dubbo配置文件 2.3 application.properties 2.4 mybatis相关 2.4.1 配置UserMapp ...

  10. 网页设计师神器,快速生成网站配色、字型等风格的工具——Stylify Me

    在设计网页时,最重要的一项便是网页的配色,颜色的使用在网页制作中起着非常关键的作用,不同的网站有着自己不同的风格,也有着自己不同的颜色.今天给大家介绍一个在线生成网站配色的工具——Stylify Me ...