CentOS7 安装PG集群

    科技2022-07-12  149

    注:是CentOS, PG版本是10

    一、PG单机安装

    准备两台服务器

    主机名IPhostname端口master192.168.50.100master5432slave192.168.50.101slave5432

    1.获取源

    yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y

    2.使用yum安装

    yum install postgresql10-contrib postgresql10-server -y

    3.初始化数据库

    初始化数据库启动数据库添加到开机启动 /usr/pgsql-10/bin/postgresql-10-setup initdb systemctl start postgresql-10 systemctl enable postgresql-10.service

    4.配置数据库

    切换用户连接数据库设置数据库密码退出 su - postgres psql ALTER USER postgres WITH PASSWORD ‘password’; \q

    5.配置外网访问

    编辑pg_hba.conf文件 vi /var/lib/pgsql/10/data/pg_hba.conf 翻到文件最后,将最后三行注释,并添加一行代码 host all all 0.0.0.0/0 md5 编辑postgresql.conf文件,将 listen_addresses 修改为 listen_addresses = ‘*’重启postgresql systemctl restart postgresql-10 测试postgresql连接(自己测试吧,就不上图了)

    二、集群整合

    1.配置hosts

    在主、备服务器上都设置

    [root@master ~]# cat /etc/hosts 127.0.0.1 localhost 192.168.50.100 master 192.168.50.101 slave

    2.[可选]初始化master数据库

    上面已经介绍了如何初始化,这里不在讲解

    3.master创建PG用户

    创建用户用户复制WAL日志,在psql下创建!!!

    CREATE USER repuser replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD '123456';

    4.配置master的pg_hba.conf

    在最后一行加上下面内容

    host replication repuser slave md5

    5.配置master的postgresql.conf

    listen_addresses = '*' port = 5432 max_wal_senders = 10 wal_level = replica archive_mode = on archive_command = 'cd ./' hot_standby = on wal_keep_segments = 64 full_page_writes = on wal_log_hints = on

    6.重启数据库

    systemctl restart postgresql-10

    7.pg_basebackup 创建备库

    在slave端的postgres用户下执行:

    pg_basebackup -h master -U repuser -D /var/lib/pgsql/10/data/ -X stream -P # 此处会让你输入在master上配置的那个同步WAL日志的账号的密码也就是123456

    上面这条命令的意思是把master节点中PG data目录下的文件及文件夹全部拷贝到slave的data目录下面,此处可能涉及到Linux用户权限,使用

    chown postgres.postgres -R data

    应该可以把data目录的组及用户改为postgres

    8.master及slave配置recovery.conf

    master节点:

    cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.done # 注意!!! 上面复制的文件名后缀就是 .done,没有写错 vi /var/lib/pgsql/11/data/recovery.done # 内容在下面: recovery_target_timeline = 'latest' standby_mode = on primary_conninfo = 'host=slave port=5432 user=repuser password=123456'

    slave节点:

    cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.conf vi /var/lib/pgsql/11/data/recovery.conf #编辑内容如下 recovery_target_timeline = 'latest' standby_mode = on primary_conninfo = 'host=master port=5432 user=repuser password=123456'

    9.查看进程状态

    主库 查看主库的WAL日志发送进程是否正常

    从库 查看从库WAL日志接收进程是否正常

    10.重启主、备数据库使配置生效

    使用navicate连接两个数据库,在主库中新建数据库及表,并添加数据。可以在从库中查看到相应新增的数据库及表和数据。

    Processed: 0.011, SQL: 8