当前位置: 首页 > news >正文

和布克赛尔网站建设北京acc网站建设

和布克赛尔网站建设,北京acc网站建设,企业网络营销培训,大学生做网站赚钱流程前言#xff1a; postgresql数据库只用自身的一些配置是无法做到最优的优化的#xff0c;需要通过一些外置插件#xff08;中间件#xff09;来提高服务器的整体性能#xff0c;通俗的说就是数据库仅仅依靠自身是无法达到性能最优的#xff0c;很多时候需要更改数据库的…前言 postgresql数据库只用自身的一些配置是无法做到最优的优化的需要通过一些外置插件中间件来提高服务器的整体性能通俗的说就是数据库仅仅依靠自身是无法达到性能最优的很多时候需要更改数据库的整体架构使用一些目前来说成熟的技术比如读写分离技术负载均衡技术高速缓存技术等等集群方面的技术。 下图是一些较为成熟的集群方案 从上表可以看到pgpool是比较全面的一个中间件什么连接池负载均衡都有还有没有写出来的缓存功能其实使用此中间件的不能拒绝的诱惑就是负载均衡和缓存了其它的功能倒是没有什么。 本文将就pgpool的负载均衡和高速缓存功能做一个详细的介绍。 一 pgpool的简单介绍 Pgpool-II是一个在PostgreSQL服务器和PostgreSQL数据库客户端之间工作的中间件。它是根据BSD许可证授权的。它提供以下功能。 连接池 Pgpool-II保存与PostgreSQL服务器的连接并在具有相同属性即用户名数据库协议版本的新连接进入时重用它们。它减少了连接开销并提高了系统的整体吞吐量。 复制 Pgpool-II可以管理多个PostgreSQL服务器。使用复制功能可以在2个或更多物理磁盘上创建实时备份以便在磁盘发生故障时服务可以继续运行而不会停止服务器。 负载均衡 如果复制了数据库则在任何服务器上执行SELECT查询都将返回相同的结果。Pgpool-II利用复制功能通过在多个服务器之间分配SELECT查询来减少每个PostgreSQL服务器的负载从而提高系统的整体吞吐量。充其量性能与PostgreSQL服务器的数量成比例地提高。在许多用户同时执行许多查询的情况下负载平衡最有效。 限制超出连接 PostgreSQL的最大并发连接数有限制连接在这么多连接后被拒绝。但是设置最大连接数会增加资源消耗并影响系统性能。pgpool-II对最大连接数也有限制但额外连接将排队而不是立即返回错误。 看门狗 Watchdog可以协调多个Pgpool-II创建一个强大的集群系统避免单点故障或脑裂。看门狗可以对其他pgpool-II节点执行生命检查以检测Pgpoll-II的故障。如果活动Pgpool-II发生故障则可以将备用Pgpool-II提升为活动状态并接管虚拟IP。 查询缓存 在内存中查询缓存允许保存一对SELECT语句及其结果。如果有相同的SELECTPgpool-II将从缓存中返回值。由于不涉及SQL解析或访问PostgreSQL因此在内存缓存中使用速度非常快。另一方面在某些情况下它可能比正常路径慢因为它增加了存储缓存数据的一些开销。 Pgpool-II讲PostgreSQL的后端和前端协议并在后端和前端之间传递消息。因此数据库应用程序前端认为Pgpool-II是实际的PostgreSQL服务器服务器后端将Pgpool-II视为其客户端之一。因为Pgpool-II对服务器和客户端都是透明的所以现有的数据库应用程序可以与Pgpool-II一起使用。Pgpool-II讲述PostgreSQL的后端和前端协议并在它们之间传递连接。因此数据库应用程序前端认为Pgpool-II是实际的PostgreSQL服务器服务器后端将Pgpool-II视为其客户端之一。因为Pgpool-II对服务器和客户端都是透明的所以现有的数据库应用程序可以与Pgpool-II一起使用不需要对现有的业务系统进行更改。 那么架构方面应该是通过看门狗利用一个虚拟IP也就是VIP代理一个自身就是主从流复制的集群VIP可以看做是前端数据库可以看做后端而主从流复制的数据库集群是具有这么一个特点主服务器可读可写从服务只读不可写。VIP通过pgpool的负载均衡功能就可以即可读也可以写了负载均衡的策略是主从根据特定算法分配读任务写任务仍然是交给主服务器完成。 这样集群的使用率就自然的增高了一些常用的查询语句通过pgpool的缓存功能缓存起来自然的整个集群的查询效率就提高了。 OK下面开始讲述如何搭建pgpool。 二 pgpool的官方网址pgpool Wiki 下载和安装教程都有里面也提供了一些比较新的rpm安装包rpm仓库地址是Index of /yum/rpms/4.4/redhat/rhel-7-x86_64 直接将该地址配置成yum仓库就可以了 postgresql的版本和大体情况如下 11服务器是主服务器12是从服务器 主从复制的搭建见我的博客postgresql|数据库|【postgresql-12的基于pg_basebackup的主从复制部署】_postgresql12 主备_晚风_END的博客-CSDN博客 三 pgpool的部署 该部署工作是比较繁琐的难度是比较高的主要是权限问题需要小心处理其次是参数众多很多地方需要根据实际的情况调整最后是pgpool的功能比较多如何配置好是需要比较多的耐心。 首先大概介绍一下pgpool的组件该中间件的管理组件有三个一个是数据库侧使用的pool工具该工具是以插件的形式安装在postgresql数据库内的第二个是操作系统侧的pcp工具这个工具需要在pgpool的主配置文件内配置第三个是pgpoolAdm此工具是PHP编写的web端管理工具可以在web端方便的查看pgpool并且管理配置pgpool目前的版本应该是需要高版本的PHP支持暂时没有使用。 1 管理工具的安装 本案例中只安装数据库侧的管理工具pool和pcppool工具在源码包内。 pgpool-II-4.4.4.tar.gz这个文件上传到服务器解压后和普通的postgresql插件没什么区别一样的make  make install 就可以了前提是环境变量里有定义PGHOME和PGDATA这两个变量。 2 yum安装 配置好本地仓库和上面提到的官网仓库就可以运行以下命令安装了这里安装了一个memcached服务该服务后面作为缓存服务使用的。 yum install pgpool-II-pg12-debuginfo-4.4.2 pgpool-II-pg12-4.4.2 pgpool-II-pg12-devel-4.4.2 pgpool-II-pg12-extensions-4.4.2 -y yum install memcached -y systemctl enable memcached systemctl enable pgpool systemctl start pgpool memcached 安装完毕后将会在/etc目录下看到pgpool-II此目录里是pgpool的配置文件和一些高可用故障转移脚本本案例中这些脚本不打算使用只配置pgpool服务另外需要注意两个服务器都需要安装memcached只在一个服务器安装就可以了 3 配置文件 可以看到这些文件都是postgres的属组这些一定要注意哦 [rootnode1 pgpool-II]# ls -al total 144 drwxr-xr-x. 3 root root 202 Sep 18 06:18 . drwxr-xr-x. 83 root root 8192 Sep 17 19:16 .. -rw------- 1 postgres postgres 900 Sep 17 11:15 pcp.conf -rw-------. 1 postgres postgres 858 Jan 22 2023 pcp.conf.sample -rw------- 1 postgres postgres 52960 Sep 18 02:01 pgpool.conf -rw-------. 1 postgres postgres 52964 Jan 22 2023 pgpool.conf.sample -rw------- 1 postgres postgres 2 Sep 17 10:21 pgpool_node_id -rw------- 1 postgres postgres 3537 Sep 17 11:54 pool_hba.conf -rw-------. 1 postgres postgres 3476 Jan 22 2023 pool_hba.conf.sample -rw-------. 1 postgres postgres 45 Sep 17 11:05 pool_passwd drwxr-xr-x. 2 root root 4096 Sep 17 10:02 sample_scriptspcp.conf 的配置 该文件是存放pgpool的管理密码此密码可以和postgresql数据库的密码不一样也就是说随便定定义方式非常简单用户名:密码的形式添加在该文件末尾即可只是需要注意一点密码是md5加密的不能明文(两种方式都可以嫌麻烦的话就第三行那个命令用户是postgres密码是123456) [rootnode1 pgpool-II]# pg_md5 123456 e10adc3949ba59abbe56e057f20f883e [rootnode1 pgpool-II]# echo postgres:e10adc3949ba59abbe56e057f20f883e./pcp.conf [rootnode1 pgpool-II]# echo postgres:pg_md5 123456./pcp.conf[rootnode1 pgpool-II]# cat pcp.conf # PCP Client Authentication Configuration File # # # This file contains user ID and his password for pgpool # communication manager authentication. # # Note that users defined here do not need to be PostgreSQL # users. These users are authorized ONLY for pgpool # communication manager. # # File Format # # # List one UserID and password on a single line. They must # be concatenated together using : (colon) between them. # No spaces or tabs are allowed anywhere in the line. # # Example: # postgres:e8a48653851e28c69d0506508fb27fc5 # # Be aware that there will be no spaces or tabs at the # beginning of the line! although the above example looks # like so. # # Lines beginning with # (pound) are comments and will # be ignored. Again, no spaces or tabs allowed before #.# USERID:MD5PASSWD postgres:e10adc3949ba59abbe56e057f20f883epgpool.conf文件的配置 该文件是pgpool的主配置文件其中注释的行已经全部去掉了只保留了放开的内容 说明该配置文件内定义的文件路径需要手动建立/var/run/postgresql  属组是postgres sr_check_user nobody  这个nobody用户需要在主数据库创建创建命令为create role nobody login replication encrypted password replica; 为什么是主数据库呢因为是流复制主数据库创建了 从数据库自然就有了嘛上面提到的插件也是如此的哦。 [rootnode1 pgpool-II]# sed -e /^$/d pgpool.conf |grep -v \# backend_clustering_mode streaming_replication listen_addresses * port 15433 unix_socket_directories /var/run/postgresql pcp_listen_addresses * pcp_port 19999 pcp_socket_dir /var/run/postgresql backend_hostname0 192.168.123.11 backend_port0 5432 backend_weight0 1 backend_data_directory0 /usr/local/pgsql/data backend_flag0 ALLOW_TO_FAILOVER backend_application_name0 node1 backend_hostname1 192.168.123.12 backend_port1 5432 backend_weight1 1 backend_data_directory1 /usr/local/pgsql/data backend_flag1 ALLOW_TO_FAILOVER backend_application_name1 node2 enable_pool_hba on pool_passwd pool_passwd process_management_mode dynamic num_init_children 32 min_spare_children 5 max_spare_children 10 max_pool 4 child_life_time 5min log_destination stderr log_connections on log_disconnections on log_hostname on log_statement on log_per_node_statement on log_client_messages on logging_collector on log_directory /var/log/pgpool_log log_filename pgpool-%a.log log_file_mode 0600 log_truncate_on_rotation on log_rotation_age 1d log_rotation_size 0 pid_file_name /var/run/postgresql/pgpool.pid logdir /tmp connection_cache on reset_query_list ABORT; DISCARD ALL load_balance_mode on database_redirect_preference_list postgres:1 sr_check_period 10 sr_check_user nobody sr_check_password replica sr_check_database postgres delay_threshold 1 delay_threshold_by_time 1 prefer_lower_delay_standby on use_watchdog on hostname0 192.168.123.11 wd_port0 9000 pgpool_port0 15433 hostname1 192.168.123.12 wd_port1 9000 pgpool_port1 15433 wd_ipc_socket_dir /var/run/postgresql delegate_ip 192.168.123.222 if_cmd_path /sbin if_up_cmd ip addr add $_IP_$/24 dev ens33 label ens33:0 if_down_cmd ip addr del $_IP_$/24 dev ens33 arping_path /usr/sbin arping_cmd arping -U $_IP_$ -w 1 -I ens33 wd_monitoring_interfaces_list wd_lifecheck_method heartbeat wd_interval 10 heartbeat_hostname0 192.168.123.11 heartbeat_port0 19694 heartbeat_device0 ens33 heartbeat_hostname1 192.168.123.12 heartbeat_port1 19694 heartbeat_device1 ens33 wd_life_point 3 wd_lifecheck_query SELECT 1 memory_cache_enabled off memqcache_method memcached memqcache_memcached_host 192.168.123.11 memqcache_memcached_port 11211 memqcache_total_size 64MB memqcache_max_num_cache 1000000 memqcache_expire 0 memqcache_cache_block_size 1MBpool_passwd文件的配置 重要 su - postgres pg_md5 -m -p -u postgres pool_passwd #此时会提示输入密码此密码是postgresql服务器的postgres用户的密码一会会用此命令登录postgresql数据库的哦 [rootnode1 pgpool-II]# su - postgres Last login: Mon Sep 18 06:34:54 CST 2023 on pts/1 [postgresnode1 ~]$ pg_md5 -m -p -u postgres pool_passwd password: [postgresnode1 ~]$ logout [rootnode1 pgpool-II]# cat pool_passwd postgres:md5a3556571e93b0d20722ba62be61e8c2d pool_hab.conf文件的配置 该文件的作用是定义pgpool哪些用户可以访问哪些后端的postgresql数据库功能和postgresql数据库的pg_hba.conf文件类似 如果不想太麻烦也就是不太安全那么如下配置即可 # IPv4 local connections: host all all 127.0.0.1/32 trust host all all ::1/128 trust host all all 0.0.0.0/0 md5pgpool_node_id文件的配置 此文件是标识文件表明该pgpool 对应于哪个后端因此11服务器上此文件内容就一个0,12服务器上次文件内容就一个1即可当然了如果有其它的节点就依次增加数字即可最多好像是127个节点。 [rootnode1 pgpool-II]# cat pgpool_node_id 0未完待续
http://www.dnsts.com.cn/news/216479.html

相关文章:

  • 百度移动网站建设有几种wordpress怎么修改抬头
  • 设计购物网站qq邮箱咋与网站绑定提醒
  • 哈尔滨做平台网站平台公司哪家好wordpress自定义页脚
  • 做视频网站把视频放在哪里找中国建筑集团有限公司校园招聘
  • 专业企业网站搭建推荐顺的网站建设咨询
  • 提供营销网站建设公司个人网站免费空间
  • 我的世界服务器如何做充钱网站天津网站建设公司推荐
  • 帕绍网站建设设计签名的小程序
  • 寄生虫网站怎么做网站免费模板制作
  • 有哪些可以建设网站的单位最近国际新闻热点
  • WordPress多页面菜单seo站内优化站外优化
  • 提供服务的网站家装网站建设多少钱
  • 网站建设论文读书笔记wordpress 4.5 模板
  • 河南网站建设推广运营wordpress 发文章
  • 寺庙网站开发图片生成链接
  • 手机网站有哪些类型漳州最专业的网站建设
  • 泉州哪个公司网站做的好给公司做网站怎么样
  • 网站集约化建设的通知方山网站建设
  • 遵义做网站的php c2c网站开发的 书
  • 开发网站建设律师手机网站模板
  • 冒险岛钓鱼网站做啥用虎牙网页游戏大厅
  • 重庆点优定制网站建设wordpress文章美化
  • 大学生电子商务专业网站设计为什么做的网站预览出来什么都没有
  • 大连网站建设那家好北京政平建设投资集团有限公司网站
  • 包头索易网站建设平面设计怎么接单
  • 定制制作网站开发南京龙媒网络科技有限公司
  • 苏州做网站的单位浙江工程造价信息网
  • 起域名网站lamp搭建wordpress
  • 倒计时网站模板抖音优化公司
  • 化学网站定制网站建设与运营预算