准备两台服务器web
主机名 | IP | hostname | 端口 |
---|---|---|---|
master | 192.168.50.100 | master | 5432 |
slave | 192.168.50.101 | slave | 5432 |
yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y
yum install postgresql10-contrib postgresql10-server -y
/usr/pgsql-10/bin/postgresql-10-setup initdb systemctl start postgresql-10 systemctl enable postgresql-10.service
su - postgres psql ALTER USER postgres WITH PASSWORD ‘password’; \q
vi /var/lib/pgsql/10/data/pg_hba.conf
host all all 0.0.0.0/0 md5
systemctl restart postgresql-10
在主、备服务器上都设置sql
[root@master ~]# cat /etc/hosts 127.0.0.1 localhost 192.168.50.100 master 192.168.50.101 slave
上面已经介绍了如何初始化,这里不在讲解数据库
建立用户用户复制WAL日志,在psql下建立!!!centos
CREATE USER repuser replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD '123456';
在最后一行加上下面内容服务器
host replication repuser slave md5
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
systemctl restart postgresql-10
在slave端的postgres用户下执行:svg
pg_basebackup -h master -U repuser -D /var/lib/pgsql/10/data/ -X stream -P # 此处会让你输入在master上配置的那个同步WAL日志的帐号的密码也就是123456
上面这条命令的意思是把master节点中PG data目录下的文件及文件夹所有拷贝到slave的data目录下面,此处可能涉及到Linux用户权限,使用post
chown postgres.postgres -R data
应该能够把data目录的组及用户改成postgres测试
master节点:rest
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'
主库
查看主库的WAL日志发送进程是否正常
从库
查看从库WAL日志接收进程是否正常
使用navicate链接两个数据库,在主库中新建数据库及表,并添加数据。能够在从库中查看到相应新增的数据库及表和数据。