From b7db03be7651cf59ea7df5cfecb6b14f6f86b8b4 Mon Sep 17 00:00:00 2001 From: philippe lhardy Date: Mon, 18 Aug 2025 09:46:24 +0200 Subject: [PATCH] database migration from sqlite to postgres Signed-off-by: philippe lhardy --- nextcloud_devenv/README.md | 5 +++- nextcloud_devenv/backup_sql.sh | 13 ++++++++ nextcloud_devenv/config_db_query.sh | 15 ++++++++++ nextcloud_devenv/get_dbcontent.sh | 30 ++++++++++++++++--- .../migrate_db_sqlite2postgres.sh | 24 +++++++++++++++ 5 files changed, 82 insertions(+), 5 deletions(-) create mode 100755 nextcloud_devenv/backup_sql.sh create mode 100644 nextcloud_devenv/config_db_query.sh create mode 100755 nextcloud_devenv/migrate_db_sqlite2postgres.sh diff --git a/nextcloud_devenv/README.md b/nextcloud_devenv/README.md index 5849874..2bdcf3c 100644 --- a/nextcloud_devenv/README.md +++ b/nextcloud_devenv/README.md @@ -59,4 +59,7 @@ et a activer l'application polls # A Faire -utiliser la base de donnee postgres et non le SQLLite ? \ No newline at end of file +utiliser la base de donnee postgres et non le SQLLite ? + +./migrate_db_sqlite2postgres.sh + diff --git a/nextcloud_devenv/backup_sql.sh b/nextcloud_devenv/backup_sql.sh new file mode 100755 index 0000000..b6adc72 --- /dev/null +++ b/nextcloud_devenv/backup_sql.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +date + +pg_dump=pg_dump + +application=nextcloud +BACKUP_ROOT_DIR= +DATABASE=nextcloud_dev +SQL_BACKUP_PATH="${BACKUP_ROOT_DIR}sql-${application}-$(date -Im).bak" && sudo -u postgres $pg_dump -p 5432 -F c $DATABASE | tee "$SQL_BACKUP_PATH" >/dev/null +echo "$application postgres backup is in $SQL_BACKUP_PATH" + +date diff --git a/nextcloud_devenv/config_db_query.sh b/nextcloud_devenv/config_db_query.sh new file mode 100644 index 0000000..140a395 --- /dev/null +++ b/nextcloud_devenv/config_db_query.sh @@ -0,0 +1,15 @@ + +query_password "database password :" password + +if [[ -z $password ]] +then + log_error "Missing password" + exit 1 +fi + +flavor=dev + +database_name=nextcloud_$flavor +username=nextcloud_$flavor +db_port=5432 +db_hostname=127.0.0.1 diff --git a/nextcloud_devenv/get_dbcontent.sh b/nextcloud_devenv/get_dbcontent.sh index 8c6c7b6..127a4f3 100755 --- a/nextcloud_devenv/get_dbcontent.sh +++ b/nextcloud_devenv/get_dbcontent.sh @@ -7,7 +7,29 @@ bind_folder=$(pwd)/$rel_bind_folder timestamp=$(get_timestamp_second) -database_file=/data/owncloud.db -database_dest=nextcloud.${timestamp}.db -$defer sudo cp ${bind_folder}${database_file} ${database_dest} -$defer sudo chown $(id -u):$(id -g) ${database_dest} +getsqlite() +{ + database_file=/data/owncloud.db + database_dest=nextcloud.${timestamp}.db + $defer sudo cp ${bind_folder}${database_file} ${database_dest} + $defer sudo chown $(id -u):$(id -g) ${database_dest} +} + +getmysql() +{ + BACKUP_FILE=nextcloud.${timestamp}.mysql + database_dest=nextcloud.${timestamp}.db + ssh ${SSH_URL} 'mysqldump -u adminmyweb -p nextcloud --single-transaction --quick --lock-tables=false' | cat > ${BACKUP_FILE} +} + +getpostgresql() +{ + ./backup_sql.sh +} + + + +log_warn "NO check if sqlite was migrated... so might get unused information" + +getsqlite +getpostgresql diff --git a/nextcloud_devenv/migrate_db_sqlite2postgres.sh b/nextcloud_devenv/migrate_db_sqlite2postgres.sh new file mode 100755 index 0000000..994e681 --- /dev/null +++ b/nextcloud_devenv/migrate_db_sqlite2postgres.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +source lib/metascript.sh + +defaultmetainit $@ + +rel_bind_folder=bind_folder +bind_folder=$(pwd)/$rel_bind_folder + +$defer ./get_dbcontent.sh + +# $defer ./setupdatabase.sh + +log_info "See https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/db_conversion.html" + +source ./config_db_query.sh + +# convert localhost of host into container virtual brdige hostname mapping +#db_hostname=host.docker.internal +#db_hostname=host.containers.internal +# host loopback mapped address +db_hostname=10.1.1.13 + +$defer ./run_occ.sh db:convert-type --password="$password" --port="$db_port" --all-apps pgsql "$username" "$db_hostname" "$database_name"