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 后端服務器(postgres),或者顯示一個運行着的服務器的狀態。盡管可以手動啟動服務器,但是 pg_ctl 封裝了重新定向日志輸出,與終端和進程組合理分離,以及另外提供了一個選項用於有控制的關閉。
在 start 模式里會啟動一個新的服務器。服務器是在后台啟動的,標准輸入被附着到了 /dev/null 上。如果使用了 -l ,那么標准輸出和標准錯誤將被定向到一個日志文件,要么就是重定向到 pg_ctl 的標准輸出(而不是標准錯誤)。如果沒有選定日志文件,pg_ctl 的標准輸出應該重定向到一個文件或者用管道輸出到類似 rotatelogs這樣的日志滾動程序,否則,postgres 將把它的輸出寫到控制終端(在后台)並且將不會脫離 shell 的進程組。
在 stop 模式下,那個正在特定數據目錄運行的服務器將被關閉。你可以用 -m 選項選擇三種不同的關閉模式:"Smart"模式等待所有客戶端中斷連接,這是缺省。"Fast"模式並不等待客戶端中斷連接,所有活躍事務都被回滾並且客戶端都被強制斷開。"Immediate"模式將在沒有干凈關閉的情況下強行退出。這么做將導致在重新啟動的時候的恢復。
restart 實際上是先執行一個停止,然后緊跟一個啟動。它允許變換 postgres 的命令行選項。
reload 模式簡單地給 postgres 發送一個 SIGHUP 信號,導致它重新讀取配置文件(postgresql.conf,pg_hba.conf 等),這樣就允許修改配置文件選項而不用重啟系統即可生效。
status 模式監查一個服務器是否在指定的數據目錄運行,如果是,那么顯示其 PID 和調用它的命令行選項。
kill 模式允許你給一個指定的進程發送信號。這個功能對 Microsoft Windows 特別有用,因為它沒有 kill 命令。使用 --help 查看支持的信號名字列表。
register 模式允許你在 Microsoft Windows 上注冊一個系統服務。
unregister 模式允許你在 Microsoft Windows 上刪除先前用 register 命令注冊的系統服務。
選項
- -D datadir
-
聲明該數據庫的文件系統位置。如果忽略則使用 PGDATA 環境變量。
- -l filename
-
把服務器日志輸出附加在 filename 文件上。如果該文件不存在則創建它。umask 設置為 077 ,因此缺省時是不允許從其它用戶向日志文件訪問的。
- -m mode
-
聲明關閉模式。mode 可以是 smart, fast, immediate 之一,或者是這三個的首字母之一。
- -o options
-
聲明要直接傳遞給 postgres 的選項。
參數通常都用單或者雙引號包圍以保證它們作為一個整體傳遞。
- -p path
-
聲明 postgres 可執行文件的位置。缺省位於 pg_ctl 自身所在目錄,如果沒找到則使用硬編碼的安裝目錄。除非你想干點什么特別的事情,並且想得到類似沒有找到 postgres 這樣的錯誤,否則必須使用這個選項。
- -s
-
只打印錯誤,而不打印提示性信息。
- -w
-
等待啟動或者關閉的完成(60 秒超時),這個參數是關閉時的缺省值。成功的關閉是以刪除 PID 文件為標志的。對於啟動而言,一次成功的 psql -l 就標志着成功。pg_ctl 將企圖使用對 psql 合適的端口,如果存在 PGPORT環境變量,那么將用它。否則,它將查找在 postgresql.conf 文件里是否設置了一個端口。如果都沒有,它將使用 PostgreSQL 編譯時的缺省端口(缺省 5432)。在等待的時候,pg_ctl 將根據啟動或者關閉的成功狀況返回一個准確的退出代碼。
- -W
-
不等待啟動或者停止的完成。這是啟動和重啟的缺省。
Windows 選項
- -N servicename
-
要注冊的系統服務的名字。這個名字將用於服務名和顯示名。
- -P password
-
用戶啟動服務的口令
- -U username
-
用於啟動服務的用戶的用戶名。對於域用戶,使用 DOMAIN\username 格式。
環境變量
- PGDATA
-
缺省數據目錄位置
- PGPORT
-
psql 的缺省端口(由 -w 選項使用)。
其它的環境變量請參閱 postgres
文件
- postmaster.pid
-
這個文件存在於數據目錄中是為了幫助 pg_ctl 判斷服務器當前是否在運行。
- postmaster.opts.default
-
如果這個文件存在於數據目錄,pg_ctl (在 start 模式下)將把文件地內容當作傳遞給 postgres 命令的選項傳遞過去,除非被 -o 選項覆蓋。
- postmaster.opts
-
如果這個文件存在於數據目錄,pg_ctl (在 start 模式下)將把文件地內容當作傳遞給 postgres 命令的選項傳遞過去,除非被 -o 選項覆蓋。這個文件的內容也會在 status 模式里顯示出來。
- postgresql.conf
-
這個文件在數據目錄中,會分析它以查找和 psql 一起用的合適的端口(在 start 模式里給出 -w 的時候)。
注意
等待完全啟動還不是一個定義得很完整的操作,如果訪問控制設置為本地客戶端在沒有手工交互的情況下不能訪問的話還可能會失效(比如口令認證)。
例子
啟動服務器
啟動服務器:
$ pg_ctl start
啟動服務器的一個例子,等到服務器啟動了才退出:
$ pg_ctl -w start
服務器使用 5433 端口,而且不帶 fsync
運行,使用:
$ pg_ctl -o "-F -p 5433" start
停止服務器
$ pg_ctl stop
使用 -m 選項停止服務器允許用戶控制如何關閉后端。
重啟服務器
這個命令幾乎等於先停止服務器然后再啟動它,只不過 pg_ctl 保存並重新使用上一次運行服務器的命令行參數。重啟服務器的最簡單的方法是:
$ pg_ctl restart
重啟服務器,等待其停止和重啟:
$ pg_ctl -w restart
使用 5433 端口重啟並且重啟后關閉 fsync
:
$ pg_ctl -o "-F -p 5433" restart
顯示服務器狀態
下面是來自 pg_ctl 的狀態輸出的例子:
$ 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 模式中被調用的命令行。
又見
postgres
pg_resetxlog
名稱
pg_resetxlog -- 重置一個數據庫集群的預寫日志以及其它控制內容語法
pg_resetxlog [-f] [-n] [-ooid ] [-x xid ] [-e xid_epoch ] [-m mxid ] [-O mxoff ] [-l timelineid, fileid,seg ] datadir
描述
pg_resetxlog 清理預寫日志(WAL)並且可以有選擇地重置其它一些存儲在 pg_control 文件中的控制信息。有時候,如果這些文件崩潰了,就需要這個功能。一定只把它用作最后的方法,就是說只有因為這樣的崩潰導致服務器無法啟動的時候才使用。
運行這個命令之后,可能就可以啟動服務器了,但是,一定要記住數據庫可能因為部分提交的事務而含有不完整的數據。你應該馬上轉儲數據,運行 initdb ,然后重新加載。在重新加載之后,檢查不完整的部分然后根據需要進行修復。
這個命令只能由安裝服務器的用戶運行,因為它需要對數據目錄的讀寫權限。出於安全考慮,pg_resetxlog 不使用環境變量 PGDATA ,你必須在命令行上聲明數據目錄。
如果 pg_resetxlog 抱怨說它無法判斷用於 pg_control 的有效數據,那么你可以強制它繼續處理,方法是聲明-f(強制)開關。在這種情況下,那些丟失了的數據將用模糊的近似數值代替。大多數字段都可以匹配上,但是下一個 OID 、下一個事務 ID 、下一個事務 ID 的 epoch(時間點)、下一個多事務 ID(兩階段提交的東西)、下一個多事務偏移量、WAL 開始地址、數據庫區域字段可能需要手工幫助,前面六個可以用下面討論的開關設置。pg_resetxlog 自己的環境是猜測區域字段的來源;看看 LANG 等東西,它們應該和 initdb 運行的環境相匹配。如果你不能判斷所有這些字段的正確數值,那么 -f 仍然可以使用,但是這樣恢復過來的數據庫正確性更值得懷疑:立即轉儲和重新加載是必須的。在轉儲之前不要執行任何修改數據的操作,因為任何這樣的動作都可能把事情搞得更糟糕。
-o, -x, -e, -m, -O, -l 開關允許手工設置下一個 OID 、下一個事務 ID 、下一個事務 ID epoch 、下一個多事務 ID 、下一個多事務偏移量、WAL 起始位置的數值。只有在 pg_resetxlog 無法通過讀取 pg_control 判斷合適的數值的時候才需要它。安全的數值可以用下面的方法判斷:
-
對於下一個事務 ID(-x)而言,一個安全的數值是看看數據目錄里的 pg_clog 里數值最大的文件名,然后加一,然后再乘上 1048576 。請注意那些文件名是十六進制的。通常也以十六進制的形式聲明開關值是最簡單的。比如,如果 0011 是 pg_clog 里最大的記錄,-x 0x1200000 就可以了(后面的五個零提供了合適的乘積)。
-
下一個多事務 ID(-m)的安全值可以通過查看數據目錄里 pg_multixact/offsets 子目錄里面的數字最大的文件名,加一,然后乘以 65536 得到。和上面一樣,文件名是十六進制的,因此最簡單的方法是給開關聲明一個十六進制的開關值,然后在結尾加四個零。
-
下一個多事務偏移量(-O)的安全值可以通過檢查數據目錄里 pg_multixact/members 子目錄下的數字最大的文件名,加一,然后乘以 65536 得到。和上面一樣,文件名是十六進制的,因此最簡單的方法是給開關聲明一個十六進制的開關值,然后在結尾加四個零。
-
WAL 的起始位置(-l)應該比目前存在於數據目錄 pg_xlog 里面的任何文件號都大。它的文件名也是十六進制的,並且有三部分。第一部分是"時間線 ID",通常應該保持相同。第三部分不要選擇大於 255(0xFF);應該是在達到 255 的時候給第二部分增一然后重置第三部分為 0 。比如,如果 00000001000000320000004A 是pg_xlog 里最大的條目,那么 -l 0x1,0x32,0x4B 就可以了;但如果最大的條目是000000010000003A000000FF ,那么選擇 -l 0x1,0x3B,0x0 或更多。
-
沒有很容易的辦法來判斷比數據庫中最大的 OID 大一號的下一個 OID ,不過很走運的是獲取正確的下一個 OID 並非非常關鍵的事情。
-
除了由 pg_resetxlog 設定的字段外,事務 ID epoch 實際上並未存儲在數據庫里的任何地方。所以只要是涉及到數據庫自身的任何數值都有效。你可能需要調整這個值以確保諸如 Slony-I 之類的備份系統能夠正常工作。如果是這樣的話,應當從下游已復制的數據庫中獲取恰當的值。
-n(無操作)開關指示 pg_resetxlog 打印從 pg_control 重新構造的數值然后不修改任何值就退出。這主要是一個調試工具,但是在 pg_resetxlog 真正處理前進行的整潔性檢查的時候可能會有用。
注意
在服務器運行的時候一定不要運行這個命令。如果發現在數據文件目錄里有鎖文件,那么 pg_resetxlog 將拒絕啟動。如果服務器崩潰,那么可能會剩下一個鎖文件;如果這樣,你可以刪除該鎖文件以便允許 pg_resetxlog運行。但是在你這么做之前,一定要確保沒有任何后端服務器進程仍在運行。
postgres
名稱
postgres -- PostgreSQL 數據庫服務器語法
postgres [option...]
描述
postgres 是 PostgreSQL 數據庫服務器。客戶端應用程序為了訪問數據庫,將通過 TCP Socket 或 Unix domain socket 連接到一個運行中的 postgres 進程。然后該 postgres 實例將啟動(fork)一個新的、獨立的服務器進程來處理這個連接。
一個 postgres 總是管理來自同一個數據庫集群的數據。一個數據庫集群是一組在同一個文件系統位置("數據區")存放數據的數據庫。一個系統上可以同時運行多個 postgres 進程,只要他們使用不同的數據區和不同的端口號(見下文)。postgres 啟動時需要知道數據區的位置,該位置必須通過 -D 選項或 PGDATA 環境變量指定。通常,-D 或 PGDATA 都直接指向由 initdb 創建的集群目錄。其他可能的文件布局在節17.2里面有討論。
缺省時 postgres 在前台啟動並將日志信息輸出到標准錯誤。但在實際應用中,postgres 應當作為后台進程啟動,而且多數是在系統啟動時自動啟動。
postgres 還能以單用戶模式運行。這種用法的主要用於 initdb 的初始化過程中。有時候它也被用於調試災難性恢復。不過,單用戶模式運行的服務器並不適合於調試,因為沒有實際的進程間通訊和鎖動作發生。當從 shell 上以單用戶模式調用時,用戶可以輸入查詢,然后結果會在屏幕上以一種更適合開發者閱讀(不適合普通用戶)的格式顯示出來。在單用戶模式下,將把會話用戶 ID 設為 1 並賦予超級用戶權限。該用戶不必實際存在,因此單用戶模式運行的服務器可以用於對某些意外損壞的系統表進行手工恢復。
選項
postgres 接受下列命令行參數。關於這些選項的更詳細討論請參考章17。你也可以通過設置一個配置文件來減少敲擊這些選項。有些(安全的)選項還可以從連接過來的客戶端設置,以一種應用無關的方法僅對該會話生效。比如,如果設置了 PGOPTIONS 環境變量,那么基於 libpq 的客戶端就都把那個字符串傳遞給服務器,並被服務器解釋成 postgres 命令行選項。
通用用途
- -A 0|1
-
打開運行時斷言檢查,是檢測編程錯誤的調試幫助。只有在編譯 PostgreSQL 時打開了它,你才能使用它。如果編譯時打開了,缺省是打開。
- -B nbuffers
-
為服務器進程分配和管理的共享內存緩沖區數量。這個參數的缺省值是 initdb 自動選擇的;參考節17.4.1獲取更多信息。
- -c name=value
-
設置一個命名的運行時參數。PostgreSQL 支持的配置參數在章17里描述。大多數其它命令行選項實際上都是這樣的參數賦值的短形式。-c 可以出現多次從而設置多個參數。
- -d debug-level
-
設置調試級別。數值越高,寫到服務器日志的調試輸出越多。取值范圍是 1 到 5 。還可以針對某次單獨的會話使用 -d 0 來防止從父 postgres 進程繼承日志級別。
- -D datadir
-
聲明數據目錄或者配置文件的文件系統路徑。細節詳見節17.2。
- -e
-
把缺省日期風格設置為"European",也就是說用 DMY 規則解釋日期輸入,並且在一些日期輸出格式里日子在月份前面打印。參閱節8.5獲取更多細節。
- -F
-
關閉
fsync
調用以提高性能,但是要冒系統崩潰時數據毀壞的風險。聲明這個選項等效關閉了 fsync 參數。在使用之前閱讀詳細文檔! - -h hostname
-
指定 postgres 偵聽來自前端應用 TCP/IP 連接的 IP 主機名或地址。數值也可以是一個用空格分隔的地址列表,或者 * 表示監聽所有可用的地址。空值表示不監聽任何 IP 地址,而只使用 Unix 域套接字與客戶端通信。缺省只監聽 localhost 。聲明這個選項等效於設置 listen_addresses 配置參數。
- -i
-
這個選項允許遠程客戶通過 TCP/IP(網際域套接字)與服務器通訊。沒有這個選項,服務器將只接受本地連接。這個選項等效於在 postgresql.conf 中或者通過 -h 選項將 listen_addresses 設為 *
這個選項已經廢棄了,因為它不能實現 listen_addresses 的所有功能。所以最好直接設置 listen_addresses
- -k directory
-
指定 postgres 偵聽來自前端應用連接的 Unix 域套接字的目錄。缺省通常是 /tmp ,但是可以在編譯的時候修改。
- -l
-
這個選項使用 SSL 進行的安全通訊。要使用這個選項,編譯 PostgreSQL 時你必須打開了 SSL 支持。有關使用 SSL 的信息,請參考節16.7。
- -N max-connections
-
設置最多允許同時連接多少個客戶端(也就是最多同時運行多少個服務器進程)。缺省值為 32 ,不過該值最大可以設置為系統所能承受的極限。請注意 -B 的值要求至少兩倍於 -N 的值。參閱節16.4獲取有關大量客戶的系統資源需求。聲明這個選項等效於聲明 max_connections 配置參數。
- -o extra-options
-
在 extra-options 里面指定的命令行選項將被傳遞給所有由這個 postgres 派生的服務進程。如果選項字符串包含任何空白,那么整個字符串必須用引號界定。
反對使用該選項,所有服務器進程的命令行選項都可以直接在 postgres 命令行上指定,不必這么麻煩。
- -p port
-
指定 postgres 偵聽客戶端連接的 TCP/IP 端口或本地 Unix domain socket 文件的擴展。缺省的端口號是環境變量 PGPORT 的值。如果 PGPORT 沒有設置,那么缺省是 PostgreSQL 編譯時指定的值(通常是 5432)。如果你聲明了一個非缺省端口,那么所有前端應用都必須用命令行選項或者 PGPORT 聲明同一個端口。
- -s
-
在每條命令結束時打印時間信息和其它統計信息。這個開關對測試性能和調節緩沖區數量有好處。
- -S work-mem
-
聲明內部排序和散列在求助於臨時磁盤文件之前可以使用的內存數量。參閱節17.4.1里描述的配置變量work_mem
- --name=value
-
設置一個命名的運行時參數;其縮寫形式是 -c
- --describe-config
-
以制表符分隔的 COPY 格式,導出服務器內部配置變量、描述、缺省值。設計它主要是給管理工具使用。
半內部選項
還有幾個其它的選項可以聲明,主要用於調試用途。這些東西在這里列出只是給 PostgreSQL 系統開發人員使用的。強烈反對使用這些選項。另外這些選項的任何一項都可能在未來版本中消失而不加說明。
- -f { s | i | m | n | h }
-
禁止某種掃描和連接方法的使用:s 和 i 分別關閉順序和索引掃描,而 n, m, h 分別關閉嵌套循環,融合(merge)和 Hash 連接。
順序掃描和嵌套循環都不可能完全被關閉。 -fs 和 -fn 選項僅僅是在存在其它方法時阻礙優化器使用這些方法罷了。
- -n
-
該選項主要用於調試導致服務器進程異常崩潰的問題。對付這種情況的一般策略是通知所有其它服務器進程終止並重新初始化共享內存和信號燈。這是因為一個出錯的服務器進程可能在終止之前就已經對共享的東西造成了破壞。該選項指定 postgres 不重新初始化共享數據結構。一個有經驗的系統程序員這時就可以使用調試器檢查共享內存和信號燈狀態。
- -O
-
允許修改系統表的結構。這個參數用於 initdb
- -P
-
讀取系統表時忽略系統索引(但在更改數據時仍然更新索引)。這對於從索引已經損壞的系統表中回復是很有幫助的。
- -t pa[rser] | pl[anner] | e[xecutor]
-
打印與每個主要系統模塊相關的查詢記時統計。它不能和 -s 選項一起使用。
- -T
-
該選項主要用於調試導致服務器進程異常崩潰的問題。對付這種情況的一般策略是通知所有其它服務器進程終止並重新初始化共享內存和信號燈。這是因為一個出錯的服務器進程可能在終止之前就已經對共享的東西造成了破壞。該選項指定 postgres 通過發送 SIGSTOP 信號停止其他所有服務器進程,但是並不讓它們退出。這樣就允許系統程序員手動從所有服務器進程搜集內核轉儲。
- -v protocol
-
聲明這次會話使用的前/后服務器協議的版本數。該選項僅在內部使用。
- -W seconds
-
一旦看見這個選項,進程就睡眠標出的秒數。這樣就給開發者一些時間把調試器附着在該服務器進程上。
- -y database
-
表明這是一個由父 postgres 進程啟動的子進程,並使用指定的數據庫。該選項僅供內部使用。
單用戶模式的選項
下面的選項僅在單用戶模式下可用。
- --single
-
選中單用戶模式。這個必須是命令行中的第一個選項。
- database
-
要訪問的數據庫名字。如果忽略掉則缺省為用戶名。
- -E
-
回顯所有命令
- -j
-
禁止使用新行作為語句分隔符
- -r filename
-
將所有服務器輸出日志保存到 filename 中。在多用戶模式下該選項將被忽略,所有進程都將使用 stderr
環境變量
- PGCLIENTENCODING
-
客戶端使用的缺省字符編碼。客戶端可以獨立地覆蓋它。這個值也可以在配置文件里設置。
- PGDATA
-
缺省數據目錄位置
- PGDATESTYLE
-
運行時參數 DateStyle 的缺省值。現在反對使用該環境變量。
- PGPORT
-
缺省端口(最好在配置文件中設置)
- TZ
-
服務器的時區
診斷
一個提到了 semget 或 shmget 的錯誤信息可能意味着你需要重新配置你的內核,提供足夠的共享內存和信號燈。更多討論,參閱節16.4。你也可以通過降低 shared_buffers 值以減少 PostgreSQL 的共享內存的消耗,或者降低 max_connections 值減少 PostgreSQL 的信號燈的消耗。
如果碰到一個說另外一個服務器正在運行的錯誤信息,可以根據不同的系統使用命令
$ ps ax | grep postgres
或
$ ps -ef | grep postgres
如果確信沒有沖突的服務器正在運行,那么你可以刪除消息里提到的鎖文件然后再次運行。
抱怨無法綁定端口的錯誤信息可能表明該端口已經被其它非 PostgreSQL 進程使用。如果終止 postgres 后又馬上用同一個端口運行它,也可能得到這個錯誤信息;這時,你必須多等幾秒,等操作系統關閉了該端口后再試。最后,如果你使用了一個操作系統認為是保留的端口,也可能導致這個錯誤信息。例如,我的 Unix 版本認為低於 1024 的端口號是"可信任的",因而只有 Unix 超級用戶可以使用它們。
注意
如果有可能,不要使用 SIGKILL 殺死主 postgres 服務器進程。這樣會阻止 postgres 在退出前釋放它持有的系統資源(例如共享內存和信號燈)。這樣可能會影響到將來啟動新的 postgres 進程。
可以使用 SIGTERM, SIGINT, SIGQUIT 信號正常結束 postgres 服務器進程。第一個信號將等待所有的客戶端退出后才退出。第二個將強制斷開所有客戶端,而第三個將不停止立刻退出,導致在重啟時的恢復運行。SIGHUP會重新加載服務器配置文件。也可以向一個單獨的服務器進程發送 SIGHUP 信號,但是這樣做沒什么意義。
pg_ctl 工具可以用於安全而有效地啟停 postgres ,推薦使用。
要推出一個正在運行的查詢,可以向正在執行該查詢的進程發送 SIGINT 信號。
主 postgres 服務器進程向子進程發送 SIGTERM 信號讓它們正常退出;發送 SIGQUIT 信號立即退出且不做清理工作,用戶應當盡量避免使用該信號。同時,發送 SIGKILL 信號也是不明智的:主 postgres 進程將把這個信號當作崩潰信號,然后會強制其他兄弟進程作為標准的崩潰回復過程退出。
臭蟲
-- 選項在 FreeBSD 或 OpenBSD 上無法運行,應該使用 -c 。這在受影響的系統里是個臭蟲;如果這個毛病沒有修補好,將來的 PostgreSQL 版本將提供一個繞開的辦法。
用法
啟動一個單用戶模式的服務器:
postgres --single -D /usr/local/pgsql/data other-options my_database
用 -D 給服務器提供正確的數據庫目錄的路徑,或者確保環境變量 PGDATA 已經正確設置。同時還要聲名你想用的特定數據庫名字。
通常,獨立運行的服務器把換行符當做命令輸入完成字符;它還不懂分號的作用,因為那些東西是在 psql 里的。要想把一行分成多行寫,你必需在除最后一個換行符以外的每個換行符前面敲一個反斜杠。
但是如果使用了 -j 命令行選項,新行將不被當作命令結束符。此時服務器將從標准輸入一直讀取到 EOF 標志為止,然后把把所有讀到的內容當作一個完整的命令字符串看待,並且反斜杠與換行符也被當作普通字符來看待。
輸入 EOF(Control+D)即可退出會話。如果你已經使用了 -j 則必須連續使用兩個 EOF 才行。
請注意單用戶模式運行的服務器不會提供復雜的行編輯功能(比如,沒有命令行歷史)。
例子
用缺省值在后台啟動 postgres :
$ nohup postgres >logfile 2>&1 </dev/null &
在指定的端口啟動 postgres :
$ postgres -p 1234
這條命令將在端口 1234 啟動 postgres 。你應該這樣使用 psql 與之連接:
$ psql -p 1234
或者設置環境變量 PGPORT :
$ export PGPORT=1234$ psql
命名的運行時參數可以用下列的風格之一設置:
$ postgres -c work_mem=1234$ postgres --work-mem=1234
兩種形式都覆蓋那些現有的在 postgresql.conf 里面的 work_mem 設置。請注意在參數名里的下划線在命令行上可以寫成下划線,也可以寫成連字符。除了用於短期的實驗以外,更好的習慣是編輯 postgresql.conf 里面的設置,而不是倚賴命令行開關設置參數。
又見
initdb, pg_ctl
postmaster
Name
postmaster -- PostgreSQL 數據庫服務器Synopsis
postmaster [option...]
Description
postmaster 是 postgres 的別名,反對使用。
又見
postgres
導入SQL文件
可以用postgresql自帶psql程序
psql -U username -W -d dbname -f xx.sql
username 要用有權限做這件事的用戶名
指定導入的數據庫則加上-d dbname
不指定就不用加
之后輸入密碼就行啦
修改數據庫名
ALTER DATABASE abc RENAME TO cba;