postgres安裝及實現mysql到pg的數據遷移


1. Postgres 資料參考:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM