postgresl安装及主从配置

Postgresql安装

A.        下载Postgresql,通常下载到的是Postgresql源码包,以.tar.gz后缀结尾

B.        上传源码包到Linux环境,在命令提示符下执行以下命令:

#tar –zxvf postgresql.tar.gz

#cd postgresql

#./configure

#make

#make install

C.创建postgresql用户组和用户:

#groupadd postgres

#useradd -g postgres postgres

D.创建数据库库文件存储目录,将存储目录权限交给postgresql用户

#mkdir/usr/local/pgsql/data

#cd/usr/local/pgsql    

#chown postgres/usr/local/pgsql/data 

#chown -Rpostgres /usr/local/pgsql 

e.  su – postgres 

初始化数据库:
#/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

 

F.配置允许远程连接(su –postgres)

 

vi /usr/local/pgsql/data/pg_hba.conf 

# IPv4local connections:

host    all             all             127.0.0.1/32            trust

host    all             all             10.181.157.59/24        trust

host    all             all             10.181.157.58/24        trust

标红位置为你需要访问数据库的电脑的IP地址

G.配置监听地址和端口

#vi/usr/local/pgsql/data/postgresql.conf         

listen_addresses='*'         #取消该行的注释,并将单引号内的值设为*

port =5432                 #取消该行的注释

H.现在再次重启数据库

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start(启动)

 

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile stop(关闭)

 

强制关闭

/usr/local/pgsql/bin/pg_ctl-m fast -D /usr/local/pgsql/data -l logfile stop

 

J运行数据库服务器:
#/usr/local/pgsql/bin/pg_ctl-D /usr/local/pgsql/data -l logfile start(启动)

然后服务启动了

f.修改Postgres密码:(su – postgres) 数据库服务要开启

 

#cd  /usr/local/pgsql/bin 

#./psql

postgres=# ALTER USER postgres WITH PASSWORD '123456'; 

postgres=# \q            (保存并推出)

 

 

自动启动

随机启动只要修改OS的配置文件/etc/rc.local文件即可,这是个软连接文件,

新增一行数据库启动的命令即可

# vi /etc/rc.local

加入如下语句

su - postgres -c'/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start'  

 ostgresql以服务方式启动

postgresql以服务方式启动的脚本在安装程序中已经有了,无需再人工手写,在安装程序的目录:/contrib/start-scripts/linuxlinux就是脚本。

cp 那个脚本/etc/init.d/postgresql

$ chmod +x /etc/init.d/postgresql

$ chkconfig --add postgresql

$ chkconfig postgresql on

此时postgresql便能以服务方式启动

service postgresql  start  

service postgresql  stop        

在操作中如果遇到如下错误:请按照以下方式解决

bash:chkconfig: command not found

[root@user~]# chkconfig
bash: chkconfig: command not found
[root@user~]# rpm -aq |grep chkconfig
chkconfig-1.3.30.2-2.el5
[root@user~]# export PATH=/sbin:$PATH
[root@user~]# chkconfig
chkconfig version 1.3.30.1 - Copyright (C) 1997-2000 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage:   chkconfig --list [name]
         chkconfig --add <name>
         chkconfig --del <name>
         chkconfig [--level<levels>] <name> <on|off|reset|resetpriorities>

[root@user~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/gtl/bin
[root@user~]# PATH="$PATH":/sbin
[root@user~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/gtl/bin:/sbin

 

数据库集群

数据库的安装路径/usr/local/pgsql

主数据库地址:10.181.76.60

备数据库地址:10.181.76.58

一、主数据库配置

数据库集群需要在系统上建立postgresrepl账号,密码方便最好是:123456              

1.      添加同步账号

#groupadd repl

#useradd -g repl repl


passwd   repl

#groupadd postgres

#useradd -g postgres postgres


passwd  
postgres

 

 

你是普通用户的话,修改自己的密码,用:passwd,就可以了,会让你先输入自己的旧密码,再输入两遍新密码。

最常用最简单的用法:passwd   tom,修改tom用户密码。

你是root的话,用:password username,就可以修改username的密码了,直接输入两遍新密码就可以了,不用输入旧密码。

 

su – postgres 

cd   /usr/local/pgsql/bin/  

./psql

create user repl superuser login password  ‘123456’; 

\q

2.      修改访问控制

vi   /usr/local/pgsql/data/pg_hba.conf 

添加一句:

host   replication     repl            10.181.76.58/32         trust

 

第三项“repl”即第二步创建的用户;第四项需要修改为包含slave服务器IP地址的IP段(或直接指定slaveIP地址);第五项使用md5会要求密码,换成trust则不要求。

 

3.      修改postgresql服务配置文件

vi /usr/local/pgsql/data/postgresql.conf  

主要配置修改如下:

wal_level = hot_standby

archive_mode = on

archive_command = ‘cp  -i  %p  /usr/local/pgsql/archivedir/%f </dev/null ’

#  archive_timeout= 600  #此句一定要慎用,不能放在生产上,仅作测试用【该句话会每600秒产生数据库备份文件】

max_wal_senders = 5

wal_keep_segments = 32

 

与热备有关的参数:

wal_levelWALWrite-AheadLogging,预写日志)级别,启动时生效。有三种级别,分别为minimal(默认值)、archivehot_standby

minimal:只会记录必要的日志,用于在崩溃或直接关闭后恢复数据库

archive:记录的日志可被用作WAL存档

hot_standby:记录的日志可被用于热备

max_wal_senders:指定允许最大用于热备服务器的连接数,启动时生效

wal_keep_segments:指定最少保留的WAL片段数量(即pg_xlog中以16进制命名的文件),超过这个数量后,master可能会移除过多的WAL文件,reload时生效。如数值过小,可能会导致slave复制失败;在设置了archive_mode时非必须

archive_mode:是否开启WAL存档模式,启动时生效。WAL存档会让master在移除WAL片段时留下备份,以便slave恢复时使用。非必须,但可以确保slave在停机较长时间后仍能通过WAL恢复,而不必重新复制basebackup

archive_commandarchive_mode开启时,存档执行的shell命令,reload时生效;一般用cp将文件复制到一个本地目录即可,archive_mode关闭时无需设置

 

 

 

4.      建立归档目录

su – postgres 

mkdir /usr/local/pgsql/archivedir/ 

5.      重启服务

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -llogfile stop(关闭)

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -llogfile start(启动)

 

二、备份数据库配置

1.      修改postgresql配置文件

vi /usr/local/pgsql/data/postgresql.conf 

主要配置修改如下:

wal_level =hot_standby 

hot_standby= on 

2.      新建recovery.conf文件:

vi /usr/local/pgsql/data/recovery.conf 

内容如下:

restore_command= ‘cp /usr/local/pgsql/data/archivedir/%f %p’ archive_cleanup_command =’pg_archivecleanup/usr/local/pgsql/archivedir %r’

standby_mode= ‘on’

primary_conninfo= ‘host=10.181.76.60 port=5432 user=repl password=123456’

trigger_file= ‘/usr/local/pgsql/trigger_activestb’

3.      把两个文件复制到临时文件夹

cp/usr/local/pgsql/data/postgresql.conf /home 

cp/usr/local/pgsql/data/recovery.conf /home 

4.      停止postgres服务

su – postgres  

/usr/local/pgsql/bin/pg_ctl-D /usr/local/pgsql/data -l logfile stop(关闭)

5.      删除data文件夹

su – postgres      

cd  /usr/local/pgsql/ 

rm –rfdata          

mkdir data          

chmod -R 700data    

 

 

三、到主数据库上:

 

对主数据库做基础备份

cd   /usr/local/pgsql/bin/   

./psql –d postgres           

select pg_start_backup(‘/test/pgstb’); 

\q

 

把主数据库目录拷贝到备库目录(等备份数据两个配置文件建立,删除data文件夹后执行)

su  —   root

scp  –r /usr/local/pgsql/data/*  10.181.76.58: /usr/local/pgsql/data/ 

 

 

结束主库的备份状态

cd   /usr/local/pgsql/bin/

./psql  –d  postgres 

select  pg_stop_backup();

\q

 

四、到从数据库上:

删除pid文件,拷贝recovery.conf和postgresql.conf文件(拷贝主数据库基础数据后执行)

 

cp /home/recovery.conf   /usr/local/pgsql/data

cp /home/postgresql.conf   /usr/local/pgsql/data

 

启动postgres服务

/usr/local/pgsql/bin/pg_ctl-D /usr/local/pgsql/data -l logfile start(启动)

使用总结

1.   目前测过的PostgreSQL版本有9.1.29.1.3的,目前看来,小版本之间是可以互通的。

2.   别偷懒,base backup是必须得复制的,哪怕你在slave上创建一个完全干净的cluster都不行。

3.   32位和64位的WAL日志疑似不兼容,网上有文章写过,不过我没有排除可疑项进一步测试。

4.   localezh-CN.UTF-8时,PostgreSQL的部分log会抽风(不是WAL),显示一堆问号,估计是GBKUTF-8编码没挑清楚。可以在postgresql.conf里将lc_messages改成en-US.UTF-8解决(系统并不一定带有en-US.UTF-8这个locale,可以用dpkg-reconfigurelocales给装上)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值