PostgreSQL 使用帮助
Windows 下的安装步骤
- 启动安装,修改默认安装目录,例如改为c:/pgsql
- 增加一个普通用户,如postgres, 密码123456,设为永不过期。
- 系统环境变量的PATH增加c:/pgsql/bin 和 c:/pgsql/lib
- 进入c:/pgsql。输入命令 initdb -E UTF-8 -D D:\pgsql\data --locale=Chinese。
- 输入命令:pg_ctl register -N postgres -D c:/pgsql/data -U postgres -P 123456
- 启动服务 pg_ctl -D "D:/pgsql/data" -l logfile start
- 启动控制面板/管理工具/服务,可以看到名为postgres的服务。将其启动类型改
为手动,在属性/登录标签下输入密码和确认密码123456。
- 以postgres身份输入命令psql可进入客户端。
其他相关命令
卸载后台服务:
pg_ctl unregister -N postgres 卸载服务
pg_ctl start [-w] [-D 数据目录] [-s] [-l 文件名] [-o "选项"]
pg_ctl stop [-W] [-D 数据目录] [-s] [-m 关闭模式]
pg_ctl restart [-w] [-D 数据目录] [-s] [-m 关闭模式] [-o "选项"]
pg_ctl reload [-D 数据目录] [-s]
pg_ctl status [-D 数据目录]
pg_ctl kill 信号名称 进程号
pg_ctl register [-N 服务名称] [-U 用户名] [-P 口令] [-D 数据目录]
[-w] [-o "选项"]
pg_ctl unregister [-N 服务名称]
备份所有数据
导出SQL
pg_dumpall > db.sql
pg_dump dbname | gzip > filename.gz '压缩保存
psql -f pg.sql
-W
强制给出口令提示。如果服务器要求口令认证,那么这个应该自动发生。
可以配置pg_hbd.conf 设置本地不使用密码登录,这样更加方便
备份:pg_dump -h 127.0.0.1 -p 5432 -U tradesns -W -F c -b -v -f "/home/tradeworkwangbin/us2010.backup" us2010
恢复:pg_restore -h 127.0.0.1 -p 5432 -U postgres -W -d us2011 -v "/root/us2010.backup"
备份所有一个数据库
$ pg_dump mydb > db.out
$ pg_dump -Ft -b mydb > db.tar
$BinDir/pg_dumpall -h 127.0.0.1 -U postgres | gzip> $backDateFile
out 类型文件
pg_restore.exe --host localhost --port 5432 --username postgres --dbname esa --verbose "E:\Dl\esa.backup"
SQL 导入数据库
psql -f db.sql postgres
psql -f db.sql
主从复制方式
PostgreSQL 数据库扩展方式主要有三种:
1。主从复制方式
PostgreSQL和Mysql的Master-Slave复制原理一样,一个服务器充当主服务器,而一个或多个其它服务器充当从服务器;主服务器处理读写请求,从服务器只处理读请求。
Linux下主从配置
环境配置
修改 /etc/sysconfig/i18n 文件
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
改为:
LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"
先安装依赖库
yum install readline-devel
yum install zlib-devel
一.安装Postgresql9.x
- 下载Postgresql9.x下载源码
- 在两个数据库服务器上执行以下操作安装Postgresql9.x
设置 /database/pgsql 为安装路径
useradd postgres //创建postgres用户
passwd postgres //设置用户密码
mkdir /database/pgsql **创建数据文件目录**
tar -zxvf postgresql-9.x.tar.gz
cd postgresql-9.x
./configure --enable-nls=zh_CN --prefix=/database/pgsql
make
make install
./initdb -E UTF-8 -D /database/pgsql/data
参考
https://www.cnblogs.com/d-homme/p/9357013.html
/usr/local/postgresql/bin/initdb -E UTF-8 -D /usr/local/postgresql/data
二.权限分配
chown -R postgres:postgres /database/pgsql
chown postgres:postgres /etc/init.d/postgresql
chmod a+x /etc/init.d/postgresql
chmod 700 /database/pgsql/data
chown -R postgres:postgres /database/pgsql/bin/*.sh
三.设置启动
PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下的linux
cp linux /etc/init.d/postgresql
chkconfig --add postgresql
chmod a+x postgresql
启动PostgreSQL服务
service postgresql start
通过下面的命令可以查看系统中运行的postgres进程
ps -ef | grep postgres
四.主从配置
先创修改密码,和建用户备份用户
psql –p 5432 –U postgres –h 127.0.0.1
alter user postgres with password '密码';
create user repl superuser password '密码'
修改postgresql.conf文件
vi /database/pgsql/postgresql.conf
listen_addresses = '*'
wal_level = hot_standby
synchronous_commit = on
max_wal_senders = 2
wal_keep_segments = 32
synchronous_standby_names = '*'
修改pg_hba.conf文件
vi /database/pgsql/pg_hba.conf
local all postgres trust
# IPv4 local connections:
host all all 0.0.0.0/0 md5
两边都安装好后开始同步data目录
select pg_start_backup('/database/pgsql/data');
scp -r /database/pgsql/data/* postgres@对方ip地址:/database/pgsql/data/.
select pg_stop_backup();
五.同步后修改目录权限
修改Slave数据库postgresl.conf
synchronous_commit = off
max_wal_senders = 0
wal_keep_segments = 0
synchronous_standby_names = ''
hot_standby = on
编辑recovery.conf文件
cp /database/pgsql/share/recovery.conf.sample /database/pgsql/recovery.conf
vi /data/pgsql9.1/ recovery.conf
standby_mode = 'on'
primary_conninfo = 'host=主数据库ip port=5432 user=repl password=密码'
trigger_file = '/database/pgsql/master.trigger'
启动Slave数据库
如何知道主备是否一致
主机:
select pg_current_xlog_location();
备机:
select pg_last_xlog_receive_location();
如果这俩相差不大,基本可以判断数据已同步了
6.建立快捷方式
ln -s /database/pgsql/bin/psql /sbin/psql
psql常用命令
- 列出所有的数据库
mysql: show databases
psql: \l或\list
- 切换数据库
mysql: use dbname
psql: \c dbname
- 列出当前数据库下的数据表
mysql: show tables
psql: \d
- 列出指定表的所有字段
mysql: show columns from table name
psql: \d tablename
- 查看指定表的基本情况
mysql: describe tablename
psql: \d+ tablename
- 退出登录
mysql: quit 或者\q
psql:\q
psql密码提示
虽然配置pg_hba.conf 文件后可以无密码的登陆本地pgsql了,但如果要登陆pgbouncer.md 或其他应用还是可能会出现密码提示,
下边是自动填写密码方法,通过在客户端 /home/postgres 目录下创建隐藏文件 .pgpass ,从而避免连接数据库时弹出密码输入提示。
--创建密码文件 .pgpass ( on 客户端 )
vi /home/postgres/.pgpass
--格式
hostname:port:database:username:password
--范例
192.168.1.25:6432:Mydb:postgres:mypassword
--权限
chown -R postgres:postgres /home/postgres/
chmod 600 .pgpass
如果出现启动时目录无权限切换
chmod +r+x /home
开启9.4 slot特性
在主库上创建 slot
postgres=# select * from pg_create_physical_replication_slot('slot1');
从库配置 recovery.conf
primary_slotname = 'slot1'
重启后,主库上验证
postgres=# select * from pg
replicationslots ;
active 表示是否使用