postgresql搭建主从复制

postgresql搭建主从复制
服务器:
主:172.16.18.100
从:172.16.18.101
端口:5432
配置环境:
1.创建用户组用户
groupadd postgres

useradd -g postgres postgres
2.安装依赖包:
yum -y install gcc gcc-c++ bzip2 gzip zip unzip openssl openssl-devel zlib-devel zlib
yum install readline-devel
3.创建目录
①/opt/itom
②/data/pgdata
③/tmp/itom 作为安装包路径
4.配置环境变量
vi /etc/profile添加
export PATH=/opt/itom/pgsql/bin:PATHexportLDLIBRARYPATH=/opt/itom/pgsql/lib:PATH export LD_LIBRARY_PATH=/opt/itom/pgsql/lib:LD_LIBRARY_PATH
export PGDATA=/data/pgdata
执行命令 source /etc/profile 令配置生效

解压安装:
上传postgresql-9.6.3.tar.gz到/tmp/itom
解压 tar -zxvf postgresql-9.6.3.tar.gz
进入postgresql-9.6.3
执行命令./configure --prefix=/opt/itom/pgsql
完成后执行命令make & make install安装
postgresql搭建主从复制

执行命令su postgres 切换到postgres用户下
初始化数据库执行命令initdb -D /data/pgdata
postgresql搭建主从复制

以上主从都要操作
主节点配置:
执行命令pg_ctl start -D $PGDATA 启动数据库
创建用于流复制的用户。执行命令:psql - h 127.0.0.1 -U postgres
登入数据库:psql -h 172.16.18.100 -U postgres
创建账户 此账户做主从同步使用 执行sql:create user repuser with login replication password ‘123456’;
postgresql搭建主从复制

修改pg_hba.conf 文件,添加如下内容,允许两台计算机上的复制用户和超级用户登录:
host replication repuser 172.16.18.100/32 md5
host replication repuser 172.16.18.101/32 md5
host all postgres 172.16.18.100/32 trust
host all postgres 172.16.18.101/32 trust
在主节点的 postgresql.conf 中设置这些参数:
wal_log_hints = on
log_connections = on
wal_receiver_status_interval = 2s
hot_standby_feedback = on
wal_level = hot_standby
max_wal_senders = 1
archive_mode = on
archive_command = ‘cp %p /data/pgdata/backup/%f’
archive_timeout = 60
并修改监听地址:#listen_addresses=‘localhost’#将上面这行改成如下
listen_addresses=’*’
postgresql搭建主从复制

创建文件夹mkdir /data/pgdata/backup
完成后重启主节点 pg_ctl restart -D $PGDATA
postgresql搭建主从复制
postgresql搭建主从复制
从节点配置:
切换用户 su postgres
ps -ef | grep postgresql 查看节点是否启动若启动
那就关闭节点 pg_ctl stop -D $PGDATA
删除备节点中的数据目录 cd /data/pgdata目录 rm -rf * 清空目录 执行ls -a 查看是否有隐藏文件 一并删除
还原主节点数据到从节点 执行:
pg_basebackup -d “hostaddr=172.16.18.100 port=5432 user=repuser password=123456” -D $PGDATA --checkpoint=fast
postgresql搭建主从复制

数据还原后修改配置文件,修改从节点的 postgresql.conf 文件,设置:hot_standby= on
将 /opt/itom/pgsql/share/中的 recovery.conf.sample 拷贝到 /data/pgdata 下,重命名为recovery.conf:
执行 cd /ocp/itom/pgsql/share cp recovery.conf.sample /data/pgdata mv recovery.conf.sample recovery.conf
postgresql搭建主从复制

并设置如下参数:
recovery_target_timeline = ‘latest’
standby_mode = on
primary_conninfo = ‘host=172.16.18.100 port=5432 user=repuser password=123456’
trigger_file = 'tgfile’
postgresql搭建主从复制

启动从库:pg_ctl start -D $PGDATA
postgresql搭建主从复制

主备环境检测:
主节点插入数据:
登入数据库 psql -h 172.16.18.100 -U postgres

创建表:create table student (id int, name text);
CREATE TABLE
插入的数据:insert into student (id, name) values (1,‘tom’);
INSERT 0 1
postgresql搭建主从复制

从节点检测数据同步:
登入数据库 psql -h 172.16.18.101 -U postgres
postgresql搭建主从复制

执行sql:select * from student;
id | name
----±-----
1 | tom 主节点数据同步到了备机。
以上主从库已经搭建和测试完成。。。。。。。。。以下为导数据操作
1.将数据库sql文件传入主节点(从节点是只读节点)
postgresql搭建主从复制
2. 将数据包sql拷贝到/tmp路径下
如果不是root用情切换root用户 su root
3. 执行命令创建数据库
su postgres -lc “psql -h 172.16.18.100 -U postgres -p 5432 -c “CREATE DATABASE itom;””
postgresql搭建主从复制

  1. 执行命令将数据导入数据库
    su postgres -lc “psql -h 172.16.18.100 -U postgres -p 5432 itom < /tmp/viom.dump &>/dev/null”
    postgresql搭建主从复制

  2. 为数据库创建密码
    登入数据库主节点
    psql -h 172.16.18.100 -U postgres
    执行sql ALTER USER postgres WITH PASSWORD ‘密码’;
    postgresql搭建主从复制

完成!!!