【问题标题】:The command I run to restart PostgreSQL deletes all my data. How should I restart to keep my data?我运行的重新启动 PostgreSQL 的命令会删除我的所有数据。我应该如何重新启动以保留我的数据?
【发布时间】:2015-09-17 02:27:59
【问题描述】:

我最大的问题是每次关闭笔记本电脑时都会丢失所有数据。我刚开始使用 postgres 学习 Rails。

那么如何在终端上正确启动和停止 postgres 数据库。

我在 Mac OS X 上。

这是我用来启动它的:

postgres -D /usr/local/var/postgres/data 

然后停止它:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8 but i think what it does it removes it so i lose all my data 

【问题讨论】:

  • 使用pg_ctl 命令? pg_ctl stop.
  • postgres -D /usr/local/var/postgres/data 这是我用来启动它并用来停止它的 rm -rf /usr/local/var/postgres && initdb /usr/ local/var/postgres -E utf8 但我认为它会删除它,所以我丢失了所有数据
  • 是的,rm 删除数据。
  • 永远不要在不知道它做什么的情况下运行命令。
  • 你的 Postgres 服务器是如何启动的?如果它在系统中注册为服务,那么彻底关闭操作系统也应该彻底关闭 Postgres - 至少在 Windows 和 Linux 上会发生这种情况。由于 MacOS 本质上是一个“Unix 风格”的操作系统,因此它也应该在那里工作(我从未使用过 Mac)。你是如何安装 Postgres 的?如何关闭 Mac?

标签: database postgresql ruby-on-rails-4


【解决方案1】:

简答(如果您没有时间):

pg_ctl stop -m immediate

这应该会立即关闭,并隐含自动恢复(不会丢失数据)。但并不总是建议这样做,请阅读下文了解原因。

长答案:需要注意两点: 1.您应该查找here。 -m 选项允许三种模式。根据这是重型生产箱还是您的本地系统,您需要在三个选项(快速/智能/即时)之间进行选择。如果您在此页面上搜索“立即”一词,则会给出所有三个的含义。 2. 尽管如此,请阅读Description 部分,了解模式以更清楚地了解为什么没有一种解决方案可以解决所有问题。

【讨论】:

    【解决方案2】:

    您正在删除您的 PostgreSQL 安装,然后创建一个新安装。

    你的命令:

    rm -rf /usr/local/var/postgres &&
    initdb /usr/local/var/postgres -E utf8 &&
    postgres -D /usr/local/var/postgres/data
    

    做:

    • 删除 PostgreSQL 数据目录,删除所有数据
    • 创建一个新的空白 PostgreSQL 实例
    • 启动 PostgreSQL 实例

    显然这不是你想要的。

    您应该改用记录在案的方法来启动和停止您的特定 PostgreSQL 安装。由于您使用的是/usr/local/var/postgres,我猜您使用的是 Homebrew 来安装 PostgreSQL,所以请参阅this answer。基本上,安装一个launchd plist 文件并使用launchd。

    不要运行不懂的命令,阅读文档;这样的问题会少一些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      相关资源
      最近更新 更多