• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            colorful

            zc qq:1337220912

             

            pg_ctl

            pg_ctl
            名稱
            pg_ctl -- 啟動、停止、重啟 PostgreSQL
            語法
            pg_ctl start [-w] [-s] [-D datadir] [-l filename] [-o options] [-p path]
            pg_ctl stop [-W] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]
            pg_ctl restart [-w] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]
            pg_ctl reload [-s] [-D datadir]
            pg_ctl status [-D datadir]
            pg_ctl kill [signal_name] [process_id]
            pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-w] [-o options]
            pg_ctl unregister [-N servicename]

            描述
            pg_ctl 用于啟動、停止、重啟 PostgreSQL 后端服務(wù)器(postgres),或者顯示一個運行著的服務(wù)器的狀態(tài)。盡管可以手動啟動服務(wù)器,但是 pg_ctl 封裝了重新定向日志輸出,與終端和進程組合理分離,以及另外提供了一個選項用于有控制的關(guān)閉。

            在 start 模式里會啟動一個新的服務(wù)器。服務(wù)器是在后臺啟動的,標準輸入被附著到了 /dev/null 上。如果使用了 -l ,那么標準輸出和標準錯誤將被定向到一個日志文件,要么就是重定向到 pg_ctl 的標準輸出(而不是標準錯誤)。如果沒有選定日志文件,pg_ctl 的標準輸出應(yīng)該重定向到一個文件或者用管道輸出到類似 rotatelogs 這樣的日志滾動程序,否則,postgres 將把它的輸出寫到控制終端(在后臺)并且將不會脫離 shell 的進程組。

            在 stop 模式下,那個正在特定數(shù)據(jù)目錄運行的服務(wù)器將被關(guān)閉。你可以用 -m 選項選擇三種不同的關(guān)閉模式:"Smart"模式等待所有客戶端中斷連接,這是缺省。"Fast"模式并不等待客戶端中斷連接,所有活躍事務(wù)都被回滾并且客戶端都被強制斷開。"Immediate"模式將在沒有干凈關(guān)閉的情況下強行退出。這么做將導(dǎo)致在重新啟動的時候的恢復(fù)。

            restart 實際上是先執(zhí)行一個停止,然后緊跟一個啟動。它允許變換 postgres 的命令行選項。

            reload 模式簡單地給 postgres 發(fā)送一個 SIGHUP 信號,導(dǎo)致它重新讀取配置文件(postgresql.conf, pg_hba.conf 等),這樣就允許修改配置文件選項而不用重啟系統(tǒng)即可生效。

            status 模式監(jiān)查一個服務(wù)器是否在指定的數(shù)據(jù)目錄運行,如果是,那么顯示其 PID 和調(diào)用它的命令行選項。

            kill 模式允許你給一個指定的進程發(fā)送信號。這個功能對 Microsoft Windows 特別有用,因為它沒有 kill 命令。使用 --help 查看支持的信號名字列表。

            register 模式允許你在 Microsoft Windows 上注冊一個系統(tǒng)服務(wù)。

            unregister 模式允許你在 Microsoft Windows 上刪除先前用 register 命令注冊的系統(tǒng)服務(wù)。

            選項
            -D datadir
            聲明該數(shù)據(jù)庫的文件系統(tǒng)位置。如果忽略則使用 PGDATA 環(huán)境變量。

            -l filename
            把服務(wù)器日志輸出附加在 filename 文件上。如果該文件不存在則創(chuàng)建它。umask 設(shè)置為 077 ,因此缺省時是不允許從其它用戶向日志文件訪問的。

            -m mode
            聲明關(guān)閉模式。mode 可以是 smart, fast, immediate 之一,或者是這三個的首字母之一。

            -o options
            聲明要直接傳遞給 postgres 的選項。

            參數(shù)通常都用單或者雙引號包圍以保證它們作為一個整體傳遞。

            -p path
            聲明 postgres 可執(zhí)行文件的位置。缺省位于 pg_ctl 自身所在目錄,如果沒找到則使用硬編碼的安裝目錄。除非你想干點什么特別的事情,并且想得到類似沒有找到 postgres 這樣的錯誤,否則必須使用這個選項。

            -s
            只打印錯誤,而不打印提示性信息。

            -w
            等待啟動或者關(guān)閉的完成(60 秒超時),這個參數(shù)是關(guān)閉時的缺省值。成功的關(guān)閉是以刪除 PID 文件為標志的。對于啟動而言,一次成功的 psql -l 就標志著成功。pg_ctl 將企圖使用對 psql 合適的端口,如果存在 PGPORT 環(huán)境變量,那么將用它。否則,它將查找在 postgresql.conf 文件里是否設(shè)置了一個端口。如果都沒有,它將使用 PostgreSQL 編譯時的缺省端口(缺省 5432)。在等待的時候,pg_ctl 將根據(jù)啟動或者關(guān)閉的成功狀況返回一個準確的退出代碼。

            -W
            不等待啟動或者停止的完成。這是啟動和重啟的缺省。

            Windows 選項
            -N servicename
            要注冊的系統(tǒng)服務(wù)的名字。這個名字將用于服務(wù)名和顯示名。

            -P password
            用戶啟動服務(wù)的口令

            -U username
            用于啟動服務(wù)的用戶的用戶名。對于域用戶,使用 DOMAIN\username 格式。

            環(huán)境變量
            PGDATA
            缺省數(shù)據(jù)目錄位置

            PGPORT
            psql 的缺省端口(由 -w 選項使用)。

            其它的環(huán)境變量請參閱 postgres

            文件
            postmaster.pid
            這個文件存在于數(shù)據(jù)目錄中是為了幫助 pg_ctl 判斷服務(wù)器當前是否在運行。

            postmaster.opts.default
            如果這個文件存在于數(shù)據(jù)目錄,pg_ctl (在 start 模式下)將把文件地內(nèi)容當作傳遞給 postgres 命令的選項傳遞過去,除非被 -o 選項覆蓋。

            postmaster.opts
            如果這個文件存在于數(shù)據(jù)目錄,pg_ctl (在 start 模式下)將把文件地內(nèi)容當作傳遞給 postgres 命令的選項傳遞過去,除非被 -o 選項覆蓋。這個文件的內(nèi)容也會在 status 模式里顯示出來。

            postgresql.conf
            這個文件在數(shù)據(jù)目錄中,會分析它以查找和 psql 一起用的合適的端口(在 start 模式里給出 -w 的時候)。

            注意
            等待完全啟動還不是一個定義得很完整的操作,如果訪問控制設(shè)置為本地客戶端在沒有手工交互的情況下不能訪問的話還可能會失效(比如口令認證)。

            例子
            啟動服務(wù)器
            啟動服務(wù)器:

            $ pg_ctl start啟動服務(wù)器的一個例子,等到服務(wù)器啟動了才退出:

            $ pg_ctl -w start服務(wù)器使用 5433 端口,而且不帶 fsync 運行,使用:

            $ pg_ctl -o "-F -p 5433" start停止服務(wù)器
            $ pg_ctl stop使用 -m 選項停止服務(wù)器允許用戶控制如何關(guān)閉后端。

            重啟服務(wù)器
            這個命令幾乎等于先停止服務(wù)器然后再啟動它,只不過 pg_ctl 保存并重新使用上一次運行服務(wù)器的命令行參數(shù)。重啟服務(wù)器的最簡單的方法是:

            $ pg_ctl restart重啟服務(wù)器,等待其停止和重啟:

            $ pg_ctl -w restart使用 5433 端口重啟并且重啟后關(guān)閉 fsync :

            $ pg_ctl -o "-F -p 5433" restart顯示服務(wù)器狀態(tài)
            下面是來自 pg_ctl 的狀態(tài)輸出的例子:

            $ pg_ctl statuspg_ctl: server is running (pid: 13718)Command line was:/usr/local/pgsql/bin/postgres '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'這就是在 restart 模式中被調(diào)用的命令行。

            又見
            postgres

            pg_resetxlog
            名稱
            pg_resetxlog -- 重置一個數(shù)據(jù)庫集群的預(yù)寫日志以及其它控制內(nèi)容
            語法
            pg_resetxlog [-f] [-n] [-ooid ] [-x xid ] [-e xid_epoch ] [-m mxid ] [-O mxoff ] [-l timelineid, fileid, seg ] datadir

            描述
            pg_resetxlog 清理預(yù)寫日志(WAL)并且可以有選擇地重置其它一些存儲在 pg_control 文件中的控制信息。有時候,如果這些文件崩潰了,就需要這個功能。一定只把它用作最后的方法,就是說只有因為這樣的崩潰導(dǎo)致服務(wù)器無法啟動的時候才使用。

            運行這個命令之后,可能就可以啟動服務(wù)器了,但是,一定要記住數(shù)據(jù)庫可能因為部分提交的事務(wù)而含有不完整的數(shù)據(jù)。你應(yīng)該馬上轉(zhuǎn)儲數(shù)據(jù),運行 initdb ,然后重新加載。在重新加載之后,檢查不完整的部分然后根據(jù)需要進行修復(fù)。

            這個命令只能由安裝服務(wù)器的用戶運行,因為它需要對數(shù)據(jù)目錄的讀寫權(quán)限。出于安全考慮,pg_resetxlog 不使用環(huán)境變量 PGDATA ,你必須在命令行上聲明數(shù)據(jù)目錄。

            如果 pg_resetxlog 抱怨說它無法判斷用于 pg_control 的有效數(shù)據(jù),那么你可以強制它繼續(xù)處理,方法是聲明 -f(強制)開關(guān)。在這種情況下,那些丟失了的數(shù)據(jù)將用模糊的近似數(shù)值代替。大多數(shù)字段都可以匹配上,但是下一個 OID 、下一個事務(wù) ID 、下一個事務(wù) ID 的 epoch(時間點)、下一個多事務(wù) ID(兩階段提交的東西)、下一個多事務(wù)偏移量、WAL 開始地址、數(shù)據(jù)庫區(qū)域字段可能需要手工幫助,前面六個可以用下面討論的開關(guān)設(shè)置。pg_resetxlog 自己的環(huán)境是猜測區(qū)域字段的來源;看看 LANG 等東西,它們應(yīng)該和 initdb 運行的環(huán)境相匹配。如果你不能判斷所有這些字段的正確數(shù)值,那么 -f 仍然可以使用,但是這樣恢復(fù)過來的數(shù)據(jù)庫正確性更值得懷疑:立即轉(zhuǎn)儲和重新加載是必須的。在轉(zhuǎn)儲之前不要執(zhí)行任何修改數(shù)據(jù)的操作,因為任何這樣的動作都可能把事情搞得更糟糕。

            -o, -x, -e, -m, -O, -l 開關(guān)允許手工設(shè)置下一個 OID 、下一個事務(wù) ID 、下一個事務(wù) ID epoch 、下一個多事務(wù) ID 、下一個多事務(wù)偏移量、WAL 起始位置的數(shù)值。只有在 pg_resetxlog 無法通過讀取 pg_control 判斷合適的數(shù)值的時候才需要它。安全的數(shù)值可以用下面的方法判斷:

            對于下一個事務(wù) ID(-x)而言,一個安全的數(shù)值是看看數(shù)據(jù)目錄里的 pg_clog 里數(shù)值最大的文件名,然后加一,然后再乘上 1048576 。請注意那些文件名是十六進制的。通常也以十六進制的形式聲明開關(guān)值是最簡單的。比如,如果 0011 是 pg_clog 里最大的記錄,-x 0x1200000 就可以了(后面的五個零提供了合適的乘積)。

            下一個多事務(wù) ID(-m)的安全值可以通過查看數(shù)據(jù)目錄里 pg_multixact/offsets 子目錄里面的數(shù)字最大的文件名,加一,然后乘以 65536 得到。和上面一樣,文件名是十六進制的,因此最簡單的方法是給開關(guān)聲明一個十六進制的開關(guān)值,然后在結(jié)尾加四個零。

            下一個多事務(wù)偏移量(-O)的安全值可以通過檢查數(shù)據(jù)目錄里 pg_multixact/members 子目錄下的數(shù)字最大的文件名,加一,然后乘以 65536 得到。和上面一樣,文件名是十六進制的,因此最簡單的方法是給開關(guān)聲明一個十六進制的開關(guān)值,然后在結(jié)尾加四個零。

            WAL 的起始位置(-l)應(yīng)該比目前存在于數(shù)據(jù)目錄 pg_xlog 里面的任何文件號都大。它的文件名也是十六進制的,并且有三部分。第一部分是"時間線 ID",通常應(yīng)該保持相同。第三部分不要選擇大于 255(0xFF);應(yīng)該是在達到 255 的時候給第二部分增一然后重置第三部分為 0 。比如,如果 00000001000000320000004A 是 pg_xlog 里最大的條目,那么 -l 0x1,0x32,0x4B 就可以了;但如果最大的條目是 000000010000003A000000FF ,那么選擇 -l 0x1,0x3B,0x0 或更多。

            沒有很容易的辦法來判斷比數(shù)據(jù)庫中最大的 OID 大一號的下一個 OID ,不過很走運的是獲取正確的下一個 OID 并非非常關(guān)鍵的事情。

            除了由 pg_resetxlog 設(shè)定的字段外,事務(wù) ID epoch 實際上并未存儲在數(shù)據(jù)庫里的任何地方。所以只要是涉及到數(shù)據(jù)庫自身的任何數(shù)值都有效。你可能需要調(diào)整這個值以確保諸如 Slony-I 之類的備份系統(tǒng)能夠正常工作。如果是這樣的話,應(yīng)當從下游已復(fù)制的數(shù)據(jù)庫中獲取恰當?shù)闹怠?br />
            -n(無操作)開關(guān)指示 pg_resetxlog 打印從 pg_control 重新構(gòu)造的數(shù)值然后不修改任何值就退出。這主要是一個調(diào)試工具,但是在 pg_resetxlog 真正處理前進行的整潔性檢查的時候可能會有用。

            注意
            在服務(wù)器運行的時候一定不要運行這個命令。如果發(fā)現(xiàn)在數(shù)據(jù)文件目錄里有鎖文件,那么 pg_resetxlog 將拒絕啟動。如果服務(wù)器崩潰,那么可能會剩下一個鎖文件;如果這樣,你可以刪除該鎖文件以便允許 pg_resetxlog 運行。但是在你這么做之前,一定要確保沒有任何后端服務(wù)器進程仍在運行。

            postgres
            名稱
            postgres -- PostgreSQL 數(shù)據(jù)庫服務(wù)器
            語法
            postgres [option...]

            描述
            postgres 是 PostgreSQL 數(shù)據(jù)庫服務(wù)器。客戶端應(yīng)用程序為了訪問數(shù)據(jù)庫,將通過 TCP Socket 或 Unix domain socket 連接到一個運行中的 postgres 進程。然后該 postgres 實例將啟動(fork)一個新的、獨立的服務(wù)器進程來處理這個連接。

            一個 postgres 總是管理來自同一個數(shù)據(jù)庫集群的數(shù)據(jù)。一個數(shù)據(jù)庫集群是一組在同一個文件系統(tǒng)位置("數(shù)據(jù)區(qū)")存放數(shù)據(jù)的數(shù)據(jù)庫。一個系統(tǒng)上可以同時運行多個 postgres 進程,只要他們使用不同的數(shù)據(jù)區(qū)和不同的端口號(見下文)。postgres 啟動時需要知道數(shù)據(jù)區(qū)的位置,該位置必須通過 -D 選項或 PGDATA 環(huán)境變量指定。通常,-D 或 PGDATA 都直接指向由 initdb 創(chuàng)建的集群目錄。其他可能的文件布局在節(jié)17.2里面有討論。

            缺省時 postgres 在前臺啟動并將日志信息輸出到標準錯誤。但在實際應(yīng)用中,postgres 應(yīng)當作為后臺進程啟動,而且多數(shù)是在系統(tǒng)啟動時自動啟動。

            postgres 還能以單用戶模式運行。這種用法的主要用于 initdb 的初始化過程中。有時候它也被用于調(diào)試災(zāi)難性恢復(fù)。不過,單用戶模式運行的服務(wù)器并不適合于調(diào)試,因為沒有實際的進程間通訊和鎖動作發(fā)生。當從 shell 上以單用戶模式調(diào)用時,用戶可以輸入查詢,然后結(jié)果會在屏幕上以一種更適合開發(fā)者閱讀(不適合普通用戶)的格式顯示出來。在單用戶模式下,將把會話用戶 ID 設(shè)為 1 并賦予超級用戶權(quán)限。該用戶不必實際存在,因此單用戶模式運行的服務(wù)器可以用于對某些意外損壞的系統(tǒng)表進行手工恢復(fù)。

            選項
            postgres 接受下列命令行參數(shù)。關(guān)于這些選項的更詳細討論請參考章17。你也可以通過設(shè)置一個配置文件來減少敲擊這些選項。有些(安全的)選項還可以從連接過來的客戶端設(shè)置,以一種應(yīng)用無關(guān)的方法僅對該會話生效。比如,如果設(shè)置了 PGOPTIONS 環(huán)境變量,那么基于 libpq 的客戶端就都把那個字符串傳遞給服務(wù)器,并被服務(wù)器解釋成 postgres 命令行選項。

            通用用途
            -A 0|1
            打開運行時斷言檢查,是檢測編程錯誤的調(diào)試幫助。只有在編譯 PostgreSQL 時打開了它,你才能使用它。如果編譯時打開了,缺省是打開。

            -B nbuffers
            為服務(wù)器進程分配和管理的共享內(nèi)存緩沖區(qū)數(shù)量。這個參數(shù)的缺省值是 initdb 自動選擇的;參考節(jié)17.4.1獲取更多信息。

            -c name=value
            設(shè)置一個命名的運行時參數(shù)。PostgreSQL 支持的配置參數(shù)在章17里描述。大多數(shù)其它命令行選項實際上都是這樣的參數(shù)賦值的短形式。-c 可以出現(xiàn)多次從而設(shè)置多個參數(shù)。

            -d debug-level
            設(shè)置調(diào)試級別。數(shù)值越高,寫到服務(wù)器日志的調(diào)試輸出越多。取值范圍是 1 到 5 。還可以針對某次單獨的會話使用 -d 0 來防止從父 postgres 進程繼承日志級別。

            -D datadir
            聲明數(shù)據(jù)目錄或者配置文件的文件系統(tǒng)路徑。細節(jié)詳見節(jié)17.2。

            -e
            把缺省日期風格設(shè)置為"European",也就是說用 DMY 規(guī)則解釋日期輸入,并且在一些日期輸出格式里日子在月份前面打印。參閱節(jié)8.5獲取更多細節(jié)。

            -F
            關(guān)閉 fsync 調(diào)用以提高性能,但是要冒系統(tǒng)崩潰時數(shù)據(jù)毀壞的風險。聲明這個選項等效關(guān)閉了 fsync 參數(shù)。在使用之前閱讀詳細文檔!

            -h hostname
            指定 postgres 偵聽來自前端應(yīng)用 TCP/IP 連接的 IP 主機名或地址。數(shù)值也可以是一個用空格分隔的地址列表,或者 * 表示監(jiān)聽所有可用的地址。空值表示不監(jiān)聽任何 IP 地址,而只使用 Unix 域套接字與客戶端通信。缺省只監(jiān)聽 localhost 。聲明這個選項等效于設(shè)置 listen_addresses 配置參數(shù)。

            -i
            這個選項允許遠程客戶通過 TCP/IP(網(wǎng)際域套接字)與服務(wù)器通訊。沒有這個選項,服務(wù)器將只接受本地連接。這個選項等效于在 postgresql.conf 中或者通過 -h 選項將 listen_addresses 設(shè)為 *

            這個選項已經(jīng)廢棄了,因為它不能實現(xiàn) listen_addresses 的所有功能。所以最好直接設(shè)置 listen_addresses

            -k directory
            指定 postgres 偵聽來自前端應(yīng)用連接的 Unix 域套接字的目錄。缺省通常是 /tmp ,但是可以在編譯的時候修改。

            -l
            這個選項使用 SSL 進行的安全通訊。要使用這個選項,編譯 PostgreSQL 時你必須打開了 SSL 支持。有關(guān)使用 SSL 的信息,請參考節(jié)16.7。

            -N max-connections
            設(shè)置最多允許同時連接多少個客戶端(也就是最多同時運行多少個服務(wù)器進程)。缺省值為 32 ,不過該值最大可以設(shè)置為系統(tǒng)所能承受的極限。請注意 -B 的值要求至少兩倍于 -N 的值。參閱節(jié)16.4獲取有關(guān)大量客戶的系統(tǒng)資源需求。聲明這個選項等效于聲明 max_connections 配置參數(shù)。

            -o extra-options
            在 extra-options 里面指定的命令行選項將被傳遞給所有由這個 postgres 派生的服務(wù)進程。如果選項字符串包含任何空白,那么整個字符串必須用引號界定。

            反對使用該選項,所有服務(wù)器進程的命令行選項都可以直接在 postgres 命令行上指定,不必這么麻煩。

            -p port
            指定 postgres 偵聽客戶端連接的 TCP/IP 端口或本地 Unix domain socket 文件的擴展。缺省的端口號是環(huán)境變量 PGPORT 的值。如果 PGPORT 沒有設(shè)置,那么缺省是 PostgreSQL 編譯時指定的值(通常是 5432)。如果你聲明了一個非缺省端口,那么所有前端應(yīng)用都必須用命令行選項或者 PGPORT 聲明同一個端口。

            -s
            在每條命令結(jié)束時打印時間信息和其它統(tǒng)計信息。這個開關(guān)對測試性能和調(diào)節(jié)緩沖區(qū)數(shù)量有好處。

            -S work-mem
            聲明內(nèi)部排序和散列在求助于臨時磁盤文件之前可以使用的內(nèi)存數(shù)量。參閱節(jié)17.4.1里描述的配置變量 work_mem

            --name=value
            設(shè)置一個命名的運行時參數(shù);其縮寫形式是 -c

            --describe-config
            以制表符分隔的 COPY 格式,導(dǎo)出服務(wù)器內(nèi)部配置變量、描述、缺省值。設(shè)計它主要是給管理工具使用。

            半內(nèi)部選項
            還有幾個其它的選項可以聲明,主要用于調(diào)試用途。這些東西在這里列出只是給 PostgreSQL 系統(tǒng)開發(fā)人員使用的。強烈反對使用這些選項。另外這些選項的任何一項都可能在未來版本中消失而不加說明。

            -f { s | i | m | n | h }
            禁止某種掃描和連接方法的使用:s 和 i 分別關(guān)閉順序和索引掃描,而 n, m, h 分別關(guān)閉嵌套循環(huán),融合(merge)和 Hash 連接。

            順序掃描和嵌套循環(huán)都不可能完全被關(guān)閉。 -fs 和 -fn 選項僅僅是在存在其它方法時阻礙優(yōu)化器使用這些方法罷了。

            -n
            該選項主要用于調(diào)試導(dǎo)致服務(wù)器進程異常崩潰的問題。對付這種情況的一般策略是通知所有其它服務(wù)器進程終止并重新初始化共享內(nèi)存和信號燈。這是因為一個出錯的服務(wù)器進程可能在終止之前就已經(jīng)對共享的東西造成了破壞。該選項指定 postgres 不重新初始化共享數(shù)據(jù)結(jié)構(gòu)。一個有經(jīng)驗的系統(tǒng)程序員這時就可以使用調(diào)試器檢查共享內(nèi)存和信號燈狀態(tài)。

            -O
            允許修改系統(tǒng)表的結(jié)構(gòu)。這個參數(shù)用于 initdb

            -P
            讀取系統(tǒng)表時忽略系統(tǒng)索引(但在更改數(shù)據(jù)時仍然更新索引)。這對于從索引已經(jīng)損壞的系統(tǒng)表中回復(fù)是很有幫助的。

            -t pa[rser] | pl[anner] | e[xecutor]
            打印與每個主要系統(tǒng)模塊相關(guān)的查詢記時統(tǒng)計。它不能和 -s 選項一起使用。

            -T
            該選項主要用于調(diào)試導(dǎo)致服務(wù)器進程異常崩潰的問題。對付這種情況的一般策略是通知所有其它服務(wù)器進程終止并重新初始化共享內(nèi)存和信號燈。這是因為一個出錯的服務(wù)器進程可能在終止之前就已經(jīng)對共享的東西造成了破壞。該選項指定 postgres 通過發(fā)送 SIGSTOP 信號停止其他所有服務(wù)器進程,但是并不讓它們退出。這樣就允許系統(tǒng)程序員手動從所有服務(wù)器進程搜集內(nèi)核轉(zhuǎn)儲。

            -v protocol
            聲明這次會話使用的前/后服務(wù)器協(xié)議的版本數(shù)。該選項僅在內(nèi)部使用。

            -W seconds
            一旦看見這個選項,進程就睡眠標出的秒數(shù)。這樣就給開發(fā)者一些時間把調(diào)試器附著在該服務(wù)器進程上。

            -y database
            表明這是一個由父 postgres 進程啟動的子進程,并使用指定的數(shù)據(jù)庫。該選項僅供內(nèi)部使用。

            單用戶模式的選項
            下面的選項僅在單用戶模式下可用。

            --single
            選中單用戶模式。這個必須是命令行中的第一個選項。

            database
            要訪問的數(shù)據(jù)庫名字。如果忽略掉則缺省為用戶名。

            -E
            回顯所有命令

            -j
            禁止使用新行作為語句分隔符

            -r filename
            將所有服務(wù)器輸出日志保存到 filename 中。在多用戶模式下該選項將被忽略,所有進程都將使用 stderr

            環(huán)境變量
            PGCLIENTENCODING
            客戶端使用的缺省字符編碼。客戶端可以獨立地覆蓋它。這個值也可以在配置文件里設(shè)置。

            PGDATA
            缺省數(shù)據(jù)目錄位置

            PGDATESTYLE
            運行時參數(shù) DateStyle 的缺省值。現(xiàn)在反對使用該環(huán)境變量。

            PGPORT
            缺省端口(最好在配置文件中設(shè)置)

            TZ
            服務(wù)器的時區(qū)

            診斷
            一個提到了 semget 或 shmget 的錯誤信息可能意味著你需要重新配置你的內(nèi)核,提供足夠的共享內(nèi)存和信號燈。更多討論,參閱節(jié)16.4。你也可以通過降低 shared_buffers 值以減少 PostgreSQL 的共享內(nèi)存的消耗,或者降低 max_connections 值減少 PostgreSQL 的信號燈的消耗。

            如果碰到一個說另外一個服務(wù)器正在運行的錯誤信息,可以根據(jù)不同的系統(tǒng)使用命令

            $ ps ax | grep postgres或

            $ ps -ef | grep postgres如果確信沒有沖突的服務(wù)器正在運行,那么你可以刪除消息里提到的鎖文件然后再次運行。

            抱怨無法綁定端口的錯誤信息可能表明該端口已經(jīng)被其它非 PostgreSQL 進程使用。如果終止 postgres 后又馬上用同一個端口運行它,也可能得到這個錯誤信息;這時,你必須多等幾秒,等操作系統(tǒng)關(guān)閉了該端口后再試。最后,如果你使用了一個操作系統(tǒng)認為是保留的端口,也可能導(dǎo)致這個錯誤信息。例如,我的 Unix 版本認為低于 1024 的端口號是"可信任的",因而只有 Unix 超級用戶可以使用它們。

            注意
            如果有可能,不要使用 SIGKILL 殺死主 postgres 服務(wù)器進程。這樣會阻止 postgres 在退出前釋放它持有的系統(tǒng)資源(例如共享內(nèi)存和信號燈)。這樣可能會影響到將來啟動新的 postgres 進程。

            可以使用 SIGTERM, SIGINT, SIGQUIT 信號正常結(jié)束 postgres 服務(wù)器進程。第一個信號將等待所有的客戶端退出后才退出。第二個將強制斷開所有客戶端,而第三個將不停止立刻退出,導(dǎo)致在重啟時的恢復(fù)運行。SIGHUP 會重新加載服務(wù)器配置文件。也可以向一個單獨的服務(wù)器進程發(fā)送 SIGHUP 信號,但是這樣做沒什么意義。

            pg_ctl 工具可以用于安全而有效地啟停 postgres ,推薦使用。

            要推出一個正在運行的查詢,可以向正在執(zhí)行該查詢的進程發(fā)送 SIGINT 信號。

            主 postgres 服務(wù)器進程向子進程發(fā)送 SIGTERM 信號讓它們正常退出;發(fā)送 SIGQUIT 信號立即退出且不做清理工作,用戶應(yīng)當盡量避免使用該信號。同時,發(fā)送 SIGKILL 信號也是不明智的:主 postgres 進程將把這個信號當作崩潰信號,然后會強制其他兄弟進程作為標準的崩潰回復(fù)過程退出。

            臭蟲
            -- 選項在 FreeBSD 或 OpenBSD 上無法運行,應(yīng)該使用 -c 。這在受影響的系統(tǒng)里是個臭蟲;如果這個毛病沒有修補好,將來的 PostgreSQL 版本將提供一個繞開的辦法。

            用法
            啟動一個單用戶模式的服務(wù)器:

            postgres --single -D /usr/local/pgsql/data other-options my_database用 -D 給服務(wù)器提供正確的數(shù)據(jù)庫目錄的路徑,或者確保環(huán)境變量 PGDATA 已經(jīng)正確設(shè)置。同時還要聲名你想用的特定數(shù)據(jù)庫名字。

            通常,獨立運行的服務(wù)器把換行符當做命令輸入完成字符;它還不懂分號的作用,因為那些東西是在 psql 里的。要想把一行分成多行寫,你必需在除最后一個換行符以外的每個換行符前面敲一個反斜杠。

            但是如果使用了 -j 命令行選項,新行將不被當作命令結(jié)束符。此時服務(wù)器將從標準輸入一直讀取到 EOF 標志為止,然后把把所有讀到的內(nèi)容當作一個完整的命令字符串看待,并且反斜杠與換行符也被當作普通字符來看待。

            輸入 EOF(Control+D)即可退出會話。如果你已經(jīng)使用了 -j 則必須連續(xù)使用兩個 EOF 才行。

            請注意單用戶模式運行的服務(wù)器不會提供復(fù)雜的行編輯功能(比如,沒有命令行歷史)。

            例子
            用缺省值在后臺啟動 postgres :

            $ nohup postgres >logfile 2>&1 </dev/null &在指定的端口啟動 postgres :

            $ postgres -p 1234這條命令將在端口 1234 啟動 postgres 。你應(yīng)該這樣使用 psql 與之連接:

            $ psql -p 1234或者設(shè)置環(huán)境變量 PGPORT :

            $ export PGPORT=1234$ psql命名的運行時參數(shù)可以用下列的風格之一設(shè)置:

            $ postgres -c work_mem=1234$ postgres --work-mem=1234兩種形式都覆蓋那些現(xiàn)有的在 postgresql.conf 里面的 work_mem 設(shè)置。請注意在參數(shù)名里的下劃線在命令行上可以寫成下劃線,也可以寫成連字符。除了用于短期的實驗以外,更好的習慣是編輯 postgresql.conf 里面的設(shè)置,而不是倚賴命令行開關(guān)設(shè)置參數(shù)。

            又見
            initdb, pg_ctl

            postmaster
            Name
            postmaster -- PostgreSQL 數(shù)據(jù)庫服務(wù)器
            Synopsis
            postmaster [option...]

            Description
            postmaster 是 postgres 的別名,反對使用。

            又見
            postgres

            posted on 2013-04-22 14:06 多彩人生 閱讀(1189) 評論(0)  編輯 收藏 引用 所屬分類: postgresql

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久这里只有精品视频99| 亚洲av成人无码久久精品 | 久久亚洲精品无码aⅴ大香| 亚洲国产精品一区二区三区久久| 欧美伊人久久大香线蕉综合69| 久久婷婷国产剧情内射白浆| 久久精品国产亚洲AV大全| 久久国产V一级毛多内射| 中文字幕久久波多野结衣av| 99久久国产综合精品五月天喷水| 亚洲国产视频久久| 久久国产高清字幕中文| 久久99这里只有精品国产| 久久精品国产精品国产精品污| 久久中文字幕精品| 色综合久久中文色婷婷| 亚洲综合熟女久久久30p| 久久国产精品视频| 国内精品人妻无码久久久影院| 日本亚洲色大成网站WWW久久| 99久久精品国产高清一区二区 | 久久久这里有精品| 久久99精品国产麻豆婷婷| 久久国产免费观看精品3| 久久久久久久久久久精品尤物 | 久久婷婷国产麻豆91天堂| 久久亚洲国产成人影院| 久久久久亚洲精品中文字幕| 成人久久久观看免费毛片| 久久天天躁狠狠躁夜夜96流白浆 | 国产精品无码久久久久久| 久久精品综合网| 久久夜色精品国产噜噜亚洲a| 久久五月精品中文字幕| 久久精品中文字幕一区| 久久精品国产黑森林| 久久精品夜色噜噜亚洲A∨ | 久久国产精品久久国产精品| 97久久久久人妻精品专区| 丁香狠狠色婷婷久久综合| 久久美女网站免费|