时间:2014-12-29 来源:

搭plproxy集群 【数据库】

最近朋友要上一个系统web切图报价,设计百亿级数据.我去帮着搭建系统,web切图报价采用pg/proxy集群,psd转html业务相关就不说了,html切图制作这里就把简单技术验证放出来.相关人员比较保守,html切图就用了OS官方的安装包,wap前端外包pg版本9.1. 规划中两台服务器上验证web前端制作,一个上三个实例(一个实例做代理,web前端制作另外两个做数据节点),一个上两个实例(做数据节点) 数据节目录如下,div前端切图不过是在两台服务器上web切图报价,如上所说. /opt/pg91/pgdata0 /opt/pg91/pgdata1 /opt/pg91/pgdata2 /opt/pg91/pgdata3 /opt/pg91/pgdata4 0 第一部分,web切图报价安装 1 查询可安装版本 zxw@pgproxy1:~$ apt-cache search postgres | grep 9 libpgtypes3 - shared library libpgtypes for PostgreSQL 9.1 postgresql-9.1 - object-relational SQL database, version 9.1 server ... postgresql-9.1-slony1-2 - replication system for PostgreSQL: PostgreSQL 9.1 server plug-in skytools-modules-9.1 - PostgreSQL 9.1 modules for skytools 2 装 zxw@pgproxy1:~$ sudo apt-get install -y postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 postgresql-server-dev-9.1 ... ... update-alternatives: using /usr/share/postgresql/9.1/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.  * Starting PostgreSQL 9.1 database server    ...done. Setting up postgresql-contrib-9.1 (9.1.14-0ubuntu0.12.04) ... Setting up postgresql-server-dev-9.1 (9.1.14-0ubuntu0.12.04) ... Processing triggers for libc-bin ... ldconfig deferred processing now taking place 看到上面这句就ok了,符合w3c标准就是说有些事情在以上安装过程中给deferred(推迟)了网页外包接活,推迟到现在集中处理了. 3 查看,jpg或psd转html已经跑起来了 zxw@pgproxy1:~$ ps -ef | grep postgres postgres  8362     1  0 17:22 ?        00:00:00 /usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/main -c config_file=/etc/postgresql/9.1/main/postgresql.conf postgres  8364  8362  0 17:22 ?        00:00:00 postgres: writer process                                                                                                     postgres  8365  8362  0 17:22 ?        00:00:00 postgres: wal writer process                                                                                                 postgres  8366  8362  0 17:22 ?        00:00:00 postgres: autovacuum launcher process                                                                                        postgres  8367  8362  0 17:22 ?        00:00:00 postgres: stats collector process                                                                                            zxw       8425  1486  0 17:34 pts/0    00:00:00 grep --color=auto postgres zxw@pgproxy1:~$ zxw@pgproxy1:~$  /etc/init.d/postgresql status Running clusters: 9.1/main 4 这样登录不行web前端制作,默认Peer authentication zxw@pgproxy1:~$ psql -U postgres postgres psql: FATAL:  Peer authentication failed for user "postgres" zxw@pgproxy1:~$ 5 这样登录 zxw@pgproxy1:~$ sudo -u postgres psql [sudo] password for zxw: psql (9.1.14) Type "help" for help. postgres=# \q 5 确认Peer authentication zxw@pgproxy1:~$ sudo nl /etc/postgresql/9.1/main/pg_hba.conf | more     79  # Database administrative login by Unix domain socket     80  local   all             postgres                                peer             81  # TYPE  DATABASE        USER            ADDRESS                 METHOD             82  # "local" is for Unix domain socket connections only     83  local   all             all                                     peer     84  # IPv4 local connections:     85  host    all             all             127.0.0.1/32            md5 peer Obtain the client’s operating system user name from the operating system and check if it matches the requested database user name. This is only available for local connections. See Section 19.3.7 for details. 给改成md5认证,web前端制作 6 安装时没提示设置密码承接网页制作,超级用户密码随机了一个,承接网页制作给修改一下 postgres=# select * from pg_user;  usename  | usesysid | usecreatedb | usesuper | usecatupd | userepl |  passwd  | valuntil | useconfig ----------+----------+-------------+----------+-----------+---------+----------+----------+-----------  postgres |       10 | t           | t        | t         | t       | ******** |          | (1 row) postgres=# alter user postgres password 'postgres'; ALTER ROLE postgres=# select * from pg_user;  usename  | usesysid | usecreatedb | usesuper | usecatupd | userepl |  passwd  | valuntil | useconfig ----------+----------+-------------+----------+-----------+---------+----------+----------+-----------  postgres |       10 | t           | t        | t         | t       | ******** |          | (1 row) 7 md5 authentication ok: zxw@pgproxy1:~$ psql -h 127.0.0.1 -U postgres postgres Password for user postgres: psql (9.1.14) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. postgres=# 8 修改监听地址等,网站div+css加载配置参数 zxw@pgproxy1:~$ sudo -u postgres /etc/init.d/postgresql reload  * Reloading PostgreSQL 9.1 database server    ...done. zxw@pgproxy1:~$ 9 验证ok zxw@pgproxy1:~$ psql -h127.0.0.1 -Upostgres postgres Password for user postgres: psql (9.1.14) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. postgres=# 11 ubuntu12上官方pg包安装完后的目录基本如下: istall directory /usr/lib/postgresql/9.1/bin/postgres      proc /var/lib/postgresql/9.1/main                             data /etc/postgresql/9.1/main/postgresql.conf  option file /usr/share/postgresql/9.1/contrib/                 /usr/share/postgresql/9.1/extension/                 /usr/share/postgresql-common/ 第二部分 初始化n个实例 1 准备目录 root@pgproxy1:~# mkdir /opt/pg91 root@pgproxy1:~# chown postgres:postgres /opt/pg91/ 2 初始化一个实例 root@pgproxy1:~# sudo -u postgres /usr/lib/postgresql/9.1/bin/initdb -E utf8 -Upostgres --locale=C -W -D /opt/pg91/pgdata1 could not change directory to "/root" The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale C. The default text search configuration will be set to "english". creating directory /opt/pg91/pgdata1 ... ok creating subdirectories ... ok selecting default max_connections ... 100 ... Enter new superuser password: ... vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the -A option the next time you run initdb. Success. You can now start the database server using:     /usr/lib/postgresql/9.1/bin/postgres -D /opt/pg91/pgdata1 or     /usr/lib/postgresql/9.1/bin/pg_ctl -D /opt/pg91/pgdata1 -l logfile start root@pgproxy1:~# 3 查看数据集目录 root@pgproxy1:~# ll /opt/pg91/pgdata1/ total 88 drwx------ 13 postgres postgres  4096 Oct 23 15:49 ./ drwxr-xr-x  3 postgres postgres  4096 Oct 23 15:49 ../ drwx------  5 postgres postgres  4096 Oct 23 15:49 base/ drwx------  2 postgres postgres  4096 Oct 23 15:49 global/ drwx------  2 postgres postgres  4096 Oct 23 15:49 pg_clog/ -rw-------  1 postgres postgres  4476 Oct 23 15:49 pg_hba.conf -rw-------  1 postgres postgres  1636 Oct 23 15:49 pg_ident.conf drwx------  4 postgres postgres  4096 Oct 23 15:49 pg_multixact/ drwx------  2 postgres postgres  4096 Oct 23 15:49 pg_notify/ drwx------  2 postgres postgres  4096 Oct 23 15:49 pg_serial/ drwx------  2 postgres postgres  4096 Oct 23 15:49 pg_stat_tmp/ drwx------  2 postgres postgres  4096 Oct 23 15:49 pg_subtrans/ drwx------  2 postgres postgres  4096 Oct 23 15:49 pg_tblspc/ drwx------  2 postgres postgres  4096 Oct 23 15:49 pg_twophase/ -rw-------  1 postgres postgres     4 Oct 23 15:49 PG_VERSION drwx------  3 postgres postgres  4096 Oct 23 15:49 pg_xlog/ -rw-------  1 postgres postgres 19129 Oct 23 15:49 postgresql.conf 4 搞个放日志的地方 root@pgproxy1:~# mkdir /opt/pg91/pgdata1/pg_log root@pgproxy1:~# chown postgres:postgres /opt/pg91/pgdata1/pg_log/ root@pgproxy1:~# chmod 700 /opt/pg91/pgdata1/pg_log/ 修改认证监听等相关参数网页外包接活, 1 newly installed, 268 kB of additional disk space will be used. Get:1 http://hk.archive.ubuntu.com/ubuntu/ precise/universe postgresql-9.1-plproxy amd64 2.3-1 [65.3 kB] Fetched 65.3 kB in 10s (6, oid) #     8  RETURNS boolean AS '$libdir/plproxy' LANGUAGE C; #        #     9  -- foreign data wrapper #    10  CREATE FOREIGN DATA WRAPPER plproxy VALIDATOR plproxy_fdw_validator; 6 查看上面创建的对象 #proxy=# select * from pg_language; # lanname  | lanowner | lanispl | lanpltrusted | lanplcallfoid | laninline | lanvalidator | lanacl #----------+----------+---------+--------------+---------------+-----------+--------------+-------- # internal |       10 | f       | f            |             0 |         0 |         2246 | # c        |       10 | f       | f            |             0 |         0 |         2247 | # sql      |       10 | f       | t            |             0 |         0 |         2248 | # plpgsql  |       10 | t       | t            |         11678 |     11679 |        11680 | # plproxy  |       10 | t       | f            |         16399 |         0 |            0 | #(5 rows) # #proxy=# select * from pg_foreign_data_wrapper; # fdwname | fdwowner | fdwhandler | fdwvalidator | fdwacl | fdwoptions #---------+----------+------------+--------------+--------+------------ # plproxy |       10 |          0 |        16401 |        | #(1 row) #还drop了一回web切图报价, oid); #DROP FUNCTION # 7 授权 ########这句报错 #proxy=# grant usage on language plproxy to proxy; #ERROR:  language "plproxy" is not trusted #HINT:  Only superusers can use untrusted languages. ########下面的ok #proxy=# grant usage on foreign data wrapper  plproxy to proxy; #GRANT #proxy=# grant usage on foreign server cluster_art to proxy; #GRANT 8 proxy node创建plproxy server #super user do #drop server cluster_art; CREATE SERVER cluster_art FOREIGN DATA WRAPPER plproxy OPTIONS (connection_lifetime '1800', p1 'dbname=datadb port=9902 host=192.168.11.197 ', p3 'dbname=datadb port=9904 host=192.168.11.197 '); 9 proxy node授权 grant usage on foreign server cluster_art to proxy; 10 proxy node创建user mapping create user mapping for proxy server cluster_art options (user 'devart', password 'xxxxxxxx'); plproxy集群搭好了...... 第四部分 测试 这儿前前后后测试了不少场景,web前端制作花了好几天承接网页制作,基本上没有记录,div前端切图下面的也不是一个完整一致的测试web切图报价,只是记录到这儿,web切图报价大家就不要看了符合w3c标准,看了就晕了

-----------------

附记 1 pl/proxy源码下载地址,符合w3c标准好像是吧 http://pgfoundry.org/projects/plproxy 2 官网上记录的一个bug dumpall 不能正常工作 http://pgfoundry.org/tracker/index.php?func=detail&aid=1011283&group_id=1000207&atid=814  pg_dumpall sorts 'create server FOREIGN DATA WRAPPER' options (keys) as varchar and not as integer. Example from dumped sql (see "pX" option key): CREATE SERVER can_master_cluster FOREIGN DATA WRAPPER plproxy OPTIONS ( connection_lifetime '1800', p1 'dbname=database12 host=xxx-12 port=9812', p11 'dbname=database22 host=xxx-22 port=9822', p13 'dbname=database24 host=xxx-24 port=9824', p15 'dbname=database26 host=xxx-26 port=9826', p3 'dbname=database14 host=xxx-14 port=9814', p5 'dbname=database16 host=xxx-16 port=9816', p7 'dbname=database18 host=xxx-18 port=9818', p9 'dbname=database20 host=xxx-20 port=9820' ); which causes next error during the load: ERROR: Pl/Proxy: partitions must be numbered consecutively HINT: next valid partition number is 2 STATEMENT: CREATE SERVER can_master_cluster ... Old 9.0 'pg_dumpall' doing job correct. 参考 http://plproxy.projects.pgfoundry.org/doc/tutorial.html http://plproxy.projects.pgfoundry.org/doc/syntax.html http://www.linuxidc.com/Linux/2011-08/41600.htm http://blog.163.com/digoal@126/blog/static/1638770402013102242543765/

--test CREATE OR REPLACE FUNCTION proxy.test_pl_clust(sql text)                    RETURNS SETOF record  LANGUAGE plproxy  STRICT AS $function$   cluster 'cluster_art';   run on all;   target devart.test_pl_clust; $function$; grant execute on function datasch.test_pl_clust(text) to proxy; CREATE OR REPLACE FUNCTION test_pl_clust(sql text)  RETURNS SETOF record  LANGUAGE plpgsql  STRICT AS $function$   declare   rec record;   begin     for rec in execute sql loop       return next rec;     end loop;     return;   end; $function$; select * from datasch.test_pl_clust('select count(*) from pg_class') as t(i int8); proxy=> select * from test_pl_clust('select count(*) from pg_user') as t(k int8);  k ---  3  3  3  3 (4 rows) proxy=> select sum(k) from test_pl_clust('select count(*) from pg_user') as t(k int8);  sum -----   12 (1 row)

转载请著明出处: blog.csdn.net/beiigang

点击次数:27534
作者:
web前端行业资讯
Web new NewsList
Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日继“Angel”开源后,腾讯又开放TDinsight机器学习平台 ,,2017年12月21日Windows_Win10完美升级方式:镜像安装 【综合】2015年08月03日基于AndroidSQLite的使用介绍2014年01月30日Codeforces456A.Laptops 【移动开发】2015年07月08日Android实战技巧之二十:两个开源的图表报表控件 【综合】2015年03月24日adb命令使用汇总【互联网】2015年08月28日CSS自定义滚动条样式2014年01月28日java的类模板,对象,实例内存地址分析【综合】2015年06月29日华为机试—从5个人中选取2个人作为礼仪 【编程语言】2015年01月07日struts2,spring,hibernate三大框架整合 【编程语言】2015年04月02日vnc用手机app控制你的电脑 【综合】2015年01月24日微软在其Windows8ARM上限制Linux操作系统 ,,2016年07月24日javascript精确获取页面元素的位置2014年01月29日Unity之一天一个技术点(六)---在线JS转C#代码 【移动开发】2015年02月11日SSLTLS的原理以及互联网究竟是如何工作的(5)—DNS和他的兄弟 【移动开发】2015年01月19日yum命令FAQ【编程语言】2015年03月20日android插件化研究 【编程语言】2015年08月30日【LeetCode】NumberofIslands,解题报告 【编程语言】2015年04月17日Ubuntu14.04下安装Discuz!小记 【编程语言】2015年08月24日禁用页面部分JavaScript方法的具体实现2014年01月29日HDUACM1287破译密码 【移动开发】2015年03月11日一个程序猿的春节后念叨 【移动开发】2015年02月28日Linux使用cp命令直接覆盖不提示的方法 【编程语言】2015年03月03日PHP中的面向对象编程:通向大型PHP工程的办法2014年01月29日LNMP环境搭建——MySQL篇 【编程语言】2015年08月26日Hadoop集群搭建 【移动开发】2014年11月20日获取JSON对象的属性值 【架构设计】2015年02月02日源泉书签,全新表格,非凡体验【架构设计】2015年07月27日div+css页面布局【编程语言】2015年01月19日PhotoShop方便快捷的实用小技巧介绍2014年01月28日流媒体开发技术数据代理 【编程语言】2014年11月24日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)