Skip to content

Commit cbeac00

Browse files
committed
mysql 8 migration - handle script as command
This allows the container to finish once the dump as been made to allow the next migration to start. With this, we've used the root user to allow changing of ownership of the mysqldump volume. Because of MDEV-20912 being resolved we don't need to manually change collations.
1 parent ae6d42a commit cbeac00

File tree

2 files changed

+10
-13
lines changed

2 files changed

+10
-13
lines changed

examples/migration-8.0/compose-mysql8.0.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ services:
5252
mysql:
5353
condition: service_healthy
5454
restart: "no"
55+
user: root
5556
command: /docker-entrypoint-initdb.d/dump-mysql.sh
5657
volumes:
5758
- mysqldump:/etc/dump/
@@ -69,13 +70,7 @@ services:
6970

7071
volumes:
7172
dbdata: {}
72-
# sudo chown -R 999:999 ${PWD}/dump-data # on host before running this file
7373
mysqldump:
74-
driver: local
75-
driver_opts:
76-
type: none
77-
device: "${PWD}/dump-data"
78-
o: bind
7974

8075
networks:
8176
backend:

examples/migration-8.0/dump-mysql.sh

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
echo 'MariaDB service started.'
44
# Run your commands and exit container
55
whoami # mysql
6-
# sh -c "chown -R mysql:mysql /etc/dump" # Operation permitted
6+
if [ "$(whoami)" = root ]; then
7+
chown -R mysql:mysql /etc/dump
8+
fi
79
echo 'Remove files if exist'
810
files=("mysql-dump-data.sql.zst" "mysql-dump-users.sql.zst" "mysql-dump-stats.sql.zst" "mysql-dump-tzs.sql.zst")
911
for fileName in "${files[@]}"; do
@@ -14,15 +16,15 @@ for fileName in "${files[@]}"; do
1416
done
1517
echo 'Dump and compress MySQL data with changed collation ...'
1618
fileName="mysql-dump-data.sql.zst"
17-
sh -c "mariadb-dump -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} ${MARIADB_DB} | sed 's/utf8mb4_0900/uca1400/g' | zstd > /etc/dump/${fileName}"
19+
gosu mysql sh -c "mariadb-dump --ssl-verify-server-cert=OFF -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} ${MARIADB_DB} | zstd > /etc/dump/${fileName}"
1820
echo 'Dump and compress MySQL users ...'
1921
fileName="mysql-dump-users.sql.zst"
20-
sh -c "mariadb-dump -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} --system=users | zstd > /etc/dump/${fileName}"
22+
gosu mysql sh -c "mariadb-dump --ssl-verify-server-cert=OFF -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} --system=users | zstd > /etc/dump/${fileName}"
2123
echo 'Dump and compress MySQL stats ...'
2224
fileName="mysql-dump-stats.sql.zst"
23-
sh -c "mariadb-dump -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} --system=stats | zstd > /etc/dump/${fileName}"
25+
gosu mysql sh -c "mariadb-dump --ssl-verify-server-cert=OFF -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} --system=stats | zstd > /etc/dump/${fileName}"
2426
echo 'Dump and compress MySQL timezones ...'
2527
fileName="mysql-dump-tzs.sql.zst"
26-
sh -c "mariadb-dump -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} --system=timezones | zstd > /etc/dump/${fileName}"
27-
echo 'Show MySQL 8.0 create user'
28-
sh -c "mariadb -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} -e 'SELECT @@print_identified_with_as_hex; show create user current_user();'"
28+
gosu mysql sh -c "mariadb-dump --ssl-verify-server-cert=OFF -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} --system=timezones | zstd > /etc/dump/${fileName}"
29+
echo 'Show MySQL 8.x create user'
30+
gosu mysql sh -c "mariadb --ssl-verify-server-cert=OFF -h${MYSQL_CONT_NAME} -uroot -p${MARIADB_ROOT_PASSWORD} -e 'SELECT @@print_identified_with_as_hex; show create user current_user();'"

0 commit comments

Comments
 (0)