暂无图片
暂无图片
2
暂无图片
暂无图片
1
暂无图片

Halo数据库读写分离集群软件介绍(DLB)

原创 JGJ 2023-10-08
12941

在介绍数据库的读写分离集群软件之前,一起先简单回顾一下数据库安装与重要参数配置等等。


Halo数据库的安装

1.安装依赖的软件包。

2.创建用户和组。

3.创建安装目录。

4.解压软件包至安装目录, 以halo用户。

5.拷贝license文件到安装目录。

6.配置环境变量,以halo用户。

7.创建数据库进程目录, 以root用户。

8.调整内存与信号量参数, 以root用户。

9.调整资源限制参数。

10.创建数据库并初始化。

11.修改halo参数。


Halo数据库的目录结构

图片
图片

Halo数据库体系结构

Øpostmaster:所有数据库进程的主进程(负责监听和fork子进程)。
Øsyslogger:记录系统日志。
Øpgstat:收集统计信息。
Øpgarch:如果开启了归档, 那么postmaster会fork一个归档进程。
Øcheckpointer:负责检查点的进程。
Øbgwriter:负责把shared buffer中的脏数据写入磁盘的进程。
Øautovacuum lanucher:负责回收垃圾数据的进程, 如果开启了autovacuum的话,那么postmaster会fork这个进程。
Øautovacuum worker:负责回收垃圾数据的worker进程, 是lanucher进程fork出来的。
图片
Halo数据库参数配置

1.internal:只读参数,数据库创建后无法修改。

2.postmaster:需要Halo重启修改。

3.sighup:可以在postgresql.conf中修改,不需要重启,需要向postmaster进程发送sighup信号,然后由postmaster向子进程发送sighup信号,所有子进程都会参数生效。pg_ctl reload,select pg_reload_conf();

4.backend:可以在postgresql.conf中修改,不需要重启,需要向postmaster进程发送sighup信号,但只是在新建连接中参数会生效,之前的连接参数不会生效。

5.superuser:超级用户使用set来改变。向postmaster发送sighup信号只会影响新建连接,不会影响之前连接。

6.user:普通用户使用set来影响本连接。


Halo数据库的重要管理命令
数据库的启停:pg_ctl start/stop/restart/reload。
数据库的初始化:pg_ctl init。
psql的参数:-d 数据库名;-U 用户名;-h 主机名;-p 端口号;例如psql -d lis -U db2inst1。
psql查看数据库对象:\? 帮助;\dt查看表;\d[S+]表名 查看表的具体信息;\db查看表空间;\dn查看schema,\dv 查看视图;\du查看用户;\dg 查看角色;\di 查看索引;\dc 查看转换;\dE 查看外部表;\des 查看外部服务器;\deu 查看用户映射;\df查看函数;\sf函数名 查看函数的内容;\l[+] 查看数据库;\do 查看操作符;\ds 查看序列;\dx查看扩展;\sv 视图名  查看视图的内容。
使用psql执行sql文件:进入psql交互模式,\i input.sql;psql -d lis -U db2inst1 -f input.sql >output.txt 2>&1。

数据库常用的管理函数:
1.select pg_reload_conf();   --等同于pg_ctl reload。
2.select pg_rotate_logfile();  --重新开始数据库日志。重要。
3.select pg_terminate_backend(pidint);  --中止进程,运维可能需要。
4.select pg_switch_wal();  --重新开始wal日志。
5.select pg_column_size(any);  --列的大小。
6.select pg_database_size(name);  --数据库的大小。
7.select pg_indexes_size(regclass);  --索引的大小。
8.select pg_table_size(regclass);  --表的大小,但不包括索引,包括toast,vm,fsm。
9.selectpg_postmaster_start_time();  --查看数据库的启动时间。
以上进行简单回顾,下面一起进入正式主题!
读写分离DLB实例介绍!
读写分离的原理:halo读写分离原理是在主服务器上写,在从服务器上读。主服务器负责一切写操作的负载,而读的操作分摊在所有主从服务器上,通过读写分离来提升数据库的并发和负载能力。一般设置一台数据库服务器作为主服务器,主要承担数据的增、删和改的任务,配置N台数据库服务器为从服务器,主要承担数据的查询任务。从服务器实时复制主服务器中同步数据,以此实现数据的一致性。

读写分离实现方式:应用程序通过在连接halo应用中配置主库与从库等地址,dlb会自动将读请求发送给从库,将写请求发送给主库,此外,halo的dlb驱动还能够实现多个从库的负载均衡。

图片

环境准备及安装:

1.网络规划

网络规划:

主库:192.168.137.31

备库:192.168.137.32

备库:192.168.137.33

DLB主机:192.168.137.34

2.配置/安装DLB

1)修改主备机器上postgresql.conf的密码校验方式

     vi viPGDATA/postgresql.base.conf

     password_encryption = md5 

     加载参数

      $ pg_ctlreload

2)在主库halo131上创建用户halo_dlb

      $ psql

       CREATE ROLE halo_dlbsuperuser PASSWORD 'halo_dlb' login;

3)修改数据库集群机器上的配置文件pg_hba.conf

      vi $PGDATA/pg_hba.conf

     添加

     host   all         all         0/0             md5

4)配置pgpool.conf

    $ cp pgpool.conf.sample pgpool.conf

    修改如下

    listen_addresses = '*'

    port = 1922

    backend_hostname0 = 'halo131'

    backend 0

    backend_port0 = 1921

    backend_weight0 = 1

    backend_data_directory0 = '/data'

    backend_flag0 = 'DISALLOW_TO_FAILOVER'

    DISALLOW_TO_FAILOVER

    backend_application_name0 = 'server0'

   "showpool_nodes" command

    backend_hostname1 = 'halo132'

    backend_port1 = 1921

    backend_weight1 = 1

    backend_data_directory1 = '/data'

    backend_flag1 = 'DISALLOW_TO_FAILOVER'

    backend_application_name1 = 'server1'

    backend_hostname2 = 'halo133'

    backend_port2 = 1921

    backend_weight2 = 1

    backend_data_directory2 = '/data'

    backend_flag2 = 'DISALLOW_TO_FAILOVER'

    backend_application_name2 = 'server2'

    pid_file_name = '/var/run/halo/halo.pid'

    sr_check_user = 'halo_dlb'

   sr_check_password = 'halo_dlb'

   pool_passwd file before using the empty password

   sr_check_database = 'haloroot'

5)添加用户环境/home/halo/.bash_profile
   $ vi /home/halo/.bash_profile
   export PATH=/u01/app/halo/product/dlb/4.3/bin:$PATH
   执行生效
   $ source /home/halo/.bash_profile
6)生成秘钥pass
   $ /u01/app/halo/product/dlb/4.3/bin/pg_md5 -m -u halo_dlb halo_dlb
   $ cat /u01/app/halo/product/dlb/4.3/etc/pool_passwd
   halo_dlb:md546172933bfb1d5d2207389730f8d5ec0
7)添加生成密钥到pcp.conf
   $ cp pcp.conf.sample pcp.conf
   $ vi pcp.conf
   # USERID:MD5PASSWD
   halo_dlb:md546172933bfb1d5d2207389730f8d5ec0
8)配置DLB访问地址
   $cp pool_hba.conf.sample pool_hba.conf
   $ vi pool_hba.conf
   添加
   host    all        all         0.0.0.0/0             md5
9)启动DLB
    创建软链接
   $ ln -s pgpool dlb
    后台进程启动
    $ nohup dlb -n -d >   /u01/app/halo/product/dlb/4.3/logs/dlb.log 2>&1 &
     建议:创建启动脚本

10)校验读写分离

       $ psql -h 192.168.231.134 -p 1922 -U halo_dlb

         Password for user halo_dlb:

          psql(14.5 (221014))

         Type "help" for help.

          # show pool_nodes;

 校验成功就可以使用读写分离功能啦!


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

冷狼
暂无图片
1年前
评论
暂无图片 0
Halo数据库读写分离集群软件介绍(DLB),具有独特的特点。
1年前
暂无图片 点赞
评论