From 5abef0b07766beb28250e89d24bf8df3b80f7510 Mon Sep 17 00:00:00 2001 From: Anel Husakovic Date: Mon, 27 Nov 2023 13:20:38 +0100 Subject: [PATCH] Add semi-sync replication example --- examples/compose-replication-semisync.yml | 67 +++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 examples/compose-replication-semisync.yml diff --git a/examples/compose-replication-semisync.yml b/examples/compose-replication-semisync.yml new file mode 100644 index 00000000..3ef9c79e --- /dev/null +++ b/examples/compose-replication-semisync.yml @@ -0,0 +1,67 @@ +version: "3" +x-common-variables: &common-variables + MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD} + MYSQL_INITDB_SKIP_TZINFO: ${MYSQL_INITDB_SKIP_TZINFO} + MARIADB_REPLICATION_USER: ${MARIADB_REPLICATION_USER} + MARIADB_REPLICATION_PASSWORD: ${MARIADB_REPLICATION_PASSWORD} + +x-common-attributes: &common-attributes + image: mariadb:lts + env_file: + - .env + environment: *common-variables + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 10s + timeout: 5s + retries: 3 + logging: + driver: journald + networks: + - backend + +x-common-replication: &common-replication + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--replication_io", "--replication_sql", "--replication_seconds_behind_master=1", "--replication"] + interval: 10s + timeout: 5s + retries: 3 + +services: + master: + <<: *common-attributes + container_name: ${PRIMARY_name} + command: --log-bin --log-basename=mariadb --rpl_semi_sync_master_enabled + environment: + - MARIADB_USER=testuser + - MARIADB_PASSWORD=password + - MARIADB_DATABASE=testdb + + replica1: + <<: + - *common-attributes + - *common-replication + container_name: ${REPLICATION_name_1} + command: --server-id=2 --log-basename=mariadb --rpl_semi_sync_slave_enabled + environment: + - MARIADB_MASTER_HOST=${PRIMARY_name} + - MARIADB_HEALTHCHECK_GRANTS=REPLICA MONITOR + depends_on: + master: + condition: service_healthy + + replica2: + <<: + - *common-attributes + - *common-replication + container_name: ${REPLICATION_name_2} + command: --server-id=3 --log-basename=mariadb --rpl_semi_sync_slave_enabled + environment: + - MARIADB_MASTER_HOST=${PRIMARY_name} + - MARIADB_HEALTHCHECK_GRANTS=REPLICA MONITOR + depends_on: + master: + condition: service_healthy + +networks: + backend: