Просмотр базы данных в Heroku

У меня есть приложение Django в настройке Heroku, и база данных начинает собирать данные. Чтобы легче отлаживать вещи, я хотел бы подключить свою машину разработки непосредственно к базе данных. Возможно ли это с Героку?

Ответ 1

Как говорит Кирстен, общие планы базы данных в настоящее время недоступны из-за пределов платформы Heroku (что-то зарезервировано для "производственной" службы Postgres). Однако есть еще несколько вариантов.

Один из основных заключается в том, чтобы вытащить ваши данные и посмотреть на них локально. С помощью Taps rubygem это очень просто:

$ heroku db:pull
...
Receiving schema
Receiving data
8 tables, 591 records
users:         100% |==============================================| Time: 00:00:00
pages:         100% |==============================================| Time: 00:00:00
comments:      100% |==============================================| Time: 00:00:00
tags:          100% |==============================================| Time: 00:00:00
Receiving indexes
Resetting sequences

Есть несколько других доступных вариантов, которые могут сделать эту задачу легче, если вы используете большой набор данных:

# -c, --chunksize SIZE # specify the number of rows to send in each batch
# -d, --debug          # enable debugging output
# -e, --exclude TABLES # exclude the specified tables from the push
# -f, --filter REGEX   # only push certain tables
# -r, --resume FILE    # resume transfer described by a .dat file
# -t, --tables TABLES  # only push the specified tables

Все это можно увидеть в источнике драгоценности героя.

Отводы могут также использоваться вне контекста Heroku. Подробнее читайте в README..

Второй вариант и тот, который гораздо более предпочтителен для больших наборов данных, заключается в использовании дополнения Heroku pgbackups. Это позволит вам создать дамп вашей базы данных, а затем загрузить файл локально для импорта с чистой БД. Это значительно быстрее, чем Taps из-за того, как работает Taps.

Использовать приятно и просто:

$ heroku update

$ heroku addons:add pgbackups
Adding pgbackups to myapp... done

$ heroku pgbackups:capture

DATABASE_URL  ----backup--->  b003

Dump... 2.6MB, done
Upload... 2.6MB, done

$ heroku pgbackups
ID   | Backup Time         | Size    | Database             
-----+---------------------+---------+----------------------
b003 | 2010/10/22 15:16.01 |   2.6MB | SHARED_DATABASE_URL  
b004 | 2010/10/22 15:18.12 | 424.7MB | HEROKU_POSTGRESQL_URL

$ heroku pgbackups:url b004
"http://s3.amazonaws.com/hkpgbackups/[email protected]/b004.dump?AWSAccessKeyId=ABCD1234&Expires=1289261668&Signature=3mMBeKISewgEUDT%2FL5mRz4EYS4M%3D"

Этот последний URL-адрес можно загрузить и импортировать.

Ответ 2

Я не тестировал, но database_url использовал для включения всей конфигурации для базы данных

например

DATABASE_URL = > postgres://name: [email protected]/kjrbnwxjoc

теперь отображение в database.yml

адаптер: postgres база данных: kjrbnwxjoc бассейн: 5 таймаут: 5000 имя пользователя: name пароль: пароль хозяин: ec2-107-22-181-237.compute-1.amazonaws.com

Надеюсь, что это поможет вам до тех пор, пока и геройки не смогут удаленно обращаться к своей базе данных и, надеюсь, не потому, что если они позволят вам получить доступ к db удаленно, вы можете наложить любую нагрузку на свой db. Для цели отладки вы можете использовать xeround для настройки в качестве базы данных для приложения heroku и локального приложения... они дают пробный период.

Спасибо

Ответ 3

Я не думаю, что вы можете использовать конфигурацию для прямого доступа. Согласно документации герою здесь: http://devcenter.heroku.com/articles/database

Могу ли я получить доступ к моей базе данных из другого приложения или хоста? Общая база данных

Нет, подключение к вашей базе данных с компьютеров за пределами Heroku не поддерживается. Мы рекомендуем вам инкапсулировать доступ к данным в API для управления им.

Выделенная база данных

Его можно подключить к нашим выделенным базам данных, используя нашу функцию pg: ingress. Для получения дополнительной информации см. Использование консоли PG.