在介绍数据库的读写分离集群软件之前,一起先简单回顾一下数据库安装与重要参数配置等等。
一、Halo数据库的安装
1.安装依赖的软件包。
2.创建用户和组。
3.创建安装目录。
4.解压软件包至安装目录, 以halo用户。
5.拷贝license文件到安装目录。
6.配置环境变量,以halo用户。
7.创建数据库进程目录, 以root用户。
8.调整内存与信号量参数, 以root用户。
9.调整资源限制参数。
10.创建数据库并初始化。
11.修改halo参数。
二、Halo数据库的目录结构
三、Halo数据库体系结构
四、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数据库的重要管理命令
六、数据库常用的管理函数
七、读写分离DLB实例介绍
读写分离实现方式:应用程序通过在连接halo应用中配置主库与从库等地址,dlb会自动将读请求发送给从库,将写请求发送给主库,此外,halo的dlb驱动还能够实现多个从库的负载均衡。
环境准备及安装:
1.网络规划
网络规划:
主库:192.168.137.31
备库:192.168.137.32
备库:192.168.137.33
DLB主机:192.168.137.34
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;