在介绍数据库的读写分离集群软件之前,一起先简单回顾一下数据库安装与重要参数配置等等。
Halo数据库的安装
1.安装依赖的软件包。
2.创建用户和组。
3.创建安装目录。
4.解压软件包至安装目录, 以halo用户。
5.拷贝license文件到安装目录。
6.配置环境变量,以halo用户。
7.创建数据库进程目录, 以root用户。
8.调整内存与信号量参数, 以root用户。
9.调整资源限制参数。
10.创建数据库并初始化。
11.修改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驱动还能够实现多个从库的负载均衡。
环境准备及安装:
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'
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;
校验成功就可以使用读写分离功能啦!
评论
