环境介绍
@H_404_2@Linux主机,安装两个docker postgres 容器,并实现主从配置。 @H_404_2@数据库版本:12 @H_404_2@主库端口:5433 @H_404_2@从库端口:5434主节点操作
@H_404_2@(1)创建工作目录mkdir -p /home/hadoop/data/pg/master@H_404_2@(2)拉取镜像并启动容器
docker run -d \ -p 5433:5432 \ -e POSTGRES_PASSWORD=postgres \ -v /home/hadoop/data/pg/master/:/var/lib/postgresql/data \ --name pg12master \ -h pg12master \ -e LANG="C.UTF-8" \ -e 'TZ=Asia/Shanghai' \ -m 256m \ --memory-swap -1 \ postgres:12@H_404_2@(3)修改配置文件 @H_404_2@pg_hba.conf
# "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. local replication all trust host replication all 127.0.0.1/32 trust host replication all ::1/128 trust host replication all 0.0.0.0/0 md5 host replication repuser 172.17.0.0/24 md5 host all all 0.0.0.0/0 md5@H_404_2@postgresql.conf
wal_level = logical archive_mode = on archive_command = '/bin/date' max_wal_senders = 10 wal_keep_segments = 16 synchronous_standby_names = '*'@H_404_2@(4)基础数据备份 @H_404_2@进入master容器,备份基础数据。
[root@bigdata3 ~]# docker exec -it pg12master /bin/bash root@pg12master:/# pg_basebackup -R -D /var/lib/postgresql/slave -Fp -Xs -v -P -h 172.17.0.1 -p 5433 -U postgres Password: postgres pg_basebackup: initiating base backup, waiting for checkpoint to complete pg_basebackup: checkpoint completed pg_basebackup: write-ahead log start point: 0/B000028 on timeline 1 pg_basebackup: starting background WAL receiver pg_basebackup: created temporary replication slot "pg_basebackup_193" 24729/24729 kB (100%), 1/1 tablespace pg_basebackup: write-ahead log end point: 0/B000100 pg_basebackup: waiting for background process to finish streaming ... pg_basebackup: syncing data to disk ... pg_basebackup: base backup completed root@pg12master:/#@H_404_2@将容器中的基础数据下载到本地。
docker cp pg12master:/var/lib/postgresql/slave /home/hadoop/data/pg
从节点操作
@H_404_2@(1)启动从节点容器docker run -d \ --ip 172.17.0.5 \ -p 5434:5432 \ --name pg12slave \ -h pg12slave \ -e LANG="C.UTF-8" \ -e 'TZ=Asia/Shanghai' \ -e "POSTGRES_DB=postgres" \ -e "POSTGRES_USER=postgres" \ -e "POSTGRES_PASSWORD=postgres" \ -v /home/hadoop/data/pg/slave:/var/lib/postgresql/data \ -m 256m \ --memory-swap -1 \ postgres:12@H_404_2@注意:IP地址为Docker的IP。
检查测试
@H_404_2@检查主库是否可以检查到从库。docker exec -it -u postgres pg12master /bin/bash postgres@pg12master:/$ psql psql (12.3 (Debian 12.3-1.pgdg100+1)) Type "help" for help. postgres=# select * from pg_stat_replication; pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | write_l ag | flush_lag | replay_lag | sync_priority | sync_state | reply_time -----+----------+---------+------------------+--------------+-----------------+-------------+-------------------------------+--------------+-----------+-----------+-----------+-----------+------------+-------- ---+-----------+------------+---------------+------------+------------------------------- 149 | 16384 | repuser | walreceiver | 172.17.0.1 | | 51752 | 2021-11-25 15:21:28.80868+08 | | streaming | 0/A004518 | 0/A004518 | 0/A004518 | 0/A004518 | | | | 1 | sync | 2021-11-25 18:42:51.27092+08 (2 rows) postgres=#@H_404_2@使用Navcat连接主库,建表,并查看从库是否自动建表。 @H_404_2@
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。