PostgreSQL的warm standby安装配置详解
Leave a Comment2009年08月19日 作者: 大头刚
PostgreSQL的warm standby和Oracle的dataguard类似,简单说了就是1台主库primary,1台备库standby,standby利用primary的归档日志,使standby的数据和primary实时的同步,当primary宕机的时候,能及时的切换到standby。
当然,和oracle的dataguard技术相比,warm standby的功能没有那样完善,例如standby不提供只读,不能进行swtich,只提供failover等。相关的中文文档也是很少,PostgreSQL的路还很长呀。
下面以最新的8.4.0版本为例,介绍下如何配置PostgreSQL warm standby,简单的说就是4步。
1、安装PostgreSQL
在primary和standby的2台机器上安装配置好PostgreSQL,版本最好是一样的。安装方法可以参考我前面的文章,这里就不介绍了。
2、在primary配置WAL。
配置参数:
archive_mode = on
archive_command = ’scp %p standby_ip:/var/wal_archive/%f </dev/null’ #standby_ip是指备库的ip地址。
archive_timeout = 1200
这里注意archive_command是用的SCP,就是说归档到standby机器的指定目录,SCP不输密码配置可以去网上搜索。
archive_timeout设置根据自己的业务来把。
3、在primary进行一次全备,在恢复到standby。
3.1 在primary上进行备份,开启备份标识
echo “SELECT pg_start_backup(’mybackup’);” | psql -U postgres
3.2 将primary的数据文件备份打包,并传到standby
tar -cvf /shared/mybackup.tar /var/pgsql/data
scp /shared/mybackup.tar standby_ip:/var/pgsql
3.3 把备份解压到相对应的目录
rm -rf /var/pgsql/data
cd /var/pgsql
tar -xvf mybackup.tar
chown -R postgres:postgres data
3.4 在primary关闭备份标识
echo “SELECT pg_stop_backup();” | psql -U postgres
4、在standby配置recovery.conf,然后进行恢复。
4.1 创建recovery.conf
restore_command = ‘pg_standby -d -s 2 -t /tmp/pgsql.trigger.5442 /var/wal_archive [...]
PostgreSQL新手十大注意事项
Leave a Comment2009年08月10日 作者: 大头刚
上回介绍了怎么安装PostgreSQL,对于新手来说,还是有很多需要注意的地方,比如一些参数的配置和一些习惯命令的不同,下文给出自己的一些心得,希望能对刚接触的人有些帮助,少走一些弯路。本文不会对每个参数的含义详细解释,有兴趣的朋友可以自己搜索。
1.log日志配置
PostgreSQL的系统日志和报错日志等,默认是直接输出了,没有写入到文件,如果你希望能查看这些日志,需要修改postgresql.conf,如下:
log_destination = ’stderr’
logging_collector = on
log_directory = ‘pg_log’
log_min_duration_statement = 5000
上面这些参数的意思就是,把pgsql的日志到输出到pgsql数据目录的pg_log目录下,同时超过5000毫秒的操作将记录。
2.用户认证和监听
PostgreSQL的用户认证是通过pg_hba.conf来设置,默认都是trust,即本地帐户能直接登录。显然不安全,你可修改如下:
# “local” is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
上面这些参数的意思是,本地连接pgsql需要密码md5认证,192.168.1.xx 网段允许连接,密码也需要通过md5认证。
如果需要从其他客户端连接,还需要修改postgresql.conf的liston_addresses参数,这个参数和oracle的监听的作用类似。
listen_addresses = ‘*’
3.密码文件
通过2设置成md5验证后,虽然在安全方面有了提高,但是同时会造成一些麻烦,比如你的shell脚本需要使用psql能直接连接,这种情况你可以使用密码文件。通过在用户的根目录下,创建一个.pgpass文件。并将权限设置为0600。
文件的格式如下:
hostname:port:database:username:password
4.psql常用容易混淆的命令
通过psql登录到PostgreSQL,有些命令可能和其他数据库有些区别,这里和mysql对比下,介绍几个你很可能搞混的命令:
pgsql mysql
\c use
\q quit
\d desc
5.系统参数配置
PostgreSQL在安装的时候,并没有要求修改系统默认配置,那是因为其默认的内存等参数很小,不会超过系统的默认配置。例如你加大shared_buffers等参数的值时,基本都会超过默认系统参数。这时你需要修改这些配置
编辑 /etc/sysctl.conf,加入以下内容:
kernel.shmall = 3145728
kernel.shmmax = 12884901888
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default [...]
在linux下的安装postgresql
2 Comments2009年07月29日 作者: 大头刚
1.下载并解压
到官方网站下载安装文件,可以选择编译好的,也可选择源代码安装,本例使用源代码
最新版本是8.3.7(目前到了8.4),下载到安装目录,解压
cd /usr/local/
tar -xzvf postgresql-8.3.7.tar.gz
2.添加postgresql用户
groupadd postgresql
useradd postgresql -g postgresql
mkdir pgsql
chown -R postgresql.postgresql pgsql/
cd postgresql-8.3.7
3.开始编译安装
./configure –prefix=/usr/local/pgsql
make
make install
如果遇到下面报错
configure: error: readline library not found
方法1: 安装该软件包
apt-get install libreadline5 libreadline5-dev
方法2: –without-readline 选项关闭 readline 功能,即:
./configure –prefix=/usr/local/pgsql –without-readline
4.添加环境变量
su - postgresql
cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. [...]



