安装PostgreSQL前,确认Internet连接正常,以便下载安装文件。
先使用
yum -y update
指令升级系统到最新版本。
本安装将PostgreSQL的数据文件与执行文件分离,如果你打算设置到不同的路径,注意修改对应的执行命令和数据库初始化脚本。
# 修改防火墙设置,打开5432端口
vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
# 重启防火墙使新设置生效
service iptables restart
# 新增用户组
groupadd postgres
# 新增用户
useradd postgres -g postgres
# 新建数据库执行文件目录
mkdir -p /usr/local/pgsql
# 新建数据库数据文件目录
mkdir -p /db/pgsql/data
# 修改目录拥有者
chown -R postgres /usr/local/pgsql/.
chown-R postgres /db/pgsql/data
chown-R postgres /db/pgsql/data/.
# 编辑PATH搜索路径
vi /etc/profile
添加下面的两行:
PATH=/usr/local/pgsql/bin:$PATH
export PATH
# 生效PATH搜索路径
source /etc/profile
# 安装编译源码所需的工具和库
yum -y install wget gcc readline-devel zlib-devel make
# 进入源码压缩包下载目录
cd /usr/src
# 下载源码压缩包
tar jxvf ./postgresql-x.x.x.tar.bz2
# 进入解压缩源码目录
cd ./postgresql-x.x.x# 执行源码编译配置脚本
./configure
# 编译源码、安装
make
make install
#变更登录用户
su - postgres
# 执行数据库初始化脚本
/usr/local/pgsql/bin/initdb --encoding=utf8 -D /db/pgsql/data
# 退出变更登录
exit
# 复制PostgreSQL执行脚本
cp /usr/src/postgresql-x.x.x/contrib/start-scripts/linux /etc/init.d/postgresql
# 增加执行权限
chmod +x /etc/init.d/postgresql
#编辑PostgreSQL执行脚本,指定数据库文件目录
vi /etc/init.d/postgresql
PGDATA="/db/pgsql/data"
# 编辑配置文件,配置可访问数据库的网络地址
(注意别忘了去掉#listen_addresses=前面的#)
vi /db/pgsql/data/postgresql.conf
listen_addresses= '*'
# 启动PostgreSQL服务
service postgresql start
#以postgres用户登录数据库,修改postgres用户的数据库密码
psql -U postgres
postgres=# ALTER USER postgres PASSWORD 'postgres';
postgres=# \q
# 编辑配置文件,设置密码md5验证
vi /db/pgsql/data/pg_hba.conf
#"local" is forUnix domain socket connections only
local all all md5
# IPv4 local connections:
#host all all127.0.0.1/32trust
host all all0.0.0.0/0 md5
# 重启数据库服务
service postgresql restart
# 设置开机自动启动服务
chkconfig postgresql on
打开端口号:iptables -A INPUT -ptcp --dport 5432 -j ACCEPT
自动备份
编写shell脚本,保存为/home/postgres/dump.sh
#!/bin/bash
export PGPASSWORD="postgres"
pg_dump Test| gzip > /home/postgres/Test$(date +%Y%m%d).backup.gz
$(date +%Y%m%d)可自行设置。运行pg_dump 需要postgres设置的密码,每次都要手动输入。
所以加上export PGPASSWORD="postgres"可以自动输入密码。
设置执行权限,执行
chmod +x dump.sh
测试脚本是否可以备份数据库。在root用户下执行
su - postgres /home/postgres/dump.sh
如果正常则会生成一个类似于Test20141229.backup.gz的文件。
2、加入自动调度,
Vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/src/postgresql-9.3.1/src/bin/pg_dump
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
25 18 * * * postgres /home/postgres/dump.sh
刚开始运行时备份文件能生成,但是文件是空的,查一下/var/spool/mail 的文件发现pg_dump命令未发现
所以添加了PATH路径:/usr/src/postgresql-9.3.1/src/bin/pg_dump。25 18 * * * 是开始自动备份的时间 每天18:25
重新运行后成功
3、设置/home/db目录权限:
chown postgres.postgres /home/db -R 这样就会每天生成1个类似于Test20141229.backup.gz的压缩文件。