update
This commit is contained in:
parent
8e29d15e6d
commit
a2e0b1eac2
2
pgsql/Demo/SingleNode/pgsql/conf.d/xxxx.conf.example
Normal file
2
pgsql/Demo/SingleNode/pgsql/conf.d/xxxx.conf.example
Normal file
@ -0,0 +1,2 @@
|
||||
listen_addresses = '*'
|
||||
|
@ -1,19 +0,0 @@
|
||||
[mysqld]
|
||||
mysqlx = OFF
|
||||
skip-name-resolve = 1
|
||||
max-user-connections = 600
|
||||
|
||||
## this should be less than 80% of total memory
|
||||
innodb-buffer-pool-size = xxxxG
|
||||
|
||||
## this should be half of "innodb-buffer-pool-size"
|
||||
innodb-buffer-pool-instances = xxxx
|
||||
|
||||
# binlog
|
||||
server-id = 1
|
||||
log-bin = /var/lib/mysql-bin/master
|
||||
binlog-format = ROW
|
||||
binlog-expire-logs-seconds = 172800
|
||||
gtid-mode = ON
|
||||
enforce-gtid-consistency = TRUE
|
||||
|
109
pgsql/Demo/StreamReplication/README.md
Normal file
109
pgsql/Demo/StreamReplication/README.md
Normal file
@ -0,0 +1,109 @@
|
||||
# 部署 PostgreSQL 流复制
|
||||
|
||||
- 按实际环境修改
|
||||
- docker-compose.yml
|
||||
- pgsql1/conf.d/\*.cnf
|
||||
- pgsql2/conf.d/\*.cnf
|
||||
|
||||
- 创建目录
|
||||
```
|
||||
grep '\<source:' docker-compose.yml | cut -d: -f2 | xargs mkdir -p
|
||||
```
|
||||
|
||||
- 启动
|
||||
```
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
- 查看日志,直至出现 "PGSQL is ready for connections."
|
||||
```
|
||||
docker-compose logs pgsql1
|
||||
docker-compose logs pgsql2
|
||||
```
|
||||
|
||||
- 登录 pgsql1 数据库,创建测试表,写入测试数据
|
||||
```
|
||||
docker exec -u postgres pgsql1 \
|
||||
psql -c "create table t1(id int, name varchar)"
|
||||
docker exec -u postgres pgsql1 \
|
||||
psql -c "insert into t1 values (1, 'aa'),(2, 'bb')"
|
||||
```
|
||||
|
||||
- 登录 pgsql1 数据库,创建同步用户,配置权限
|
||||
```
|
||||
docker exec -u postgres pgsql1 \
|
||||
psql -c "create user replicator login replication password 'Replicator_1234'"
|
||||
docker exec -u postgres pgsql1 \
|
||||
echo 'host replication replicator pgsql2 trust' >> pgsql1/db/pg_hba.conf
|
||||
#docker exec -u postgres pgsql1 pg_ctl reload
|
||||
```
|
||||
|
||||
- 增加主库配置
|
||||
```
|
||||
echo '
|
||||
wal_level = hot_standby
|
||||
max_wal_senders = 8
|
||||
wal_keep_size = 512
|
||||
wal_sender_timeout = 60s
|
||||
max_connections = 100
|
||||
' > pgsql1/conf.d/replication.conf
|
||||
|
||||
- 重启 pgsql1 数据库
|
||||
```
|
||||
docker-compose restart pgsql1
|
||||
```
|
||||
|
||||
- 登录 pgsql2 数据库,同步 pgsql1 的数据目录
|
||||
```
|
||||
docker exec -u postgres pgsql2 mkdir -p /var/log/pgsql/db_pg1
|
||||
docker exec -u postgres pgsql2 \
|
||||
pg_basebackup \
|
||||
-h pgsql1 \
|
||||
-D /var/log/pgsql/db_pg1 \
|
||||
-p 5432 \
|
||||
-U replicator \
|
||||
-Fp -Xs -P -c fast
|
||||
```
|
||||
|
||||
- 停止并删除 pgsql2 容器,替换其数据目录,**注意数据目录权限**
|
||||
```
|
||||
docker-compose stop pgsql2
|
||||
docker-compose rm -f pgsql2
|
||||
rm -rf pgsql2/db
|
||||
mv pgsql2/log/db_pg1 pgsql2/db
|
||||
chmod 0750 pgsql2/db
|
||||
```
|
||||
|
||||
- 增加从库配置
|
||||
```
|
||||
echo '
|
||||
primary_conninfo = 'host=pgsql1 port=5432 user=replicator'
|
||||
recovery_target_timeline = latest
|
||||
hot_standby = on
|
||||
max_standby_streaming_delay = 30s
|
||||
wal_receiver_status_interval = 10s
|
||||
hot_standby_feedback = on
|
||||
max_connections = 200
|
||||
max_worker_processes = 20
|
||||
' > pgsql2/conf.d/replication.conf
|
||||
```
|
||||
|
||||
- 启动 pgsql2 数据库
|
||||
```
|
||||
docker-compose up -d pgsql2
|
||||
```
|
||||
|
||||
- 登录 pgsql1 数据库,查看从库信息
|
||||
```
|
||||
docker exec -u postgres pgsql1 \
|
||||
psql -c "select
|
||||
client_addr,
|
||||
usename,
|
||||
backend_start,
|
||||
application_name,
|
||||
sync_state,
|
||||
sync_priority
|
||||
FROM pg_stat_replication;"
|
||||
# 在 pgsql1 里创建数据库、表或更改数据,在 pgsql2 里可以看到
|
||||
```
|
||||
|
39
pgsql/Demo/StreamReplication/docker-compose.yml
Normal file
39
pgsql/Demo/StreamReplication/docker-compose.yml
Normal file
@ -0,0 +1,39 @@
|
||||
version: "3.7"
|
||||
|
||||
services:
|
||||
pgsql1:
|
||||
image: harbor.colben.cn/general/pgsql:15
|
||||
container_name: pgsql1
|
||||
restart: "on-failure"
|
||||
stop_grace_period: 32s
|
||||
networks:
|
||||
pgsql:
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./pgsql1/db
|
||||
target: /var/lib/pgsql/
|
||||
- type: bind
|
||||
source: ./pgsql1/conf.d
|
||||
target: /etc/pgsql/conf.d
|
||||
- type: bind
|
||||
source: ./pgsql1/log
|
||||
target: /var/log/pgsql
|
||||
|
||||
pgsql2:
|
||||
image: harbor.colben.cn/general/pgsql:15
|
||||
container_name: pgsql2
|
||||
restart: "on-failure"
|
||||
stop_grace_period: 32s
|
||||
networks:
|
||||
pgsql:
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./pgsql2/db
|
||||
target: /var/lib/pgsql/
|
||||
- type: bind
|
||||
source: ./pgsql2/conf.d
|
||||
target: /etc/pgsql/conf.d
|
||||
- type: bind
|
||||
source: ./pgsql2/log
|
||||
target: /var/log/pgsql
|
||||
|
2
pgsql/Demo/StreamReplication/pgsql1/conf.d/server.conf
Normal file
2
pgsql/Demo/StreamReplication/pgsql1/conf.d/server.conf
Normal file
@ -0,0 +1,2 @@
|
||||
listen_addresses = '*'
|
||||
|
@ -41,6 +41,7 @@ include = 'fixed-parameters.conf'\n\
|
||||
data_directory = '/var/lib/pgsql'\n\
|
||||
hba_file = '/var/lib/pgsql/pg_hba.conf'\n\
|
||||
ident_file = '/var/lib/pgsql/pg_ident.conf'\n\
|
||||
unix_socket_directories = '/tmp'\n\
|
||||
log_destination = 'stderr'\n\
|
||||
logging_collector = on\n\
|
||||
log_directory = '/var/log/pgsql'\n\
|
||||
|
@ -13,4 +13,5 @@
|
||||
|
||||
## 案例
|
||||
- [Demo/SingleNode/](Demo/SingleNode/): 单节点
|
||||
- [Demo/StreamReplication/](Demo/StreamReplication/): 流复制
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user