Просмотр базы данных в Heroku
У меня установлено приложение Django на Heroku, и база данных начинает собирать данные. Для более легкой отладки я бы хотел подключить машину для разработки непосредственно к базе данных. Можно ли это сделать с Heroku?
3 ответа
Как говорит Кирстен, планы совместной базы данных в настоящее время недоступны извне платформы 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.
Отводы также можно использовать вне контекста Heroku. Смотрите README для получения дополнительной информации.,
Второй вариант, который гораздо предпочтительнее для больших наборов данных, - это использование дополнения Heroku pgbackups. Это позволит вам создать дамп вашей базы данных, а затем загрузить файл локально для импорта в чистую БД. Это значительно быстрее, чем тапы из-за способа работы тапов.
Использовать приятно и просто:
$ 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/app1234567@heroku.com/b004.dump?AWSAccessKeyId=ABCD1234&Expires=1289261668&Signature=3mMBeKISewgEUDT%2FL5mRz4EYS4M%3D"
Этот последний URL может быть загружен и импортирован.
Я не проверял но database_url использовать, чтобы включить всю конфигурацию для базы данных
например
DATABASE_URL => postgres://name:password@ec2-107-22-181-237.compute-1.amazonaws.com/kjrbnwxjoc
теперь отображается на database.yml
адаптер: база данных postgres: пул kjrbnwxjoc: 5 тайм-аут: 5000 имя пользователя: имя пароль: пароль хост: ec2-107-22-181-237.compute-1.amazonaws.com
Надеюсь, что это поможет вам до тех пор, пока heroku не разрешит удаленный доступ к своей базе данных, и надеюсь, что нет, потому что если они позволили вам получить удаленный доступ к БД, то вы можете наложить любую нагрузку на их БД. В целях отладки вы можете использовать xeround для настройки в качестве базы данных для приложения heroku и локального приложения... они дают пробный период.
Спасибо
Я не думаю, что вы можете использовать конфиг для прямого доступа. Согласно документации к героку здесь: http://devcenter.heroku.com/articles/database
Могу ли я получить доступ к своей базе данных из другого приложения или хоста? Общая база данных
Нет, подключение к вашей базе данных с компьютеров за пределами Heroku не поддерживается. Мы рекомендуем инкапсулировать доступ к данным в API, чтобы манипулировать им.
Выделенная база данных
Можно подключиться к нашим выделенным базам данных, используя нашу функцию pg:ingress. Пожалуйста, смотрите использование консоли PG для получения дополнительной информации.