我已经configurationcron使用以下规则每天调用pg_dump: # xyz database backups: 00 01 * * * root umask 077 && pg_dump –user=xyz_system xyz | gzip > /var/xyz/backup/db/xyz/`date -u +\%Y\%m\%dT\%H\%M\%S`.gz 基本上,它的工作。 数据库增长速度相对较快,但指数不是很大。 目前压缩转储大约需要160MB。 当数据库被转储时,系统开始抓取。 我使用top命令看到的平均负载大约是200, 200, 180 。 基本上服务器很难响应。 第一个问题是如何确定瓶颈在哪里。 I / O操作繁重导致性能下降吗? 是由表locking问题引起的? 也许这是一个记忆问题? pg_dump命令的输出pg_dump送到gzip命令。 它是顺序的,即整个转储放在内存(交换问题?),然后压缩或并发(即gzip压缩得到的东西,等待更多)? 可能是由其他因素引起的? 第二个问题是如何使倾销行为对系统的主要function不那么侵犯。 据我了解,由于数据库的完整性,转储不会花费太多时间。 有表写锁,等等。我可以做些什么来限制这个问题(或考虑到数据库的增长而延迟)。 第三个问题 :现在是不是应该学习更高级的数据库configuration了? 系统工作正常,当数据库备份不执行,但也许数据库转储问题是传入问题的第一个症状?
我有一个问题让postgres接受来自我的其他服务器的连接。 这是我的设置: APP06 (10.55.129.31):运行Postgres的服务器 APP05 (10.55.129.30):服务器试图连接到Postgres 这是我的/var/lib/pgsql/data/pg_hba.conf文件在app06上 : # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 10.55.129.30/32 trust host all all 10.55.129.31/32 trust host all all 0.0.0.0/0 trust # IPv6 local connections: host all all ::1/128 trust […]
或者我需要获得企业版本吗? 这是因为我在MySQL的网站上发现了这个: 如果您正在运行MySQL生产级系统,我们希望将您的注意力引向MySQL企业版的产品说明: http://mysql.com/products/enterprise/ 当我检查function时,社区版似乎不支持事务,而企业版则不支持。 如果社区版不适合生产,那么看起来posgresql可能是我的出路,因为它支持事务处理,而且完全是开源的。 如果我必须改变,sql语法是否需要改变(很多)?
我很好奇,如果有人真的在生产容器中运行PostgreSQL的某种forms的分布式文件系统 – GlusterFS最好,或任何东西。 我目前正在运行Mesos / Marathon。 如果PostgreSQL节点出现故障,Marathon只会在其他节点上启动另一个PostgreSQL实例,如果正确完成(服务发现和应用程序从数据库连接丢失中恢复),则将实现最终容错。 我知道PostgreSQL有自己的HA解决scheme,比如日志传送和热备份备份,但是还是需要解决什么时候从主机切换到从机,如何正确执行等问题。 那么,如何在GlusterFS或类似的产品上运行PostgreSQL呢? 如果是这样,它是稳定的吗? 性能如何?
有没有办法检查PostgreSQL数据库的完整性和一致性? 我知道SQL Server的DBCC CHECKDB ,不知道是否有类似于PostgreSQL的东西。
我试图在Ubuntu服务器10.04(64位)上启动postgresql 8.4。 首先,我尝试了: su -c 'pg_ctl start -D /home/postgres -l /home/postgres/serverlog' –preserve-environment postgres在init.d/rc.local的结尾处,无济于事。 serverlog文件甚至不在系统上。 然后我试着运行update-rc.d postgresql-8.4 defaults , System start/stop links for /etc/init.d/postgresql-8.4 already exist. 一个相关的信息是通过运行su -c 'pg_ctl start -D /home/postgres -l /home/postgres/serverlog' –preserve-environment postgres作为root用户而没有–preserve-environment标志,它不会'不承认pg_ctl。 否则,服务启动,我可以连接到数据库。 但即使在保留环境的情况下,在init文件中运行时服务也不会启动。 任何线索? 谢谢! 维克。
我正在用Postgres数据库开发一个运行django的网站。 我在本地开发,并有3台VPS服务器用于testing,分期和生产。 每个VPS运行自己的Linux / Apache / Python / Postgres堆栈,并拥有自己的数据库。 我已经开始发现,通过使用git进行连续部署,暂存实际上变得多余(从分段到生产需要交换需要重新启动VPS的IP地址)。 我唯一能做的就是有助于进行复杂的数据库迁移,即使这样,在分区和生产过程中的Postgres数据库也不会镜像,那么在迁移之间input的数据就会丢失。 我的问题是我应该在分期和生产之间镜像Postgres吗? (如果是这样,怎么样?)我做对了吗? 我无法find有关Web应用程序部署最佳实践的任何地方的文档。
题 我怎样才能使这个post中描述的查询更快,尤其是通过使用可用的RAM来制作PostgreSQL? – 请注意,我试图适当地configurationeffective_cache_size和shared_buffers。 见下文。 背景 我必须定期join一个约2.6亿行表(coreg_master),并附带新的数据。我已经对表进行分区,以允许每个分区适合内存。 我当然也有适当的索引。 但是,将分区表分别与其他(小得多)表连接时,会在磁盘上执行完全随机的IO操作。 这是由于在大型表上嵌套循环索引扫描,由于我们没有很好的磁盘设置,所以速度很慢。 我希望它使用所有可用的内存来caching大的分区表,我知道应该由Linux内核/文件系统本身来完成。 但它仍然不会将表加载到RAM中,尽pipe它适合。 我想这是因为访问模式是不连续的,因此不会触发caching? 我不知道。 查询计划和configuration参数如下。 表结构 这是我的大桌子coreg_master的分区之一。 分区表被命名为coreg_a,coreg_b等。 \d coreg_a Table "public.coreg_a" Column | Type | Modifiers ————-+——————-+———————————————————– id | integer | not null default nextval('coreg_master_id_seq'::regclass) first_name | character varying | last_name | character varying | phone | character varying | city | character varying […]
我刚刚安装了postgresql,php5,尤其是使用Ubuntu的突触应用程序的PhpPgAdmin。 PHP运行良好,http服务器(lighttpd)工作正常,我可以做一个命令行。 PhpPgAdmin唯一还是一个谜,就是如何启动它才能使用它? 我对启动PhpPgAdmin的正确手段毫无头绪, 它没有在网站上的任何地方解释它。 我尝试在bash命令提示符下inputphppgadmin,然后在浏览器的地址栏中input“ http:// phppgsdmin / ”和“ http:// localhost / phppgadmin ”作为狂野的猜测 – 没有任何反应。 什么秘密? 顺便说一句,我只提供本地主机上的HTTP,做纯粹的私人网站开发。
我想用Django的postgresql,所以做了以下几点: sudo apt-get install libpq-dev python-dev sudo apt-get update workon myenv sudo pip install psycopg2 并正确configuration我的settings.py后,我运行 ./manage.py syncdb 但是抛出一个exception: django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2 数据库configuration: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'mydb', 'USER': 'postgres', 'PASSWORD': 'password1234', 'HOST': 'localhost', 'PORT': '', } }