Avatar
0
Đỗ Thanh Tùng Beginner
Hai postgres container sử dụng chung một volume. Làm sao để đồng bộ data insert, update, delete từ hai postgres container với nhau?
Chào mọi người.

Em sử dụng 2 docker compose file để tạo ra hai postgres container.

Postgres container ở docker compose file thứ nhất run và tạo ra một volume.

Postgres container ở docker compose file thứ hai sẽ sử dụng chung volume từ Postgres container ở docker compose file thứ nhất.

Khi em connect tới cả hai Postgres container thì Postgres container ở docker compose file thứ hai đã nhận được hết data phát sinh trước đó của Postgres container ở docker compose file thứ nhất.

Nhưng sau đó khi một trong hai Postgres container phát sinh create database, create table, insert, update, delete data thì Postgres container còn lại không được update lại dữ liệu mới và phát sinh data độc lập với nhau.

Có ai am hiểu về docker giúp em với ạ.

Em cảm ơn nhiều ạ.

File docker compose thứ nhất:

version: '3.4'

services:
  postgres:
    container_name: postgres-01
    image: postgres:14.1-alpine
    restart: always
    environment:
      - POSTGRES_DB=postgres_test
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres_123456
      - TZ=Asia/Ho_Chi_Minh
    expose:
      - 5432
    ports:
      - 5432:5432
    volumes:
      - postgres-db:/var/lib/postgresql/data
volumes:
  postgres-db:
    driver: local

File docker compose thứ 2:
version: '3.4'

services:
  postgres:
    container_name: postgres-02
    image: postgres:14.1-alpine
    restart: always
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres_123456
      - TZ=Asia/Ho_Chi_Minh
    expose:
      - 5432
    ports:
      - 5433:5432
    volumes:
      - postgres-db:/var/lib/postgresql/data
volumes:
  postgres-db:
    external: true
  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
The Best Answer
Anh chưa hiểu mô hình em định setup là gì, nhưng anh nghĩ em phải setup theo kiểu replica, có một con làm master và một con làm slave, dữ liệu sẽ được ghi vào master sau đó tự động đồng bộ sang slave nhỉ? Em có thể tham khảo bài viết này xem sao: https://bobcares.com/blog/postgres-docker-replication/

Thêm vào nữa anh nghĩ là không nên dùng docker để setup database, em có thể tham khảo bài viết này nhé: https://blog.dbwatch.com/running-database-instances

  • 1
  • Reply
Em đang nghiên cứu Load Balancing database with Docker ạ.

Cảm ơn anh đã cho em keyword để em nghiên cứu tiếp ạ.

 –  Đỗ Thanh Tùng 1696849709000