Short time ago, I published how to install Nextcloud with postgreSQL as Database Backend and how to Install Nextcloud 17 with MariaDB as Database-Backend, but if you are running on MySQL/mariaDB, how to migrate to postgreSQL?
Well it is simple, let me show you how to.
Migrate from MySQL/mariaDB/SQLLite to postgreSQL
– a running Nextcloud Instance
– shell access and appropriate rights
Step 1: Install postgreSQL
First, we install the postgreSQL as Database-Server:
apt install -y postgresql postgresql-contrib
Now you can connect to postgreSQL with:
root@db01:/# sudo -u postgres psql psql (11.5 (Debian 11.5-1+deb10u1)) Type "help" for help. postgres=#
you can get information about connection with:
postgres=# \conninfo You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
and end session with:
Step 2: Install postgreSQL-php-module
With the following command we will install the php-module for postgreSQL:
apt install -y php7.3-pgsql
If you are running Nextcloud on other than php7.3 please adjust the version-number, as example:
apt install -y php7.2-pgsql
Step 3: Create Database
Before we can migrate our database backend of Nextcloud, we first have to create a database in postgreSQL. To do this, we execute the following commands:
sudo -u postgres psql
CREATE USER nextcloud WITH PASSWORD 'your-password'; CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE'; ALTER DATABASE nextcloud OWNER TO nextcloud; GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud; \q
Step 4: Start migration step
With the next command you will start the migration (adjust path of your nextcloud):
sudo -u www-data php7.3 /var/www/html/nextcloud/occ db:convert-type --all-apps --password "Your-Password" pgsql nextcloud localhost nextcloud
When finished, control Database Information in Settings of your Nextcloud:
Now you are running on postgreSQL as Database Backend 🙂
Problems with the tutorial? Then comment below or contact me per Mail or Mastodon.
Happy nextclouding and do not forget to share 🙂