linux 下怎么看postgresql安装到哪个目录了

linux 下怎么看postgresql安装到哪个目录了,第1张

进入/opt/pgsql-917目录可以看到安装后的postgresql的文件

linux下安装PostgreSQL数据库步骤如下:

0编译环境

Linux: CentOS 55

gcc: 412

1 安装PostgreSQL

1) 解压postgresql-917tarbz2

#tar jxvf postgresql-917tarbz2

2) 进入解压后的postgresql-917目录

#cd postgresql-917

3) 编译postgresql源码

#/configure --prefix=/opt/pgsql-917

#make

#make install

至此,完成postgresql的安装。进入/opt/pgsql-917目录可以看到安装后的postgresql的文件。

#ls /opt/pgsql-917

2创建postgresql数据库

1) 创建postgres用户

#useradd postgres

修改postgres密码

#passwd postgres

2) 设置postgres用户的环境变量

切换到postgres用户

#su - postgres

进入postgres的主目录

#cd ~

编辑~/bash_profile文件

#vi ~/bash_profile

设置以下的环境变量

export PGHOME=/opt/pgsql-917

export PGDATA=~/data

保存,退出vi。执行以下命令,使环境变量生效

#source ~/bash_profile

3) 初始化postgres数据库

#initdb

至此,完成postgres数据库的初始化。

4) 启动postgres数据库实例

#pg_ctl start

可以看到postgresql数据库实例已经启动,通过下面的命令可以查看系统中运行的postgres进程

#ps -ef | grep postgres

5) 连接postgresql数据库

#psql -h 127001 -d postgres -U postgres

6) 停止postgresql数据库实例

#pg_ctl stop

#ps -ef |  grep postgres

可以看到已经没有postgres进程

3 设置PostgreSQL开机自启动

PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下

linux文件即为linux系统上的启动脚本

1)修改linux文件属性,添加X属性

#chmod a+x linux

2) 复制linux文件到/etc/initd目录下,更名为postgresql

#cp linux /etc/initd/postgresql

3)修改/etc/initd/postgresql文件的两个变量

prefix设置为postgresql的安装路径:/opt/pgsql-912

PGDATA设置为postgresql的数据目录路径:

4) 执行service postgresql start,就可以启动PostgreSQL服务

#service postgresql start

5)设置postgresql服务开机自启动

#chkconfig --add postgresql

执行上面的命令,就可以实现postgresql服务的开机自启动。

在 OpenTX 219 中,数据库连接失败可能是由于多种原因引起的。以下是一些可能的解决方法:

检查数据库地址和端口号是否正确,确保网络连接正常。

检查数据库的用户名和密码是否正确,确保有权限访问数据库。

检查数据库是否正在运行,并且正在监听指定的端口号。

如果使用的是 MySQL 数据库,尝试在终端中执行以下命令来检查是否能够连接到数据库:

mysql -h hostname -u username -p

其中 hostname 是数据库服务器的地址,username 是数据库用户名。

如果使用的是 PostgreSQL 数据库,可以尝试在终端中执行以下命令来检查是否能够连接到数据库:

psql -h hostname -U username -d databasename

其中 hostname 是数据库服务器的地址,username 是数据库用户名,databasename 是要连接的数据库名称。

如果以上方法都无法解决问题,可以尝试查看系统日志或联系数据库管理员以获取更多帮助。

一、 PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。

二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(55版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。

三、PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。

四、PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的 *** 作,这个和PGSQL的MVCC实现有关系。

五、PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。

六、PG有极其强悍的 SQL 编程能力(9x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法,PG里叫window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MYSQL就差的很远,很多分析功能都不支持,腾讯内部数据存储主要是MYSQL,但是数据分析主要是HADOOP+PGSQL。

七、PG 的有多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便, *** 作非常简单。

八、一般关系型数据库的字符串有限定长度8k左右,无限长 TEXT 类型的功能受限,只能作为外部大数据访问。而 PG 的 TEXT 类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。

九,对于WEB应用来说,复制的特性很重要,mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate,是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时,pgsql还提供stream复制。

十,pgsql对于numa架构的支持比mysql强一些,比MYSQL对于读的性能更好一些,pgsql提交可以完全异步,而mysql的内存表不够实用(因为表锁的原因)

最后说一下我感觉 PG 不如 MySQL 的地方。

第一,MySQL有一些实用的运维支持,如 slow-querylog ,这个pg肯定可以定制出来,但是如果可以配置使用就更好了。

第二是mysql的innodb引擎,可以充分优化利用系统所有内存,超大内存下PG对内存使用的不那么充分,

第三点,MySQL的复制可以用多级从库,但是在92之前,PGSQL不能用从库带从库。

第四点,从测试结果上看,mysql 55的性能提升很大,单机性能强于pgsql,56应该会强更多

第五点,对于web应用来说,mysql 56 的内置MC API功能很好用,PGSQL差一些。

另外一些:

pgsql和mysql都是背后有商业公司,而且都不是一个公司。大部分开发者,都是拿工资的。

说mysql的执行速度比pgsql快很多是不对的,速度接近,而且很多时候取决于你的配置。

对于存储过程,函数,视图之类的功能,现在两个数据库都可以支持了。

另外多线程架构和多进程架构之间没有绝对的好坏,oracle在unix上是多进程架构,在windows上是多线程架构。

很多pg应用也是24/7的应用,比如skype 最近几个版本VACUUM基本不影响PGSQL 运行,80之后的PGSQL不需要cygwin就可以在windows上运行。

至于说对于事务的支持,mysql和pgsql都没有问题。

启动数据库服务器(posgres用户)

[postgres@localhost bin]$ postgres D /opt/postgresql/data/ > /opt/postgresql/log/pg_serverlog >& &

[]

当然如果设置了环境变量

PGDATA=/opt/postgresql/data

export PGDATA

后可使用pg_ctl工具进行启动:

[postgres@localhost log]$ pg_ctl start l /opt/postgresql/log/pg_serverlog

pg_ctl: another server might be running; trying to start server anyway

pg_ctl: could not start server

Examine the log output

[postgres@localhost log]$

因为之前已经启动所以打印another server might be running此时查看日志有如下信息:

[postgres@localhost log]$ cat pg_serverlog

FATAL: lock file postmasterpid already exists

HINT: Is another postmaster (PID ) running in data directory /opt/postgresql/data

[postgres@localhost log]$

当然最简的启动方式是

[postgres@localhost ~]$ pg_ctl start

server starting

[postgres@localhost ~]$ LOG: database system was shut down at :: CST

LOG: autovacuum launcher started

LOG: database system is ready to accept connections

如果要在 *** 作系统启动时就启动PG可以在/etc/rcd/rclocal 文件中加以下语句

/opt/postgresql/bin/pg_ctl start l /opt/postgresql/log/pg_serverlog D /opt/postgresql/data

关闭服务器

最简单方法

[postgres@localhost ~]$ pg_ctl stop

waiting for server to shut down done

server stopped

与Oracle相同在关闭时也可采用不同的模式简介如下

SIGTERM

不再允许新的连接但是允许所有活跃的会话正常完成他们的工作只有在所有会话都结束任务后才关闭这是智能关闭

SIGINT

不再允许新的连接向所有活跃服务器发送 SIGTERM(让它们立刻退出)然后等待所有子进程退出并关闭数据库这是快速关闭

SIGQUIT

令 postgres 向所有子进程发送 SIGQUIT 并且立即退出(所有子进程也会立即退出)而不会妥善地关闭数据库系统这是立即关闭这样做会导致下次启动时的恢复(通过重放 WAL 日志)我们推荐只在紧急的时候使用这个方法

SIGKILL

此选项尽量不要使用这样会阻止服务器清理共享内存和信号灯资源那样的话你只能在启动服务器之前自己手工做这件事另外SIGKILL 直接把 postgres 杀掉而不会等它把信号中继给它的子进程因此我们还需要手工杀掉每个独立子进程

使用方法举例

[postgres@localhost ~]$ pg_ctl stop o SIGTERM

LOG: received smart shutdown request

LOG: autovacuum launcher shutting down

waiting for server to shut downLOG: shutting down

LOG: database system is shut down

done

server stopped

[postgres@localhost ~]$

最快速关闭方法kill postgres 进程

[postgres@localhost ~]$ kill INT `head /opt/postgresql/data/postmasterpid`

[postgres@localhost ~]$ LOG: received fast shutdown request

LOG: aborting any active transactions

LOG: autovacuum launcher shutting down

LOG: shutting down

LOG: database system is shut down

附postgre启动后的进程如下:

[postgres@localhost ~]$ ps ef|grep post

root : pts/ :: su postgres

postgres : pts/ :: bash

postgres : pts/ :: /opt/postgresql/bin/postgres

postgres : :: postgres: writer process

postgres : :: postgres: wal writer process

postgres : :: postgres: autovacuum launcher process

postgres : :: postgres: stats collector process

postgres : pts/ :: ps ef

postgres : pts/ :: grep post

[postgres@localhost ~]$

以上就是关于linux 下怎么看postgresql安装到哪个目录了全部的内容,包括:linux 下怎么看postgresql安装到哪个目录了、openTX2.1.9数据库连接,目前连不上数据库了、为什么postgrelsql的性能没有mysql好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9475328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存