Liangchao's blog
一个技术商人的笔记
github
|
email
Toggle navigation
Liangchao's blog
主页
归档
关于我
津ICP备17001227号
Linux-把Rails项目的postgresql迁移至华为 RDS
2017-11-03 12:21:36
177
0
0
liangchaob@163.com
# 摘要 使用公有云数据库RDS如今变得十分流行,这让我们可以不必自己管理配置数据库把锅甩给云服务商,Rails 项目作为最常见的甩锅侠,使用公有云的 RDS 托管就十分适合.本文介绍如何把 Rails 正在使用的 postgresql 迁移到 RDS 上. # 步骤 先将生产环境的本地数据库备份,参数填写本地数据库的`用户名`,`主机地址`,`端口号`,`备份出来的文件名`,`数据库名字` ``` $ pg_dump --username=postgres --host=127.0.0.1 --port=5432 --format=plain --file=backup.sql itcatalog ``` 检查备份好的数据叫做 `backup.sql` ``` $ ll backup.sql -rw-rw-r-- 1 alan alan 147400 Nov 3 10:50 backup.sql ``` 在华为公有云上采购 RDS 实例,注意尽可能和其相连的 ECS主机放在同一大区,生效通常需要10分钟左右  生效后,可以看到自己RDS 实例的地址和端口号,华为的 postgres 默认端口号是8635  回到刚才的备份数据库的 ECS 主机上,使用如下命令在 RDS 上建库,这里面分别需要填写`主机名`,`端口号`和要建立的数据库名字 `itcatalog`,注意RDS实例管理时候要用 root 进行管理,默认建库时候连的 db 名就是 `postgres` ``` $ psql --host=192.168.1.162 --port=8635 --username=root --dbname=postgres -c "create database itcatalog; " Password for user root: CREATE DATABASE ``` 建立成功后,就可以将刚才的 backup.sql 导入了 ``` $ psql --host=192.168.1.162 --port=8635 --username=root --dbname=itcatalog --file=backup.sql ``` 如果顺利会闪出一些导入的 log.数据成功导入后,下一步可以更改生产环境主机的设置了 先备份生产环境的Rails 项目db 配置 `config/database.yml` ``` $ cp config/database.yml config/database.yml.bak ``` 修改该配置为 RDS 地址 ``` production: adapter: postgresql encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> database: itcatalog username: root password: P@ssw0rd port: 8635 host: 192.168.1.162 timeout: 5000 ``` 完成后重启服务 ``` $ sudo service nginx restart ``` 并尝试从外部对站点进行数据写入,然后登入数据库看是否数据库数据有变化 ``` $ psql --no-readline -U root -h 192.168.1.162 -p 8635 -d itcatalog -W itcatalog=> \l itcatalog List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------+----------+-------------+-------------+------------------- itcatalog | root | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (1 row) itcatalog=> SELECT * FROM upload_files; id | name | description | attachment | file_format | created_at | updated_at | year | user_id | is_official | download_count | saved_count ----+-----------------------------------------------+-------------+---------------------------------------------------+-------------+----------------------------+----------------------------+------+---------+-------------+----------------+------------- 17 | 平安健康IPv6测试项目 | | 平安健康IPv6测试项目.doc | doc | 2017-11-01 05:38:06.420561 | 2017-11-02 22:40:46.784045 | 2017 | 455 | t | 0 | 0 7 | 中原银行数据中心建设 | | 中原银行数据中心建设.ppt | ppt | 2017-11-01 04:54:21.818246 | 2017-11-02 22:41:03.414187 | 2017 | 455 | t | 0 | 0 ``` 如果不成功,可以从开发环境重新 deploy 一遍 rails 项目,再检查问题 ``` $ cap production deploy ```
上一篇:
Windows-Chrome浏览器的配置文件与组策略
下一篇:
Rails-Gem-WillPaginate分页
0
赞
177 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册