mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-04-27 21:01:28 -07:00
Fix replication settings
sh don't know 'echo -e', so we use bash instead. Also, we need to wait for the container to be healthy before trying to restart it. Otherwise that could corrupt it.
This commit is contained in:
parent
35531e741c
commit
b9d0e96deb
2 changed files with 20 additions and 8 deletions
13
.github/workflows/ansible-test-plugins.yml
vendored
13
.github/workflows/ansible-test-plugins.yml
vendored
|
@ -130,18 +130,21 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Setup tmate session
|
# No need to check for service health. GitHub Action took care of it.
|
||||||
uses: mxschmitt/action-tmate@v3
|
|
||||||
|
|
||||||
- name: Restart MySQL server with settings for replication
|
- name: Restart MySQL server with settings for replication
|
||||||
run: |
|
run: |
|
||||||
docker exec ${{ job.services.db_primary.id }} sh -c 'echo -e [mysqld]\\nserver-id=1\\nlog-bin=/var/lib/mysql/primary-bin > /etc/mysql/conf.d/replication.cnf'
|
docker exec ${{ job.services.db_primary.id }} bash -c 'echo -e [mysqld]\\nserver-id=1\\nlog-bin=/var/lib/mysql/primary-bin > /etc/mysql/conf.d/replication.cnf'
|
||||||
docker exec ${{ job.services.db_replica1.id }} sh -c 'echo -e [mysqld]\\nserver-id=2\\nlog-bin=/var/lib/mysql/replica1-bin > /etc/mysql/conf.d/replication.cnf'
|
docker exec ${{ job.services.db_replica1.id }} bash -c 'echo -e [mysqld]\\nserver-id=2\\nlog-bin=/var/lib/mysql/replica1-bin > /etc/mysql/conf.d/replication.cnf'
|
||||||
docker exec ${{ job.services.db_replica2.id }} sh -c 'echo -e [mysqld]\\nserver-id=3\\nlog-bin=/var/lib/mysql/replica2-bin > /etc/mysql/conf.d/replication.cnf'
|
docker exec ${{ job.services.db_replica2.id }} bash -c 'echo -e [mysqld]\\nserver-id=3\\nlog-bin=/var/lib/mysql/replica2-bin > /etc/mysql/conf.d/replication.cnf'
|
||||||
docker restart ${{ job.services.db_primary.id }}
|
docker restart ${{ job.services.db_primary.id }}
|
||||||
docker restart ${{ job.services.db_replica1.id }}
|
docker restart ${{ job.services.db_replica1.id }}
|
||||||
docker restart ${{ job.services.db_replica2.id }}
|
docker restart ${{ job.services.db_replica2.id }}
|
||||||
|
|
||||||
|
- name: Wait for the primary to be healthy
|
||||||
|
run: |
|
||||||
|
while ! /usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" ${{ job.services.db_primary.id }} && [[ "$SECONDS" -lt 120 ]]; do sleep 1; done
|
||||||
|
|
||||||
- name: >-
|
- name: >-
|
||||||
Perform integration testing against
|
Perform integration testing against
|
||||||
Ansible version ${{ matrix.ansible }}
|
Ansible version ${{ matrix.ansible }}
|
||||||
|
|
15
Makefile
15
Makefile
|
@ -11,7 +11,7 @@ test-integration:
|
||||||
--publish 3307:3306 \
|
--publish 3307:3306 \
|
||||||
--health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \
|
--health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \
|
||||||
$(db_engine_version) \
|
$(db_engine_version) \
|
||||||
mysqld --server-id 1 --log-bin=/var/lib/mysql/primary-bin
|
mysqld
|
||||||
podman run \
|
podman run \
|
||||||
--detach \
|
--detach \
|
||||||
--name replica1 \
|
--name replica1 \
|
||||||
|
@ -21,7 +21,7 @@ test-integration:
|
||||||
--publish 3308:3306 \
|
--publish 3308:3306 \
|
||||||
--health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \
|
--health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \
|
||||||
$(db_engine_version) \
|
$(db_engine_version) \
|
||||||
mysqld --server-id 2 --log-bin=/var/lib/mysql/replica1-bin
|
mysqld
|
||||||
podman run \
|
podman run \
|
||||||
--detach \
|
--detach \
|
||||||
--name replica2 \
|
--name replica2 \
|
||||||
|
@ -31,7 +31,16 @@ test-integration:
|
||||||
--publish 3309:3306 \
|
--publish 3309:3306 \
|
||||||
--health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \
|
--health-cmd 'mysqladmin ping -P 3306 -pmsandbox | grep alive || exit 1' \
|
||||||
$(db_engine_version) \
|
$(db_engine_version) \
|
||||||
mysqld --server-id 3 --log-bin=/var/lib/mysql/replica2-bin
|
mysqld
|
||||||
|
# Setup replication and restart containers
|
||||||
|
podman exec primary bash -c 'echo -e [mysqld]\\nserver-id=1\\nlog-bin=/var/lib/mysql/primary-bin > /etc/mysql/conf.d/replication.cnf'
|
||||||
|
podman exec replica1 bash -c 'echo -e [mysqld]\\nserver-id=2\\nlog-bin=/var/lib/mysql/replica1-bin > /etc/mysql/conf.d/replication.cnf'
|
||||||
|
podman exec replica2 bash -c 'echo -e [mysqld]\\nserver-id=3\\nlog-bin=/var/lib/mysql/replica2-bin > /etc/mysql/conf.d/replication.cnf'
|
||||||
|
# Don't restart a container unless it is healthy
|
||||||
|
while ! podman healthcheck run primary && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done
|
||||||
|
podman restart primary
|
||||||
|
podman restart replica1
|
||||||
|
podman restart replica2
|
||||||
while ! podman healthcheck run primary && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done
|
while ! podman healthcheck run primary && [[ "$$SECONDS" -lt 120 ]]; do sleep 1; done
|
||||||
-set -x; ansible-test integration $(target) -v --color --coverage --retry-on-error --continue-on-error --diff --docker --docker-network podman --python $(python); set +x
|
-set -x; ansible-test integration $(target) -v --color --coverage --retry-on-error --continue-on-error --diff --docker --docker-network podman --python $(python); set +x
|
||||||
rm tests/integration/db_engine_version
|
rm tests/integration/db_engine_version
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue