postgresql9.6源码安装
准备工作:
创建用户
#创建用户和组
groupadd postgres
useradd -g postgres postgres
准备安装目录
#进入安装目录
cd /usr/local/
#删除原有安装(如果有的话)
rm -rf postgres*
安装:
#配置
cdpostgresql-9.6.10
./configure --prefix=/usr/local/postgresql--with-perl --with-python
#编译安装
make && make install
#安装contrib目录下的一些工具,是第三方组织的一些工具代码,建议安装
cd contrib
make && make install
环境变量:
根据需要,可以合适的环境变量文件里
vi /etc/profile
export PATH=/usr/local/postgresql/bin:$PATH
exportLD_LIBRARY_PATH=/usr/local/postgresql/lib:$LD_LIBRARY_PATH
数据库存放位置:
[root@pg96 contrib]# mkdir -p /pgdata
授权给psotgres账户:
chown -R postgres.postgres /pgdata
chown -R postgres:postgres /usr/local/postgresql
切换用户到postgres:
设置环境变量:
vi .bash_profile
export PGHOME=/usr/local/postgresql
export PGDATA=/pgdata
#初始化数据库
initdb -D /pgdata
#启动服务
pg_ctl -D /pgdata -l /pgdata/logfile start
[postgres@pg96 ~]$ pg_ctl -D /pgdata -l/pgdata/logfile start
server starting
启停数据库:
启动服务:
pg_ctl start -D /pgdata -l /pgdata/logfile
#重启服务
pg_ctl restart -D /pgdata -l /pgdata/logfile
#停止服务
pg_ctl stop -D /pgdata -l /pgdata/logfile
停止服务,还可以加上-m参数,后面三个选项:
smart:正常关闭,类似Oracle normal
fast:快速关闭,类似Oracle的immediate
immediate:立即关闭,类似Oracle的abort
#登录客户端使用"psql 数据库名"登录数据库。
#缺省数据库名时,连接到默认的数据库postgres。
#本地不用指定数据库
psql
#创建测试数据库
create database micky;
#切换到micky 数据库
\c micky
#创建测试表
create table test (id integer, name text);
#插入测试数据
insert into test values (1,'micky');
#选择数据
select * from test ;
#修改postgresql.conf 文件
vi /pgdata/postgresql.conf
#修改为如下:
listen_addresses = '*'
port = 5432
#--------------------允许远程连接---------------------------
#修改客户端认证配置文件pg_hba.conf,将需要远程访问数据库的IP地址或地址段加入该文件
vi /pgdata/pg_hba.conf
#在文件的最下方加上下面的这句话(出于安全考虑,不建议这样配置)
host all all 0.0.0.0/0 trust
备份恢复:
[root@pg10 pgdata]# mkdir -p /backup
[root@pg10 pgdata]# mkdir -p /archive_wals
[root@pg10 pgdata]# mkdir -p /scripts
[root@pg10 pgdata]# chown -R postgres.postgres /backup
[root@pg10 pgdata]# chown -R postgres.postgres/archive_wals
[root@pg10 pgdata]# chown -R postgres.postgres/scripts/
[root@pg10 pgdata]#
数据库修参数改如下:
alter system set wal_level = 'replica';
alter system set archive_timeout = '30s';
alter system set archive_mode ='on';
alter system set archive_command = 'cp %p/archive_wals/%f';
select pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
[postgres@pg10 pgdata]$ pg_basebackup -Ft -Pv -Xf -z-Z5 -D /backup
pg_basebackup: initiating base backup, waiting forcheckpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/3000028on timeline 1
93025/93025 kB (100%), 1/1 tablespace
pg_basebackup: write-ahead log end point: 0/3000130
pg_basebackup: base backup completed
备份基础库之后创建:
create table micky(a int,b char(5));
insert into micky values(1,'a');
insert into micky values(2,'b');
拷贝恢复配置文件:
cp /usr/local/postgresql/share/recovery.conf.sample/pgdata/data/recovery.conf
编辑该文件如下:
restore_command = 'cp /archive_wals/%f %p'
recovery_target_timeline = 'latest'
恢复基础库:
tar xvf /backup/base.tar.gz -C /pgdata/
如下查看恢复过程:
tail -200f /pgdata/logfile
查看恢复结果:
[postgres@pg10 pgdata]$ psql
psql (10.5)
Type "help" for help.
postgres=# \c micky
You are now connected to database "micky" asuser "postgres".
micky=# \d
Listof relations
Schema | Name | Type | Owner
--------+----------+-------+----------
public |BONUS | table | postgres
public |DEPT | table | postgres
public |EMP | table | postgres
public |SALGRADE | table | postgres
public |micky | table | postgres
public |test | table | postgres
(6 rows)
micky=# select * from micky;
a | b
---+-------
2 | b
1 | a
(2 rows)




