1. Postgres 資料參考:
- pg操作手冊:http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
- psql命令
:https://ywnz.com/linux/psql/
2. 消息推送用戶標簽遷移測試准備工作
2.1. 前提:
- 線上sql已經開發完成
- 測試數據庫環境搭建完成
2.2. 主要工作:
2.2.1. mysql2udw工具暫時無法指定字段,源表和目標表表字段不一致報錯。
- ods表結構:從源庫導入
- 中間表表結構:從線上pg庫導入
2.2.2. 准備mysql2udw.sh測試調度任務腳本:
- 保留用戶標簽需要的源表和數倉中間表:
文檔底部列出用戶標簽的相關的源表和中間表清單:
2.2.3. 准備ods表抽數配置文件yaml,修改環境信息和抽數方式
- 只導表數據,全量抽取,抽取前清空數據
supress_data: false
supress_ddl: true
force_truncate: true
2.2.4. 備注
-
開發負責的表均替換成正式命名的表:
tag_user_temp
tag_member_temp
tag_user
-
中間表:f_order_item,d_user,f_user_list有調整(刪除跟用戶標簽取值不相關的源表),其余中間表etl腳本與線上一致。
etl腳本需要單獨從git_lab:bi_etl_dev/etl
導到測試服務器。
2.2.5. 中間表抽數方式
- tag_user表:1 會員屬性的標簽全量更新。2 普通用戶的標簽必須增量更新
- 其余中間表全量更新。
2.2.6. 相關腳本上傳路徑:
-
測試調度任務腳本mysql2udw_dev.sh:
/data/scripts/mysql2udw_dev.sh -
源數據抽取配置文件yaml:
/home/hjmrunning/bi_etl_dev/ods_mysql2udw/
維度表:/home/hjmrunning/bi_etl_dev/dw_sqldesign/dw_demension -
事實表:/home/hjmrunning/bi_etl_dev/dw_sqldesign/dw_fact
git_lab:bi_etl_dev/mysql2udw_dev.sh >> 10.10.184.217:/data/scripts/
維度表2張:
d_product
d_user
路徑:
git_lab:bi_etl_dev/etl >> 10.10.184.217:/home/hjmrunning/bi_etl_dev/dw_sqldesign/dw_demension/
事實表3張:
f_user_list
f_order_itme
f_app_log_item
路徑:
git_lab:bi_etl_dev/etl/ >> 10.10.184.217:/home/hjmrunning/bi_etl_dev/dw_sqldesign/dw_fact/
2.3. 測試
2.3.1. 測試 ods源表配置是否正確配置且能成功抽數
mysql2udw -v -f /home/hjmrunning/bi_etl_dev/ods_mysql2udw/h_goods.yaml
2.3.2. 測試中間ETL處理的腳本是否成功調用
/usr/bin/psql -U admin -d ahaschool_udw -h 127.0.0.1 -p 5432
passwd: WZgNV0Pcp0
2.3.3. 待所有腳本驗證成功,測試調度任務腳本:mysql2udw.sh
nohup /data/scripts/mysql2udw_dev.sh >> /data/logs/cron_day.log 2>&1 &
3. 數倉測試環境:
- IP:10.10.184.217
- 用戶名:hjmrunning
- 通過dev:120.132.70.125 跳轉
ssh hjmrunning@120.132.70.125
ssh hjmrunning@10.10.184.217
3.1. test2-basics (測二微信項目mysql\redis\kafka)
host:10.10.82.107
database:hjm_dev
password:hjm_dev
3.2. 測試pg數據庫信息
數據庫:
數據庫用戶名:admin
密碼:WZgNV0Pcp0
主機:10.10.184.217
端口:5432
數據庫:postgres
步驟一:本地:
scp -r /Users/cheney/git_work/bi_etl_product/* hjmrunning@120.132.70.125:/home/hjmrunning/bi_etl_dev/
步驟二:dev120.132.70.125:
scp -r /home/hjmrunning/bi_etl_dev/* hjmrunning@10.10.184.217:/home/hjmrunning/bi_etl_dev/
scp hjmrunning@120.132.70.125:/home/hjmrunning/bi_etl_dev/* hjmrunning@120.132.70.125:/home/hjmrunning/bi_etl_dev2/
scp -r /home/hjmrunning/bi_etl_dev/* hjmrunning@120.132.70.125:/home/hjmrunning/bi_etl_dev2/
4. pg庫連接命令
登錄控制台:psql postgres
退出: \q
- 命令行連接數據庫控制台:
psql -h 127.0.0.1 -d ahaschool_udw -U admin
psql -h 10.10.184.217 -d ahaschool_udw -U admin
- 查詢所連接數據庫的IP地址與端口
SELECT inet_server_addr(), inet_server_port();
4.1. 創建pg數據庫
- 連接:psql postgres
這時相當於系統用戶postgres以同名數據庫用戶的身份,登錄數據庫,這是不用輸入密碼的。如果一切正常,系統提示符會變為"postgres=#",表示這時已經進入了數據庫控制台。以下的命令都在控制台內完成。
- 第一件事是使用\password命令,為postgres用戶設置一個密碼:
\password postgres
- 第二件事是創建數據庫用戶dbuser(剛才創建的是Linux系統用戶),並設置密碼:
CREATE USER admin WITH PASSWORD 'WZgNV0Pcp0';
- 第三件事是創建用戶數據庫,這里為exampledb,並指定所有者為dbuser:
create database ahaschool_udw owner admin;
- 第四件事是將exampledb數據庫的所有權限都賦予dbuser,否則dbuser只能登錄控制台,沒有任何數據庫操作權限:
GRANT ALL PRIVILEGES ON DATABASE ahaschool_udw to admin;
卸載和重裝pg庫
- 查看pg服務器版本: psql --version
啟動停止服務命令:
停止服務:
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l /data/postgresql/server.log stop
啟動服務:
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l /data/postgresql/server.log start
查看數據庫狀態:
/data/postgresql/bin/pg_ctl -D /data/postgresql/data -l /data/postgresql/server.log status
卸載
- 卸載的話,直接刪除/data/下的postgresql文件夾
- 然后把/etc/profile文件里的,postgresql的export HOME注釋掉就可以了
安裝
- 源碼安裝方式:
下載source的包
wget https://ftp.postgresql.org/pub/source/v8.4.20/postgresql-8.4.20.tar.gz
scp -r postgresql-8.4.20.tar.gz hjmrunning@120.132.70.125:/home/hjmrunning/
scp -r /home/hjmrunning/postgresql-8.4.20.tar.gz hjmrunning@10.10.184.217:/data/
路徑要在/data下並解壓:
tar -zxvf postgresql-8.4.20.tar.gz /data/
進入/data/postgresql-8.4.20
- 指定安裝路徑
指定安裝路徑:
./configure --help
--prefix=dir可以指定安裝目錄
./configure --prefix=/data/postgresql
編譯並安裝
執行make,從Makefile中讀取指令,編譯源碼
make
執行make install,將軟件安裝至指定目錄
make install
顯示:PostgreSQL installation complete.
安裝成功
創建數據文件存儲路徑並初始化數據庫
mkdir /data/postgresql/data
初始化數據庫並生成:data/postgres/data/postgresql.conf等pg等配置文件
/data/postgresql/bin/initdb -D /data/postgresql/data
修改監聽地址和添加數據庫服務器端口
listen_addresses配置監聽地址范圍,改為*則為所有:
listen_addresses = '*'
port = 5432
配置數據庫允許訪問的IP(遠程訪問認證機制):
vim /data/postgresql/data/pg_hba.conf
TYPE | DATABASE | USER | ADDRES | METHOD |
---|---|---|---|---|
host | all | all | 0.0.0.0/0 | trust |
需要所有IP都可以訪問則對應為0.0.0.0/0
設置postgresql服務開機自啟動
chkconfig --add postgresql
啟動pg服務器
報錯:
postgres cannot access the server configuration file "/data/postgresql/data/postgresql.conf": No such file or directory
- 原因分析:未初始化數據庫
查看指定文件路徑
sudo find / -name postgresql.conf