1. https://www.jianshu.com/p/82aaf352b772
2.
from http://blog.51cto.com/hsbxxl/1980423
主机列表和集群安装的角色分配
1 2 3 |
|
2.创建postgres用户,这部分我使用ansible完成的用户创建,以及相关软件包的应用,节省劳动力(yum其实可以使用ansible自带的方式,所以我ansible写的比较业余)
1 2 3 |
|
3. 在每个节点上下载软件,并解压缩
1 2 3 |
|
4. 全部节点都创建pgxc路径,用来存放postgres文件
1 |
|
5. 修改每个节点的.bashrc文件,注意:修改/etc/profile是不生效的。
1 2 |
|
添加如下内容:
1 2 3 4 |
|
使之生效:
1 |
|
6. 关闭防火墙或者放开相应的端口,这里我直接关闭了每个虚拟机的防火墙,并且重启它们:
1 2 |
|
7. 关闭SELinux:
查看SELinux状态:
1 2 |
|
临时关闭(不用重启机器):
1 2 |
|
永久关闭:
1 2 |
|
8. 到每一个节点执行下面的软件安装步骤,这个过程注意,如果中间有报错,需要解决到。例如确实gcc包之类的,不然后面的编译也不会成功的。
1 2 3 4 5 6 7 |
|
9. 执行pgxc_ctl命令来生成配置集群的模板文件:
./pgxc_ctl ---会提示Error说没有配置文件,忽略即可
PGXC prepare ---执行该命令将会生成一份配置文件模板
10. 根据模板修改对应的主机名,端口等信息,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
|
11. 初始话命令,如果前面没有任何错误,这里就是最后一步了,PGXL会把全部的部署工作完成的。
pgxc_ctl -c pgxc_ctl.conf init all
完整输出如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
|
12. 验证可用性
在coordinator节点上,本地连接方式
1 |
|
远程用户连接方式
1 |
|
1 2 3 4 5 6 |
|
13. 建表测试
postgres=# create table test(id integer,name varchar(10));
postgres=# insert into test(id,name) values(1,'test');
postgres=# insert into test(id,name) values(2,'test');
查询结果
1 2 3 4 5 6 |
|
问题汇总:
1. 如果登陆到数据库中,执行下面语句,发现只有coord的信息,说明并没有创建成功,
1 2 3 4 5 |
|
而问题是出在coordPgHbaEntries=(10.21.13.0/25)和datanodePgHbaEntries=(10.21.13.0/25)的访问权限控制上,一定要和实际的子网掩码匹配,不然各个datanode节点和coord节点间是无法正常通讯的。
由于没有注意各个细节,让这个问题困扰我一周时间。一直在找为什么datanode之间不能相互识别的原因,其实就是很小的一个点。
1 2 3 4 5 6 7 8 9 10 |
|
2. 如果遇到建表,建库失败,也是遇到上面的访问控制权限问题。在部署完成之后,这个参数是在/home/postgres/pgxc/nodes/dn_master/pg_hba.conf和/home/postgres/pgxc/nodes/coord/pg_hba.conf中设置的。但是重新init,会覆盖掉这些文件的。
1 2 3 4 5 |
|
3. 有很多人的安装方式,是最后通过手动执行下面命令,添加coord和datanode,其实前面的pgxc_ctl.conf配置正确的话,脚本都是自动帮你完成的,没有必要人工干预
1 2 3 4 5 6 |
|
4. 第8步,make PGXL软件过程中,一定要仔细查看输出,有错误一定要纠正。不然后续会发现,有很多命令软件,都没有安装成功。
5.如果你在远程登陆postgres sql遇到如下问题
1 2 |
|
修改/home/postgres/pgxc/nodes/dn_master/pg_hba.conf和/home/postgres/pgxc/nodes/coord/pg_hba.conf中的访问控制权允许对应的IP有访问权限,就可以登陆了。注意,要修改全部的coordinator和datanode的pg_hba.conf配置文件才行。然后通过postgres用户执行reload命令,使配置文件生效。或者重启使配置生效。
1 2 3 4 5 6 |
|
下面三篇是我主要参考的blog,帮助很大,但是每一个都有“坑”。所以,只有自己动手实验过,才会记住,你掉过和跳过的“坑”
http://blog.csdn.net/yeruby/article/details/48996027
https://www.cnblogs.com/songyuejie/archive/2015/08/23/4752124.html
http://blog.csdn.net/freeland1/article/details/52346669?ref=myread
附件是第10和11步的文本文件,可以下载修改并使用。
附件:http://down.51cto.com/data/2368732