Настройка Backup gem в Rails 5.2 - Выполнение резервного копирования базы данных PostgreSQL - PullRequest
0 голосов
/ 03 октября 2018

Я хотел бы выполнять регулярное резервное копирование базы данных PostgreSQL, в настоящее время я хочу использовать гем Backup и Whenever.Я относительно новичок в Rails и Postgres, поэтому есть все шансы сделать очень простую ошибку ...

В настоящее время я пытаюсь настроить процесс на своей машине разработки (MAC), но продолжаю получатьошибка при попытке подключиться к базе данных.

В окне терминала я выполнил следующие действия для проверки сведений о моей базе данных и подключении:

psql -d my_db_name
my_db_name=# \conninfo
You are connected to database "my_db_name" as user "my_MAC_username" via socket in "/tmp" at port "5432".
\q

Я также вручную создалрезервное копирование базы данных:

pg_dump -U my_MAC_username -p 5432 my_db_name > name_of_backup_file

Однако, когда я пытаюсь повторить это в db_backup.rb (созданном из гема Backup), я получаю следующую ошибку:

[2018/10/03 19:59:00][error] Model::Error: Backup for Description for db_backup (db_backup) Failed!
 --- Wrapped Exception ---
 Database::PostgreSQL::Error: Dump Failed!
 Pipeline STDERR Messages:
 (Note: may be interleaved if multiple commands returned error messages)

 pg_dump: [archiver (db)] connection to database "my_db_name" failed: could not connect to server: No such file or directory
 Is the server running locally and accepting
 connections on Unix domain socket "/tmp/pg.sock/.s.PGSQL.5432"?
 The following system errors were returned:
 Errno::EPERM: Operation not permitted - 'pg_dump' returned exit code: 1

Содержимое моего db_backup.rb:

Model.new(:db_backup, 'Description for db_backup') do

  ##
  # PostgreSQL [Database]
  #
  database PostgreSQL do |db|
    # To dump all databases, set `db.name = :all` (or leave blank)
    db.name               = "my_db_name"
    db.username           = "my_MAC_username" 
    #db.password           = "" 
    db.host               = "localhost"
    db.port               = 5432
    db.socket             = "/tmp/pg.sock"
    # When dumping all databases, `skip_tables` and `only_tables` are ignored.
    # db.skip_tables        = ["skip", "these", "tables"]
    # db.only_tables        = ["only", "these", "tables"]
    # db.additional_options = ["-xc", "-E=utf8"]
  end
end

Не могли бы вы подсказать, что мне нужно сделать, чтобы решить эту проблему и выполнить такое же резервное копирование с помощью db_backup.rb кода * 1023?*

1 Ответ

0 голосов
/ 04 октября 2018

В случае, если кто-то застрянет в подобной ситуации, ключом к разблокировке этой проблемы были строки:

psql -d my_db_name
my_db_name=# \conninfo

Я понял, что мне нужно изменить db.socket = "/tmp/pg.sock" на db.socket = "/tmp", что, кажется,чтобы решить проблему.

Однако я не понимаю, почему путь на моем компьютере отличается от пути по умолчанию, так как я ничего не делал, чтобы настроить установку каких-либо драгоценных камней или Postgres App

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...