Skip to content

Commit

Permalink
mariadb: some improvements to migration
Browse files Browse the repository at this point in the history
  • Loading branch information
saltydk committed Jul 23, 2023
1 parent 1f4ed65 commit 0c73cdc
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 31 deletions.
12 changes: 11 additions & 1 deletion roles/mariadb/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
##########################################################################
# Title: Saltbox: MariaDB | Default Variables #
# Author(s): desimaniac #
# Author(s): desimaniac, salty, owine #
# URL: https://github.com/saltyorg/Saltbox #
# -- #
##########################################################################
Expand Down Expand Up @@ -30,6 +30,15 @@ mariadb_docker_env_password: "password321"
mariadb_docker_env_user: "{{ user.name }}"
mariadb_docker_env_db: "saltbox"

################################
# Migration Settings
################################

mariadb_docker_envs_mysql_root_password: password321
mariadb_docker_image_migration: "lscr.io/linuxserver/mariadb:10.6.13"
mariadb_docker_volumes_migration:
- "{{ mariadb_paths_location }}:/config"

################################
# Docker
################################
Expand All @@ -55,6 +64,7 @@ mariadb_docker_envs_default:
MARIADB_USER: "{{ lookup('vars', mariadb_name + '_docker_env_user', default=mariadb_docker_env_user) }}"
MARIADB_PASSWORD: "{{ lookup('vars', mariadb_name + '_docker_env_password', default=mariadb_docker_env_password) }}"
MARIADB_DATABASE: "{{ lookup('vars', mariadb_name + '_docker_env_db', default=mariadb_docker_env_db) }}"
MARIADB_AUTO_UPGRADE: "1"
mariadb_docker_envs_custom: {}
mariadb_docker_envs: "{{ lookup('vars', mariadb_name + '_docker_envs_default', default=mariadb_docker_envs_default)
| combine(lookup('vars', mariadb_name + '_docker_envs_custom', default=mariadb_docker_envs_custom)) }}"
Expand Down
2 changes: 1 addition & 1 deletion roles/mariadb/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#########################################################################
# Title: Saltbox: MariaDB Role #
# Author(s): desimaniac, l3uddz, salty #
# Author(s): desimaniac, l3uddz, salty, owine #
# URL: https://github.com/saltyorg/Saltbox #
# -- #
#########################################################################
Expand Down
8 changes: 4 additions & 4 deletions roles/mariadb/tasks/main2.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
#########################################################################
# Title: Saltbox: MariaDB Role #
# Author(s): desimaniac, l3uddz, salty #
# Author(s): desimaniac, l3uddz, salty, owine #
# URL: https://github.com/saltyorg/Saltbox #
# -- #
#########################################################################
# GNU General Public License v3.0 #
#########################################################################
---
- name: Remove existing Docker container
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/remove_docker_container.yml"

- name: Pre-Migration tasks
ansible.builtin.include_tasks: pre-migration.yml
when: mariadb_name == "mariadb"

- name: Remove existing Docker container
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/docker/remove_docker_container.yml"

- name: Create directories
ansible.builtin.include_tasks: "{{ resources_tasks_path }}/directories/create_directories.yml"

Expand Down
19 changes: 9 additions & 10 deletions roles/mariadb/tasks/post-migration.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#########################################################################
# Title: Saltbox: MariaDB Post-Migration #
# Author(s): owine #
# Author(s): owine, salty #
# URL: https://github.com/saltyorg/Saltbox #
# -- #
#########################################################################
Expand All @@ -15,15 +15,14 @@
- name: Import databases
when: subfolder.stat.exists and dump.stat.exists
block:
- name: Wait for 5 seconds
- name: Wait for 15 seconds
ansible.builtin.wait_for:
timeout: 15

- name: Import databases
community.mysql.mysql_db:
login_host: "mariadb"
login_user: "root"
login_password: "{{ mariadb_docker_env_password }}"
state: import
name: all
target: /opt/mariadb_legacy/dump.sql
- name: Restore data from dump file
ansible.builtin.shell: |
docker exec -i mariadb sh -c 'exec mariadb -uroot -p"$MARIADB_ROOT_PASSWORD"' < /opt/mariadb_legacy/dump.sql
- name: Force MariaDB upgrade
ansible.builtin.shell: |
docker exec mariadb sh -c 'exec mariadb-upgrade --force -uroot -p"$MARIADB_ROOT_PASSWORD"'
47 changes: 32 additions & 15 deletions roles/mariadb/tasks/pre-migration.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#########################################################################
# Title: Saltbox: MariaDB Pre-Migration #
# Author(s): owine #
# Author(s): owine, salty #
# URL: https://github.com/saltyorg/Saltbox #
# -- #
#########################################################################
Expand All @@ -15,20 +15,37 @@
- name: Dump and backup databases
when: subfolder.stat.exists
block:
- name: Install mysql-client dependency
ansible.builtin.apt:
name: mysql-client

- name: Dump databases
community.mysql.mysql_db:
login_host: "mariadb"
login_user: "root"
login_password: "{{ mariadb_docker_env_password }}"
state: dump
name: all
target: /opt/mariadb/dump.sql
skip_lock_tables: true
dump_extra_args: --column-statistics=0
- name: Create Docker Container # noqa args[module]
community.docker.docker_container:
command_handling: compatibility
container_default_behavior: compatibility
default_host_ip: ""
env:
PUID: "{{ uid }}"
PGID: "{{ gid }}"
TZ: "{{ tz }}"
MYSQL_ROOT_PASSWORD: "{{ mariadb_docker_envs_mysql_root_password }}"
hostname: "mariadb"
image: "{{ mariadb_docker_image_migration }}"
log_driver: "{{ (docker_log_driver != 'default') | ternary(docker_log_driver, lookup('vars', role_name + '_docker_log_driver', default=omit)) }}"
log_options: "{{ (docker_log_options != 'default') | ternary(docker_log_options, lookup('vars', role_name + '_docker_log_options', default=omit)) }}"
name: "mariadb"
network_mode: "{{ docker_networks_name_common }}"
networks: "{{ lookup('vars', role_name + '_docker_networks') }}"
networks_cli_compatible: true
pull: "{{ lookup('vars', role_name + '_docker_image_pull', default='yes') }}"
restart_policy: "{{ lookup('vars', role_name + '_docker_restart_policy', default='unless-stopped') }}"
state: started
stop_timeout: "{{ lookup('vars', role_name + '_docker_stop_timeout', default='10') }}"
volumes: "{{ mariadb_docker_volumes_migration }}"

- name: Wait for 30 seconds
ansible.builtin.wait_for:
timeout: 30

- name: Creating database dump
ansible.builtin.shell: |
docker exec mariadb sh -c 'exec mariadb-dump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /opt/mariadb/dump.sql
- name: Wait for 5 seconds
ansible.builtin.wait_for:
Expand Down

0 comments on commit 0c73cdc

Please sign in to comment.