<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 17.6\. 升級一個 PostgreSQL 集群 本節討論怎樣從一個PostgreSQL發布到一個新的發布升級你的數據庫數據。 PostgreSQL主要版本由前兩個數字的版本號代表,例如8.4。 PostgreSQL主要版本由前三個數字的版本號代表,例如8.4.2是第二個8.4的維護性發布。 維護性發布從不改變內部存儲器格式并且總是與之前的和之后的相同維護性版本號的維護性版本兼容, 例如8.4.2兼容8.4,8.4.1和8.4.6。要在兼容的版本之間更新,在服務器關閉時簡單的替換可執行文件并且重啟服務器就可以。 數據目錄保留不改變—維護性升級就這么簡單。 對PostgreSQL的_主要_發布,內部數據存儲格式是改變的主題, 因此并發升級。移動數據到一個新的主要版本的傳統的方法是轉儲并重新加載數據庫。 就像下面描述的那樣,其他方法也適用。 新的主要版本還通常介紹一些用戶可見的不兼容性,所以可能需要改變應用程序。 所有用戶可見的改變都在版本注釋里面列出([Appendix E](#calibre_link-32)); 尤其注意章節標簽"Migration"。如果你正在幾個主要版本間升級, 一定要閱讀每個中間版本的版本注釋。 謹慎的用戶可能想在全面切換前在新的版本上測試他們的客戶端應用;因此, 設置并發新舊版本的安裝是一個好的主意。當測試一個PostgreSQL的主要升級時, 考慮下列類別的可能變化: Administration 在每個主要版本中,管理員對服務器可用的監視和控制功能通常會改變和增加。 SQL 通常包含新的SQL命令功能而不是行為上的改變,除非在版本注釋里面特別提到。 Library API 像libpq這樣典型的庫只添加新的函數,同樣除非在版本注釋里面特別提到。 System Catalogs 系統目錄變更通常只影響數據庫管理工具。 Server C-language API 這涉及到后端函數API的變化,它是用C編程語言寫的。這樣的改變影響引用深層服務器后端函數的編碼。 ## 17.6.1\. 通過pg_dump升級數據 要從PostgreSQL的一個主要版本轉儲數據并加載到另一個版本,必須使用pg_dump; 文件系統級備份方法將不能使用。(有檢查防止你用不兼容的PostgreSQL 版本使用數據目錄,所以在一個數據目錄上嘗試啟動錯誤的服務器版本也不會造成大的傷害。) 建議使用新版本的PostgreSQL pg_dump和pg_dumpall程序, 利用這些程序可能的增強功能。當前轉儲程序版本可以從一直到7.0的任何服務器版本中讀取數據。 這些說明假設現有的安裝在`/usr/local/pgsql`目錄下,數據區域在`/usr/local/pgsql/data` 目錄下。適當的替代你的路徑。 1. 如果做一個備份,確保數據庫沒有被更新。這不影響備份的完整性,但是將不會包括改變了的數據。 如果必須要這樣做,那么編輯文件`/usr/local/pgsql/data/pg_hba.conf`(或相等的)里的權限, 設置除了你之外的人都不可以訪問。參閱[Chapter 19](#calibre_link-14)獲取關于訪問控制的更多信息。 備份你的數據庫安裝,輸入: ``` &lt;kbd class="literal"&gt;pg_dumpall &gt; `_outputfile_`&lt;/kbd&gt; ``` 如果您需要保存OID(例如當使用它們作為外鍵時),那么在運行pg_dumpall 時使用`-o`選項。 要做備份,可以使用當前運行版本的pg_dumpall命令。然而, 要獲取最佳結果嘗試使用PostgreSQL 9.3.1的 pg_dumpall命令,因為這個版本包含bug修復和對老版本的改進。 雖然在你還沒有安裝新版本時這個建議看起來很特別,但是如果你打算同時安裝新版本和老版本, 那么這個建議是可行的。在這種情況下你可以正常完成安裝然后傳送數據。這也將減少停機時間。 2. 關閉舊的服務器: ``` &lt;kbd class="literal"&gt;pg_ctl stop&lt;/kbd&gt; ``` 系統上的PostgreSQL在開機時啟動,可能有一個啟動文件將完成同樣的事情。 例如,在Red Hat Linux系統上,可能發現這個在工作: ``` &lt;kbd class="literal"&gt;/etc/rc.d/init.d/postgresql stop&lt;/kbd&gt; ``` 參閱[Chapter 17](#calibre_link-635)獲取關于啟動和停止服務器的詳細信息。 3. 如果從備份中恢復,重命名或者刪除舊的安裝目錄。重命名目錄是個好主意,而不是刪掉它, 以防你有困難并且需要恢復它。記住,目錄可能會占用大量磁盤空間。要重命名目錄,使用像下面這樣的命令: ``` &lt;kbd class="literal"&gt;mv /usr/local/pgsql /usr/local/pgsql.old&lt;/kbd&gt; ``` (一定要把目錄作為一個單元,所以相對路徑保持不變。) 4. 像[Section 15.4](#calibre_link-637). 中概述的那樣安裝PostgreSQL新版本。 5. 如果需要創建一個新的數據庫集群。請記住,當登陸到特定的數據庫用戶賬戶 (如果已經升級,那么已經有這個賬戶了)時必須執行下面的命令。 ``` &lt;kbd class="literal"&gt;/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data&lt;/kbd&gt; ``` 6. 恢復以前的`pg_hba.conf`和任意`postgresql.conf`修改。 7. 啟動數據庫服務器,再次使用特定的數據庫用戶賬戶: ``` &lt;kbd class="literal"&gt;/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data&lt;/kbd&gt; ``` 8. 最終,從備份中恢復數據: ``` &lt;kbd class="literal"&gt;/usr/local/pgsql/bin/psql -d postgres -f `_outputfile_`&lt;/kbd&gt; ``` 使用_新的_ psql 最少的停機時間可以通過在一個不同的目錄下安裝新的服務器,并且并行在不同的端口運行舊的和新的服務器來達到。 然后就可以使用類似: ``` pg_dumpall -p 5432 | psql -d postgres -p 5433 ``` 來傳送數據。 ## 17.6.2\. Non-Dump 升級方法 [pg_upgrade](#calibre_link-638)模塊允許安裝從一個主PostgreSQL版本到下一個的遷移。 升級可以在幾分鐘內完成。 還可以使用特定的復制方法,比如Slony,創建一個更新的PostgreSQL 版本備用服務器。這是可能的,因為Slony支持不同PostgreSQL主版本間的復制。 備機可以在相同的計算機上,也可以在不同的計算機上。一旦它與主服務器(在老PostgreSQL 版本上運行)同步,就可以切換主機使備機成為主機,并立即關閉舊的數據庫。這樣的切換使升級只有幾秒鐘的關機時間。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看