centos6.5安裝postgresql9.3及數(shù)據(jù)遷移

最近來了一批數(shù)據(jù),其中有一部分是一個從postgresql導(dǎo)出的sql文件,大概有7個多G,需要把數(shù)據(jù)整合到Mysql里邊做進(jìn)一步處理,網(wǎng)上搜了一些方式好多是要修改這個sql文件(因為從postgresql里直接dump出來的sql文件直接懟到mysql是不能識別的,不能直接導(dǎo)入),修改后在把postgresql的文件直接入mysql,貌似對那種表結(jié)構(gòu)和數(shù)據(jù)分別導(dǎo)出的還可以,手頭這個文件情況是表結(jié)構(gòu)和數(shù)據(jù)在一個sql文件里,里邊還有一些copy等的關(guān)鍵字,無奈只好自己安裝一個postgresql庫,先導(dǎo)入到postgresql庫里邊再同步到mysql里,寫代碼好幾年了,這還是第一次接觸postgresql,所以這里把過程記錄一下

安裝

  • 配置yum庫

    vi /etc/yum.repos.d/CentOS-Base.repo
    

    [base] 和[updates] 區(qū)段添加:exclude=postgresql*

  • 卸載舊版本postgresqsl

    yum remove postgresql*
    
  • 安裝PGDG RPM文件
    打開網(wǎng)頁http://yum.postgresql.org找到自己需要的rpm,比如我是Centos 6.5系統(tǒng),要安裝Postgresql 9.3:

    image.png

    右鍵復(fù)制上邊這個鏈接,執(zhí)行如下命令:

    yum localinstall https://download.postgresql.org/pub/repos/yum/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-3.noarch.rpm
    

    當(dāng)然也可以通過wget下載rpm

    wget https://download.postgresql.org/pub/repos/yum/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-3.noarch.rpm
    

    然后

    rpm -ivh pgdg-centos93-9.3-3.noarch.rpm 
    
  • 安裝postgresql
    可以通過命令列出可用的安裝包:

    yum list postgres*
    

    這里我要安裝的是PostgreSQL 9.3 server(你可以根據(jù)自己的需求安裝其他包),執(zhí)行如下命令:

    yum install postgresql93-server
    
  • 初始化
    執(zhí)行如下命令,進(jìn)行初始化,執(zhí)行完成后會在/var/lib/pgsql/9.3/data目錄下生成數(shù)據(jù)文件夾,包含了數(shù)據(jù)庫所需的數(shù)據(jù)文件,變量PGDATA指的就是這個目錄

    service postgresql-9.3 initdb
    

    如果提示-bash: service: command not found,則需要設(shè)置環(huán)境變量
    vim .bash_profile然后添加export PATH=$PATH:/sbin

  • 設(shè)置開機(jī)自啟動

    chkconfig postgresql-9.3 on
    

    啟動:

    service postgresql-9.3 start   #/start/stop/restart/reload
    或者
    /etc/init.d/postgresql-9.3 start
    
  • 修改密碼
    修改linux系統(tǒng)用戶postgres的密碼,PostgreSQL 數(shù)據(jù)庫默認(rèn)會創(chuàng)建一個linux 系統(tǒng)用戶postgres,通過passwd 命令可設(shè)置系統(tǒng)用戶的密碼,直接在控制臺輸入以下命令:

    su postgres
    psql
    ALTER USER postgres WITH PASSWORD 'postgresql';
    \q
    su root 
    

    這樣就把postgres的密碼改為postgresql了。

  • 修改PostgreSQL數(shù)據(jù)庫配置實現(xiàn)可遠(yuǎn)程訪問

    1. 修改postgresql.conf文件,vim /var/lib/pgsql/9.3/data/postgresql.conf
      將listen_addresses前的#去掉,并將 listen_addresses = 'localhost' 改成 listen_addresses = '*';
    2. 修改客戶端認(rèn)證配置文件pg_hba.conf,將需要遠(yuǎn)程訪問數(shù)據(jù)庫的IP地址或地址段加入該文件,vi /var/lib/pgsql/9.3/data/pg_hba.conf,將IPv4區(qū)下的127.0.0.1/32修改為0.0.0.0/0; 將ident修改為md5
    3. 重啟服務(wù)使設(shè)置生效 service postgresql-9.3 restart
  • 設(shè)置防火墻,開發(fā)5432端口(這個根據(jù)centos版本不同,略有差異)
    1.開啟5432端口

    iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
    
    1. 保存并重啟防火墻
    /etc/rc.d/init.d/iptables save
    /etc/init.d/iptables restart
    

    至此,安裝完成,使用navicat登錄用戶名postgres,密碼postgresqsl,如下圖:


    image.png

使用

這里基本使用就不介紹了,我自己的需求很簡單,就是把7G的sql導(dǎo)入進(jìn)去,后邊再同步到mysql,使用如下命令:

psql -d postgres -h 192.168.40.11 -p 5432 -U postgres -f /data/data_dump.sql

問題就來了,報錯信息如下:


image.png

很明顯,磁盤空間不足,使用df -h查看磁盤剩余空間如下:


image.png

可以看到,根目錄下可用空間只剩4.6G,這里要說明一下,postgresql默認(rèn)安裝目錄是/usr/pgsql-9.3,默認(rèn)數(shù)存放目錄是/var/lib/pgsql/9.3/data,而/var正是在根目錄下,所以需要更改數(shù)據(jù)目錄,如果是曾經(jīng)導(dǎo)入過數(shù)據(jù),需要先做數(shù)據(jù)遷移并更改數(shù)據(jù)存放目錄,從上圖可以看出系統(tǒng)/data目錄磁盤空間比較大,所以這里我把數(shù)據(jù)放在/data目錄下。
這里方法有兩種,

一:重新初始化postgresql數(shù)據(jù)庫,初始化時指定新的數(shù)據(jù)路徑---PGDATA,指定的位置是在/etc/init.d/postgresql-9.3里的PGDATA,然后在新的環(huán)境下將原有的數(shù)據(jù)庫備份恢復(fù)一下。感覺這種方式更適合我的情況,因為我的庫里邊沒有數(shù)據(jù),直接初始化就行,比較簡單,但是如果你庫里有數(shù)據(jù)就有點麻煩了。
二:直接將現(xiàn)有的數(shù)據(jù)庫文件全部拷貝到新的數(shù)據(jù)庫路徑下,然后重起數(shù)據(jù)庫服務(wù),這種更適合于庫里邊已有數(shù)據(jù)的情況,考慮到后邊可能會遇到庫里已有數(shù)據(jù)且磁盤空間已滿的情況,所以我使用了這種方式。

  1. 新建一個目錄作為新的數(shù)據(jù)存放目錄,這里我是/data/postgresqldatadir
    mkdir /data/postgresqldatadir
    sudo chown -R postgres:postgres /data/postgresqldatadir
    sudo chmod 700 /data/postgresqldatadir  //這個授權(quán)命令別忘了,不然后邊啟動有問題
    
  2. 拷貝之前的data到新的數(shù)據(jù)目錄
    這里需要先停止postgresql服務(wù):/etc/init.d/postgresql-9.5 stop
    sudo su - postgres
    cp -rf /var/lib/pgsql/9.3/data/* /data/postgresqldatadir
  3. 修改啟動配置文件
    vim /etc/init.d/postgresql-9.3
    修改其中的PGDATA為新創(chuàng)建的數(shù)據(jù)目錄


    image.png
  4. 啟動postgresql服務(wù)
    /etc/init.d/postgresql-9.3 start
    
    啟動完成后,可以先使用navicat測試一下連接,沒有問題
  5. 數(shù)據(jù)導(dǎo)入,執(zhí)行如下導(dǎo)入命令:
    psql -d postgres -h 192.168.40.11 -p 5432 -U postgres -f /data/data_dump.sql
    
    耐心等待,有7G多,直至導(dǎo)入完成:
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容