logo资料库

pg+pgpool+Ubuntu 实现分布式流复制模式.docx

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
1.构架图
2.主机宕机后构架图
3.恢复完成后构架图
4.实际部署图
5.操作步骤
1.安装pg
2.配置ssh无密码连接(postgres)
3.配置pg流复制模式(@slave1,@slave2)
4.安装pgpool(执行pgpool的系统用户必须有ssh无密码连接的权利,建议使用postgres用
5.配置pgpool,实现主备自动切换(原master宕机,以下统称M-1)
6.恢复并挂载宕机服务器
7.新master宕机后,主备机切换(新master宕机,以下统称M-2,slave 21重新升级为ma
1. 构架图 本文档由 postgreSQL 专业群 深圳-GS 初稿, PostgreSQL 群 beta 2015-01-18 日修订 主要工作有 GS 完成 2. 主机宕机后构架图 3. 恢复完成后构架图
4. 实际部署图 5. 操作步骤 1. 安装 pg apt-get install postgresql-9.1 a) b) :apt-get install postgresql-contrib-9.1 c) :apt-get install libpq-dev d) :apt-get install postgresql-server-dev-9.1 e) :配置系统用户 postgres 密码:pg f) :使用 root 用户,创建目录用来做后面的归档目录
g) :进入 postgres 的 home 目录,vim .bash_profile 添加环境变量,修改完成后使用 source .bash_profile 激活环境变量 h) :配置数据库超级用户 postgres 密码:pgdb,并使用\q 推出 SQL 命令模式 i) 进入 postgres 配置目录(下面目录只针对 pg 在 ubuntu 上的 apt-get 默认安装) j) 修改:pg_hba.conf: 添加行: host host host replication replication replication postgres postgres postgres 192.168.141.142/32 192.168.141.140/32 192.168.141.141/32 trust trust trust k) 修改 postgresql.conf i. ii. iii. iv. v. vi. 启用参数:listen_addresses 配置端口:port = 5432 启用参数:wal_level = hot_standby 启用参数:archive_mode = on 启用参数:hot_standby = on 启用参数:max_wal_senders = 2 archive_command = 'cp %p /opt/archivedir/%f'
l) 推出当前 shell 连接,重新登录系统用户 postgres,确保环境变量生效 m) 创建配置文件 postgres.conf 软连接文件到$PGDATA 目录: ln /etc/postgresql/9.1/main/postgresql.conf /var/lib/postgresql/9.1/main/ 否则在使用 pg_ctl start 启动数据库是出现如下错误: n) 启动数据库(系统用户 postgres 下执行 pg_ctl restart) 2. 配置 ssh 无密码连接(postgres) 把 B 主机的公钥文件拷贝到 A 主机的 authorized_keys ,这样 B 主机可以 ssh 免密码登录 A 可以通过查看 /var/log/secure 来查看登录信息,这种方式为 publickey a)安装 ssh 服务:apt-get install ssh b)切换到系统用户 postgres,执行 ssh-keygen -t rsa 命令,后续默认回车,并生成类似二维 码的东西。 c)进入用户的 home 目录,用 ls 可以看到.ssh 的文件夹,进入.ssh 文件夹,查看文件:
a) 使用 cat id_rsa.pub >> authorized_keys (####名称必须是 authorized_keys) b) 使用 scp authorized_keys node2_ip:~/.ssh/node1 将当前的 authorized_keys 发送到 node2 和 node3 的 postgres 主目录下面的.ssh 文件夹下,并命名为 node1 c) 使用同样的方法,在 node2,node3 上面将 authorized_keys 传送给其他的 2 个节点 上面,并使用 cat node* >> authorized_keys 追加到 authorized_keys 里面 d) 测试无密码连接是否生效:在第一次连接输入密码后,以后的连接都不用输入密 码 3. 配置 pg 流复制模式(@slave1,@slave2) a) 使用 pg_ctl 命令,停止 slave1,slave2 的 PG 服务(@slave)
b) 返回 master 服务器,执行如下命令 postgres@xelg-linux:~/.ssh$ psql psql (9.1.13) Type "help" for help. postgres=# select pg_start_backup('stream_bak'); pg_start_backup ----------------- 0/2000020 (1 row) postgres=# \q c) 使用命令 scp -r 9.1/ 192.168.141.140: 和 scp -r 9.1/ 192.168.141.141: 将备份文件分 别传送给 slave1 slave2(@master) d) 在 master 上面执行如下命令(@master) postgres@xelg-linux:~$ psql psql (9.1.13) Type "help" for help. postgres=# select pg_stop_backup(); NOTICE: pg_stop_backup complete, all required WAL segments have been archived pg_stop_backup ---------------- 0/2000168 (1 row) postgres=# e) 切 换 终 端 到 slave1 和 slave2 , 进 入 ~/9.1/main 目 录 , 并 执 行 vi recovery.conf (@slave1 slave2)
f) 添加行: 编辑文件 $PGDATA/recovery.conf standby_mode = 'on' primary_conninfo = 'host=192.168.141.142 port=5432 user=postgres password=pgdb' restore_command = 'scp 192.168.141.142:/opt/archive/%f %p' recovery_target_timeline='latest' trigger_file=/tmp/trigger_file0 g) 使用 pg_ctl 启动 slave1,slave2 数据库,并出现流复制成功连接到主节点,表示 已经成功配置了 pg 的复制模式。 h) 测试:返回 master 节点,执行创建数据库命令,并在 slave1,slave2 上查看,是否 已经同时创建该数据库 i) 测试:返回 slave1,slave,执行创建数据库命令,出现如下提示:到现在 PG 流复 制已经成功配置 4. 安装 pgpool(执行 pgpool 的系统用户必须有 ssh 无密码 连接的权利,建议使用 postgres 用户安装 pgpool) 在 master 执行命令 ./configure --with-pgsql=/var/lib/postgresql --with-pgsql-libdir=/usr/lib/postgresql/9.1/lib --with- pgsql-includedir=/usr/include/postgresql 安装 pgpool 5. 配置 pgpool,实现主备自动切换(原 master 宕机,以 下统称 M-1) a) 使用 Root 用户进入目录:/usr/local/etc
b) 用户命令:pg_md5 获取数据库用户 postgres 密码 pgdb 的 MD5 值 c) 执行修改 pcp.conf d) 执行修改 pgpool.conf e) 执行修改 poo_hba.conf f) 按照 pgpool.conf 里面配置的 failover_command 参数,在对应的目录下创建脚本文 件 g) 参考下面内容: h) pgpool.conf pcp.conf mkdir /var/run/pgpool pool_hba.conf 配置完成后,使用 root 用户创建文件夹: i) 使用 pgpool 命令启动 pgpool j) 切换系统用户到 postgrs,执行命令 psql –p 9999,看到如下界面是表示 pgpool 已 经安装 OK 6. 恢复并挂载宕机服务器 a) 返回 master 服务器,切换到系统用户 postgres,执行 pg_ctl-m fast stop b) 切换到 slave1,出现如下提示:首先提示主连接失去连接,然后开始启动本地编 辑 c) 切换到 slave2,出现如下提示
分享到:
收藏