文件类型和文件块 要了解 Postgres 的存储管理,需要先对 Postgres 的表文件的组织方式、类型有一个简单的了解。 Postgres 中的表文件可能会非常大,在物理存储上会将表文件拆分为多个,每一个表文件通过 segno 来区分。 在 base 目录下,存储了不同 Database 的数据,例如在我的当前环境中,当前的数据库名为 rose,其 oid 为 24582。 所以在 Postgres 数据目录的 base 目录下,就会有对应的 Database 目录,目录名称就是 Oid: 我在当前数据库中有一个表,其名为 articles,我们可以通过 pg_class 可以看到表对应的 relfilenode 是 24588,所以可以到 24582 这个数据库目录中,查看所有表数据相关的文件: 可以看到表数据文件被分为了 24588 24588.1 24588.2 24588.3
1.先切换用户 [root@anode1 ~]# su postgres bash-4.2$ 2.用psql命令登录PostgreSQL控制台 默认的用户和数据库是postgres bash-4.2$ psql could not change directory to "/root" psql (9.2.18) Type "help" for help. postgres=# 3.进入ambari 库 切换数据库,相当于mysql的use dbname postgres=# \c ambari You are now connected to database "ambari" as user " host_id | state ----+-----------------+---------+--------- 1 | 1 | 1 | CURRENT 3 | 1 | 3 | CURRENT 2 | 1 | 2 | CURRENT (3 rows) 11.退出 ambari
/usr/pgsql-10/bin/postgresql-10-setup initdb#启动数据库sudo systemctl start postgresql-10#设置开机自启sudo systemctl enable postgresql-10.service#设置数据库密码su - postgrespsqlALTER USER postgres WITH PASSWORD '111111';#退出数据库 /lib/pgsql/10/data/postgresql.conf#重启postgresql-10systemctl restart postgresql-10打开Navicat测试连接#创建DB1数据库 create database DB1;PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统 POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。
分布式数据库 聊起分布式数据库,大家第一印象估计是 谷歌的 Spanner ,以及 TiDB。 其实还有另外一种分布式 Postgres-XC (目前已经迭代到 PostgreSQL-X2 ),Postgres-XC 数据库系统主要是基于水平可伸缩的share nothing 架构,支持全局事务 国内的代表作是鹅厂的 TBase 基于Postgres-XC 二次开发并且做了很大改进,在性能和功能上有比较大提升。 coordinator:协调节点(简称CN),对外提供接口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;在功能上CN上只存储系统的全局元数据,并不存储实际的业务数据。 TBase 开源是一个值得肯定的事情,文档,社区支持等有一些列的支持动作,但是没有像某些开源分布式数据库做的那么活跃,社区,微信群,各种互联网公司试/使用,考试认证。
之前一直用的是mysql数据库,现在公司要求使用postgres,但是做分页查询的时候,postgres数据库会报错如下: mysql使用的是limit x,y。 而postgres使用方式是limit x offset y,语法不一样就会报这个错误。 这时候我们如果继续想要使用之前的方式操作数据库,我们就需要配置一个叫方言的东西。 以下是postgres方言的配置。 以下是各种数据库方言: 数据库方言(Dialect) DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect
本地数据库安装,默认使用localhost连接,使用ip连接报错问题? 找到数据库安装的路径,在data文件夹下找到pg_hba.conf修改地址访问配置 # TYPE DATABASE USER ADDRESS #host replication postgres 127.0.0.1/32 md5 #host replication postgres IPv6处添加 host all all 192.168.0.0/0 md5 进入命令控制行输入 services.msc 找到数据库服务重启即可
操作系统中的文件 数据库的本质其实就是用来存储数据的,所以免不了和文件系统、存储进行交互,万丈高楼平地起,存储一般是一个数据库的最底层,Postgres 在存储的文件管理方面也有很多的设计与抽象。 在操作系统层面,提供了一些文件操作相关的系统调用(fopen、fclose、fsync 等),我们作为上层使用者,可以直接通过 C 语言库进行调用即可(Postgres 使用 C 语言编写)。 Postgres 的 VFD 作用 Postgres 数据库在运行的过程当中,可能会打开非常多的文件,比如数据表对应的文件,元数据表文件,以及一些在 SQL 运行时打开的临时文件,例如排序、哈希表所需的文件 VFD 的基本工作方式 Postgres 主要通过一个进程私有的数组来维护 VFD,名为 VfdCache。 通过这种方式,Postgres 可以打开远超过系统和进程限制的文件数量,是一个非常精妙的设计。
MySQL和PostgreSQL是两个比较常用的开源数据库系统,在生产环境中比较多的用来替换derby,并且强烈推荐这么做。 下面就来介绍如何配置Pg或MySQL来作为Hive元数据库。 PostgreSQL 安装postgresql 找一个合适的节点 安装 # yum install postgresql postgresql-contrib # su - postgres # initdb 启动: postgres -D /var/lib/pgsql/data or pg_ctl -D /var/lib/pgsql/data -l logfile start 创建HIve 启动Hive 有看到说需要初始化数据库。 以上就是配置Hive元数据库的基本过程,如有疑问,可以给我留言。
问题描述:创建postgres数据库之后,使用pg无法用ip地址登录 1.postgres的安装 官网下载地址(windows版) :https://www.postgresql.org/download 出现的问题 2.1 安装好了postgres数据库之后,发觉我们在pg4客户端上,无法使用ip地址登录,用ip地址登录会显示,找不到user 为.... database ....的错误。 这是因为我们安装数据库之后没有对电脑进行授权,如下: 找到postregs的安装目录,并进入pgsql\Data文件目录下,并进入 pg_hba.conf文件,修改如下配置(这个添加的是给访问权限的 添加配置之后,然后服务管理,重启postgres服务 输入services.msc ? 然后就可以在数据库工具上,以ip地址的形式访问了。 2.2 eclipse端,连接数据库运行出现错误 问题描述: ? 进入pgsql\Data文件目录下,打开postgresql.conf文件,进行如下修改 ?
为容器化的 Postgres 数据库启用 ssl 连接 由于项目安全评测的原因, 需要为 Postgres 数据库启用 ssl 连接, 特记录如下。 使用 openssl 生成 ssl 证书 生成证书需要 openssl 工具, 如果没有安装的话, 可以直接登录进去 Postgres 数据库的容器, 已经内置了 openssl , 而且兼容性也比较好 配置 Postgres 启用 ssl 连接 需要修改 /var/lib/postgresql/data/postgresql.conf 以启用 ssl 连接, 打开这个文件, 搜索 # - SSL - 修改这个文件也是需要重启数据库实例的。 配置客户端使用 ssl 连接数据库 .NET 应用 .NET 应用一般会使用 Npgsql 来连接 Postgres 数据库, 需要修改连接字符串 var builder = new NpgsqlConnectionStringBuilder
openssh-client \ openssh-server \ openssl \ pkg-config \ python3- dev \ python3-pip \ python3-psycopg2 \ python3-psutil \ python3-yaml \ zlib1g-dev 执行编译 拉取 Postgres 的源代码,并进入到 postgres 代码目录中。 如果是拉取最新版本的代码,可以从 Github 上获取: git clone https://github.com/postgres/postgres.git 如果想要获取对应版本的源代码,则可以从 也可以通过 psql 命令连接到数据库中: psql postgres 如何 Debug 有了源码环境之后,其实 Debug 调试就比较简单。
postgres 安装完成默认存在一个 postgres 数据库 psql -U postgres -h 127.0.0.1 -p 5432 -d postgres # -U 用户名 -h 连接地址 - p 端口 -d 数据库名 如果连接失败或者说用户不存在则使用 postgres 用户登录 sudo su - postgres # 切换到 postgres 用户 psql # 登录 \password 不过推荐一个 linux 上更好用的数据库管理软件 dbeaver ,可以连接大多数关系型数据库跟非关系型数据库,但是对于导入导出自我感觉没有 navicat 好用,不过可以使用命令行的导入导出来代替是一样的 su - postgres psql # 此时可以进入到数据库,此时会提醒我们使用 help 查看帮助命令 \l # 查看当前的所有数据库 \c postgres # 进入到 postgres 数据库中 :5432 -e "POSTGRES_PASSWORD=root" postgres 哇塞,数据库跟文件又回来了 ?。
2、事务 Oracle这个数据库会使用事务,那么PostgreSQL也需要激活事务。 3、语法差异 PG中有少数语法不同但功能相同SQL。ACS/pg会自动进行转换,只有大部分函数不同,需要手工进行转换。这个工作由db_sql_prep来完成。 Postgres和Oracle有一个函数以更普遍的方式执行同样的行为: coalesce(expr1, expr2, expr3,....),返回第一个非NULL表达式。 利用大对象的数据库进行备份时,需要将数据库关闭,然后直接备份数据目录。 Don Baccus修改了SOLserver的PG驱动,通过编码/解码二进制文件,从而支持二进制大对象。 Oracle to Postgres data migration and sync:每4-5分钟转换1M个记录。基于触发器的数据库同步方法和并行双向同步方式可帮助轻松地管理数据。
/data/ [root@Centos data]# su - postgres ~~~ #### 3.获取源码 到PostgreSQL[官方网站](https://www.postgresql.org 1 postgres postgres 1192 Feb 9 2021 COPYRIGHT drwxrwxr-x. 3 postgres postgres 87 Feb 9 2021 -13.2 [postgres@Centos postgresql-13.2]$ gmake uninstall ~~~ 手工创建的路径不会删除 #### 3.如何重新编译安装PostgreSQL /postgres/13.2/data -l /home/postgres/startup.log ~~~ #### 3.手工停止PostgreSQL数据库 ~~~bash [postgres@Centos : ~~~ postgres=# \l+ ~~~ ##### 3 查看数据库启动时间信息: ~~~bash postgres=# select pg_postmaster_start_time()
2、事务 Oracle这个数据库会使用事务,那么PostgreSQL也需要激活事务。 3、语法差异 PG中有少数语法不同但功能相同SQL。ACS/pg会自动进行转换,只有大部分函数不同,需要手工进行转换。这个工作由db_sql_prep来完成。 Postgres和Oracle有一个函数以更普遍的方式执行同样的行为:coalesce(expr1, expr2, expr3,....),返回第一个非NULL表达式。 利用大对象的数据库进行备份时,需要将数据库关闭,然后直接备份数据目录。 Don Baccus修改了SOLserver的PG驱动,通过编码/解码二进制文件,从而支持二进制大对象。 Oracle to Postgres data migration and sync:每4-5分钟转换1M个记录。基于触发器的数据库同步方法和并行双向同步方式可帮助轻松地管理数据。
vim load.test 2.写入以下参数 load database from sqlite://path to/xxx.db 这里是Sqlite地址 into postgres ://xxx 这里是数据库连接字符串 with include no drop,truncate, create tables, create indexes, reset sequences ', maintenance_work_mem to '512 MB'; 具体参数说明可以查阅pgloader文档 由于sqlite布尔值实际存储为0、1整形,这样会和其他整形混淆,建议先手动创建数据库表 ,规定好数据类型,然后配置include no drop选项 3.执行脚本 pgloader load.test
下载postgres镜像 $ sudo docker pull postgres 启动postgres容器 $ sudo docker run --name mypostgres -e POSTGRES_PASSWORD =Letmein -d -p 5432:5432 postgres 上面命令会启动一个名为mypostgres的容器,并且设置postgres用户的密码为Letmein。 =Letmein -d -p 5432:5432 -v `pwd`/scripts:/docker-entrypoint-initdb.d postgres 使用命令行连接到postgres数据库 启动一个容器并使用 psql连接到容器 $ sudo docker run -it --rm --link mypostgres postgres psql -h mypostgres -U postgres Password postgres=# \dt postgres=# select 1; 使用nodejs连接到postgres数据库 安装pg库 npm install pg 连接并查询postgres数据库 const
何时使用 Citus 多租户数据库 实时分析 使用注意事项 当 Citus 不合适时 什么是 Citus? Citus 是 Postgres 的开源扩展,它在集群中的多个节点上分布数据和查询。 因为 Citus 是 Postgres 的扩展(不是 fork),所以当您使用 Citus 时,您也在使用 Postgres。您可以利用最新的 Postgres 功能、工具和生态系统。 Citus 将 Postgres 转换为具有分片、分布式 SQL 引擎、引用表和分布式表等功能的分布式数据库。 此外,在多个租户之间共享相同的数据库模式可以有效地利用硬件资源并简化数据库管理。 这里有些例子: 当单节点 Postgres 可以支持您的应用程序并且您不希望增长时 离线分析,无需实时摄取或实时查询 不需要支持大量并发用户的分析应用程序 返回大量数据的 ETL 结果而不是摘要的查询
添加用户、创建数据库 切换超管postgres 用户 sudo su - postgres 给postgres密码:psql -c "alter user postgres with password 'StrongAdminPassw0rd'" 进入命令行:psql,创建数据库、创建用户、用户和库授权 postgres=# CREATE DATABASE mytestdb; CREATE DATABASE postgres=# CREATE USER mytestuser WITH ENCRYPTED PASSWORD 'MyStr0ngP@SS'; CREATE ROLE postgres=# GRANT ALL PRIVILEGES ON DATABASE mytestdb to mytestuser; GRANT 其他命令:列出所有库\l,退出\q 3. md5 #测试环境不要求严格权限是可像如下配置 host all all 0.0.0.0/0 trust 重启数据库
其中 TTRSS 会用到 Postgres 存储数据, 也一并部署到 K8s 容器中. 但是最近, 由于一次错误操作, 导致 Postgres 数据库的 WAL 损坏, Postgres 的 Pod 频繁 CrashBackoffLoop. Pod 稳定运行后, 通过 kubectl exec -it 进入该Pod: k3s kubectl exec -it database-postgres-56cff865bb-92pcx -n rsshub -- /bin/sh 并切换到 postgres 用户: su - postgres Warning: 切换到 postgres 用户方可执行下面命令. 并移除 Deploy 的 command 和 args 后, postgres 即可正常启动.