好的,我已经搬到一家新公司,我看到他们在这里有一个 PostgreSQL 数据库来运行 OpenNMS。
我是一个 MySQL 人,对 PostgreSQL 一点也不熟悉,但我至少学会了如何运行psql和postgres -D进入单用户模式。
无论如何,OpenNMS 崩溃了。我进入并追踪到 PostgreSQL,给出了这个错误:
WARNING: database "template1" must be vacuumed within 965550 transactions
HINT: To avoid a database shutdown, execute a full-database VACUUM in "template1".
Run Code Online (Sandbox Code Playgroud)
它实际上从 100 万开始,而我已经下降到 965500,如您所见。我已经通过登录单用户 ( postgres -D) 并完全运行 Vacuum来达到这一点。现在我希望这可以清理它,但结果正好是 55 行:
WARNING: database "template1" must be vacuumed within 938861 transactions
HINT: To avid a database shutdown, execute a full-database VACUUM in "template1".
WARNING: database "template1" must be vacuumed within 938860 transactions …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 postgresql 支持配置 Dovecot + Postfix + PostfixAdmin。我成功配置了 postfix 以将电子邮件发送到我的域的别名,现在我想在我的服务器上配置实际的邮箱支持。我遵循了 dovecot 2 wiki ( http://wiki.dovecot.org/AuthDatabase/SQL )上数据库支持的配置选项,dovecot 启动时没有错误,但在第一次尝试通过 IMAP 连接时,dovecot 在邮件日志上抱怨:
auth: Fatal: Unknown database driver 'pgsql'
Run Code Online (Sandbox Code Playgroud)
我确定 dovecot 有 postgres 支持,这里是 dovecot --build-options 的输出:
Build options: ioloop=epoll notify=inotify ipv6 openssl io_block_size=8192
Mail storages: cydir dbox maildir mbox mdbox raw shared
SQL driver plugins: mysql postgresql sqlite
Passdb: checkpassword ldap pam passwd passwd-file shadow sql
Userdb: checkpassword ldap(plugin) nss passwd prefetch passwd-file sql
Run Code Online (Sandbox Code Playgroud)
附加信息:
/etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
driver = pgsql
# …Run Code Online (Sandbox Code Playgroud) 我不确定这里发生了什么:
我有一个在 root 下运行良好的备份脚本。它会在正确的目录中生成一个 >300kb 的数据库转储。
但是,当使用完全相同的命令将其作为 cron 作业运行时,会出现一个空的 gzip 文件,其中没有任何内容。
cron 日志显示没有错误,只是命令已运行。
这是脚本:
#! /bin/bash
DIR="/opt/backup"
YMD=$(date "+%Y-%m-%d")
su -c "pg_dump -U postgres mydatabasename | gzip -6 > "$DIR/database_backup.$YMD.gz" " postgres
# delete backup files older than 60 days
OLD=$(find $DIR -type d -mtime +60)
if [ -n "$OLD" ] ; then
echo deleting old backup files: $OLD
echo $OLD | xargs rm -rfv
fi
Run Code Online (Sandbox Code Playgroud)
当改为:
pg_dump -U postgres mydatabasename | gzip -6 > "$DIR/database_backup.$YMD.gz"
Run Code Online (Sandbox Code Playgroud)
同样的事情发生。
和 cron 工作: …
我正在编写代码来存储数据,并希望存储 10 亿到 100 亿条记录,甚至更多。最重要的是速度(接近 10000 - 20000 / 每秒记录)、空间使用和防碰撞。现在我一直在玩 MySQL 的 MyISAM,它的运行速度非常快,并且与我们所需的速度相匹配。MyISAM 也有最佳的空间使用率,MySQL 数据文件夹中的数据库文件几乎等于我插入的数据量,例如,对于 100000 条记录,每条记录 30 个字符,只占用了 3 MB。但唯一的问题是它不是 ACID 并且会在崩溃时导致数据丢失。
所以我想知道任何替代方案(我什至不介意将数据库软件更改为其他任何东西)可以帮助我们存储如此多的数据并快速存储它们。
我已经尝试过 MySQL INNODB,它的插入非常慢。我每秒只能达到 800 - 1000 / 条记录。此外,在 INNODB 中存储数据的空间量非常大。存储相同的 100000 条记录(每条 30 个字符)需要将近 8 MB。
我也尝试过使用 MongoDB 作为替代方案,但它再次需要太多空间来存储相同的数据。
甚至 SQLITE3 DB 写入 100000 条记录也非常慢。我在 for 循环中用 PHP 尝试了这个。它还漏掉了大约 20 条记录,并给出了数据库不可用的错误。
所以我想知道任何可以满足我要求的开源数据库软件。我听说 MariaDBs ARIA 符合 ACID。这是真的吗?或者 PostgreSQL 也是一个很好的快速选择,具有最佳空间利用率。
我对任何快速、利用最佳空间且防 CRASH 的解决方案持开放态度。期待回复。
=== MariaDB Aria 的更新 === 在插入速度和空间方面,它甚至比 InnoDB 还要糟糕。插入相同数据所需的时间是 InnoDB 的 1.5 倍,而 MyISAM 使用的空间是其近 2.5 …
我有一个全新的 Debian 6.0 安装。我已经安装了 build-essential 并添加了:
deb http://backports.debian.org/debian-backports squeeze-backports main
Run Code Online (Sandbox Code Playgroud)
在 /etc/apt/sources.list
我现在尝试安装 Postgres 9.1,但出现以下错误:
The following packages have unmet dependencies:
postgresql-9.1 : Depends: libpq5 (>= 9.1~) but 8.4.12-0squeeze1 is to be installed
Depends: postgresql-client-9.1 but it is not going to be installed
Depends: postgresql-common (>= 115~) but 113 is to be installed
Run Code Online (Sandbox Code Playgroud)
在安装 postgres 之前是否还有其他东西要安装?
我们将扩展 PostgreSQL 服务器的存储,我们正在考虑的一件事是使用 SSD(英特尔 520 系列)而不是旋转磁盘(10k RPM)。每 GB 的价格是可比的,我们期望提高性能,但是我们担心使用寿命,因为我们的数据库使用模式非常注重写入。我们还担心断电情况下的数据损坏(由于 SSD 写入缓存未正确刷新)。
我们目前使用 RAID10,在控制器中配置了 4 个活动硬盘 (10k 146GB) 和 1 个备用硬盘。它是带有 P410 智能阵列控制器和 BBWC 的 HP DL380 G6 服务器。
什么更有意义:将驱动器升级到 300GB 10k RPM 还是使用 Intel 520 系列 SSD (240GB)?
我从官网得到了 pgAdminIII-1.14 源代码。
现在我正在尝试在 Debian Squeeze 机器上编译它。
起初我是这样做的:
./configure
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
configure: error: you must specify a valid PostgreSQL 8.4+ installation with --with-pgsql=DIR
Run Code Online (Sandbox Code Playgroud)
我不知道它需要哪个目录,我试过:
/usr/lib/postgresql/9.1/bin
Run Code Online (Sandbox Code Playgroud)
这是我有“psql”的目录,但它不是好的目录。
我该如何解决?
如果我有以下内容 pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust
local all all ident
host rt4 rt_user 127.0.0.1/32 md5
host rt4 rt_user 127.0.0.1/32 password
Run Code Online (Sandbox Code Playgroud)
当我没有任何东西时pg_ident.conf,第二条local规则就过时了吗?
第一host行是否被第二行推翻?
由于客户端(Web 应用程序)将使用 连接到数据库localhost,那么我选择md5还是 有关系password吗?我的意思是,身份验证方法是一个抽象层,所以客户端不知道密码是如何检查的?
我在亚马逊云中运行我的数据库服务器,并且我在单独的 EBS 卷上有数据库文件。在备份/恢复操作方面,我发现只进行文件系统级别的备份而不是 sql 转储要简单得多,因为我几乎可以立即创建备份并从中恢复。
如果我坚持只使用文件系统级备份,是否有任何我可能会忽略的问题?
在 Ubuntu 12.04 上运行 PostgreSQL 9.1(今年晚些时候更新到 9.3)
我有一个关于停止数据库容器的问题。
sudo docker run --name db -d asg1612/postgresql
/usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf
并且目录/var/lib/pgdata被创建为容器卷
我停止容器:
须藤泊坞窗停止数据库
数据库会正常停止吗?
我会有损坏的数据吗?