3. 恢复完成后构架图 4. 实际部署图 5. 操作步骤 1. 安装 pg a) apt-get install postgresql-9.1 b) :apt-get install postgresql-contrib-9.1

Similar documents
厨房小知识(四)

妇女更年期保健.doc

小儿传染病防治(上)

<4D F736F F D B875B9B5A448ADFBBADEB27AA740B77EA4E2A5555FA95EAED6A641ADD75F2E646F63>

女性青春期保健(下).doc

避孕知识(下).doc

孕妇饮食调养(下).doc

禽畜饲料配制技术(一).doc

中老年保健必读(十一).doc

i

怎样使孩子更加聪明健康(七).doc

i

二零零六年一月二十三日會議

马太亨利完整圣经注释—雅歌

(i) (ii) (iii) (iv) 380,000 [ ] , , % % % 5.5% 6.5%

兽药使用常识(六).doc

ssh-keygen -t rsa

Practical Guide For Employment Of Foreign Domestic Helpers

目 錄 校 徽 圖 解 1 校 訓 釋 義 2 中 華 人 民 共 和 國 國 歌 3 順 德 聯 誼 總 會 屬 校 校 歌 4 辦 學 宗 旨 及 目 標 5 校 規 8 獎 懲 制 度 14 其 他 規 定 23 注 意 事 項 29 附 錄 33

I

(Chi)_.indb

14A 0.1%5% 14A 14A

穨_2_.PDF

女性减肥健身(四).doc

新时期共青团工作实务全书(三十九)

(i) (4)0.10 (1) 0.40 (ii) (iii) (i) (ii) ,000,000125,000,000 1,250,000, (iv) 3,750,000, ,000,000 1,250,000,00


Microsoft Word - 發布版---規範_全文_.doc

概 述 随 着 中 国 高 等 教 育 数 量 扩 张 目 标 的 逐 步 实 现, 提 高 教 育 质 量 的 重 要 性 日 益 凸 显 发 布 高 校 毕 业 生 就 业 质 量 年 度 报 告, 是 高 等 学 校 建 立 健 全 就 业 状 况 反 馈 机 制 引 导 高 校 优 化 招

鱼类丰产养殖技术(二).doc

疾病诊治实务(一)

名人养生.doc

<4D F736F F D2040B9C5B871A661B0CFABC8AE61C2A7AB55ACE3A8735FA7F5ABD8BFB3B9C5B871A661B0CFABC8AE61C2A7AB55ACE3A8732E646F63>


中老年保健必读(十).doc

27 i

% % ,542 12,336 14,53 16,165 18,934 22,698 25, ,557 7,48 8,877 11, 13,732 17,283 22,

海淀区、房山区(四)

穨ecr1_c.PDF

穨2005_-c.PDF

北京理工大学.doc

尲㐵.⸮⸮⸮⸮⸮

东城区(下)

果树高产栽培技术(一).doc

物质结构_二_.doc

第一節 研究動機與目的

i

水力发电(九)

中国古代文学家(八).doc

景观植物(一)

Microsoft Word - 目录.doc

园林植物卷(三).doc

19q indd

厨房小知识_一_

中南财经大学(七).doc


赵飞燕外传、四美艳史演义

厨房小知识(五)

最新监察执法全书(十八).doc

园林植物卷(十二).doc

华东师范大学.doc

國立中山大學學位論文典藏

乳业竞争_一_

最新执法工作手册(十).doc

untitled

最新执法工作手册(十六)

中国政法大学(六).doc

胎儿健康成长.doc

bnbqw.PDF

untitled

nb.PDF

第三章

1. 本文首段的主要作用是 A. 指出 異蛇 的藥用功效 說明 永之人爭奔走焉 的原因 B. 突出 異蛇 的毒性 為下文 幾死者數矣 作鋪墊 C. 交代以蛇賦稅的背景 引起下文蔣氏有關捕蛇的敘述 2. 本文首段從三方面突出蛇的 異 下列哪一項不屬其中之一 A. 顏色之異 B. 動作之異 C. 毒性之

Microsoft Word - edu-re~1.doc

Microsoft Word - 08 单元一儿童文学理论

南華大學數位論文

Microsoft Word 一年級散文教案.doc

米食天地教案

第32回独立行政法人評価委員会日本貿易保険部会 資料1-1 平成22年度財務諸表等

項 訴 求 在 考 慮 到 整 體 的 財 政 承 擔 以 及 資 源 分 配 的 公 平 性 下, 政 府 採 取 了 較 簡 單 直 接 的 一 次 性 減 稅 和 增 加 免 稅 額 方 式, 以 回 應 中 產 家 庭 的 不 同 訴 求 ( 三 ) 取 消 外 傭 徵 費 6. 行 政 長

(f) (g) (h) (ii) (iii) (a) (b) (c) (d) 208

项目背景

项目背景

奥运档案(三).doc

锦州港年度报告全文.PDF

第 2 頁 (a) 擔 任 機 場 擴 建 統 籌 辦 總 監 的 首 席 政 府 工 程 師 職 位 第 3 點 ) ; (b) 擔 任 ( 機 場 擴 建 統 籌 辦 ) 的 首 長 級 丙 級 政 務 官 職 位 ; 以 及 (c) 擔 任 總 助 理 ( 機 場 擴 建 統 籌 辦 ) 的

南華大學數位論文

商业采购条款和条件

计算机网络与经济(一).doc

cgn

II

39898.indb

穨ecr2_c.PDF

電腦相關罪行跨部門工作小組-報告書

i

发展党员工作手册

i

开源软件DSpace的安装和维护(清华_邹荣).ppt

香 港 舞 蹈 總 會    北 京 舞 蹈 學 院

中医疗法(上).doc

Transcription:

1. 构架图 本文档由 postgresql 专业群深圳 -GS 初稿, PostgreSQL 群 beta 2015-01-18 日修订 主要工作有 GS 完成 2. 主机宕机后构架图

3. 恢复完成后构架图 4. 实际部署图 5. 操作步骤 1. 安装 pg a) apt-get install postgresql-9.1 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 replication postgres 192.168.141.142/32 trust host replication postgres 192.168.141.140/32 trust host replication postgres 192.168.141.141/32 trust k) 修改 postgresql.conf

i. 启用参数 :listen_addresses ii. 配置端口 :port = 5432 iii. iv. 启用参数 :wal_level = hot_standby 启用参数 :archive_mode = on v. 启用参数 :hot_standby = on archive_command = 'cp %p /opt/archivedir/%f' vi. 启用参数 :max_wal_senders = 2 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 --withpgsql-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) pcp.conf pgpool.conf pool_hba.conf mkdir /var/run/pgpool 配置完成后, 使用 root 用户创建文件夹 : i) 使用 pgpool 命令启动 pgpool j) 切换系统用户到 postgrs, 执行命令 psql p 9999, 看到如下界面是表示 pgpool 已经安 装 OK

6. 恢复并挂载宕机服务器 a) 返回 master 服务器, 切换到系统用户 postgres, 执行 pg_ctl-m fast stop b) 切换到 slave1, 出现如下提示 : 首先提示主连接失去连接, 然后开始启动本地编辑 c) 切换到 slave2, 出现如下提示 d) 回到 master 服务器, 执行 psql -p 9999, 并创建 table:test1, 如下提示已经成功创建 e) 到目前位置, 已经完成主备机切换, 以下步骤开始挂载原 master 为 slave21

f) 进入 postgres 的 data 目录 :/var/lib/postgresql/9.1/main,vim recovery.conf, 内容如下 : standby_mode = 'on' primary_conninfo = 'host=192.168.141.140 port=5432 user=postgres password=pgdb' restore_command = 'scp 192.168.141.140:/opt/archive/%f %p' recovery_target_timeline='latest' trigger_file='/tmp/trigger_file0' g) 执行 pg_ctl start, 启动数据库, 并执行 psql,select * from test1, 查看在原 master 停 止后创建的表 test1 是否恢复到该数据库上面, 如下图所示 :test1 已经成功出现在原 master( 现 slave21) 上面 h) 执行创建表语句, 出现当期数据库为读模式的警告 : i) 在原主节点上执行命令 :/usr/local/bin/pcp_attach_node 5 localhost 9898 postgres pgdb 0 重新将丢失的节点添加到 pgpool 上面 ( 必须步骤, 否则以下步骤会出错 ) 5: 超时时间 Localhost: 安装 pgpool 的服务器 ip 或名称

9898:pcp 端口号 Postgres: 数据库超级管理员 Pgdb: 数据库超级管理员密码 0: 需要重新加载服务器在 pgpool.conf 中对应的 backend0 的 0( 就是 id) 7. 新 master 宕机后, 主备机切换 ( 新 master 宕机, 以下统称 M-2,slave 21 重新升级为 master) a) 准备工作 : 切换到 slave21 的服务器 ( 原 master) 上面, 修改 /var/lib/postgresql 的 failover.sh 文件 修改如下 : b) 切换到 M-2 服务器 ( 原 slave1), 执行命令 :pg_ctl m fast stop c) 切换到 slave21 服务器, 出现如下提示

d) 在 slave21 上执行 psql -p 9999, 并执行 :insert into test1 values(1); 如下图, 我们就胜 利的完成了第二次的主备切换, 这个步骤和第一次的主板切换步骤差不多, 但是关键 是将 M-2 重新挂载为 slave2 e) 检查 slave2, 中是否有数据插入 : f) 移动 data 目录文件 recovery.done 为 recovery.conf g) 使用 root 用户执行命令 :rm /tmp/trigger_file0, 或者重启服务器, 重启后系统将自动删除该文件, 如果不执行该动作, 我们在启动数据库的时候, 就会出现错误 ( 具体情况在 J 步骤中说明 ) h) 执行命令 pg_ctl start i) 成功竟然流复制模式, 查看 slave2 中是否有数据插入 : j) 忽略 f 步骤中, 在 M-2 上不执行删除 /tmp/trigger_file0 的动作, 数据库启动, 完成恢 复后, 直接进入可以读写模式, 这不是我们想要的流模式, 因为流模式只能进行读操

作 具体的大家可以去试试, 这里就不做了 因为这个问题, 纠结了我 2 天 囧 好了, 到这里, 我们已经完整的配置好了 pgpool 的流复制模式