分页: 1 / 1

nextcloud 从 postgresql 数据库迁移到 mariadb/mysql

发表于 : 2024年 1月 16日 16:16
BobMaster
最近有一个需求,需要将nextcloud上的数据从s3对象存储切换为使用本地存储。
nextcloud-S3-local-S3-migration 项目只支持mysql/mariadb,因此我打算先将数据库切换为mariadb。
切换的方法很简单,使用官方的occ指令即可实现。
文档地址: https://docs.nextcloud.com/server/lates ... conversion

在切换之前,我们先在mariadb中创建nextcloud数据库和nextcloud用户。
创建数据库:

代码: 全选

CREATE DATABASE nextcloud
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_unicode_520_ci';
创建nextcloud用户,并赋予权限:

代码: 全选

create user nextcloud@localhost identified by '设置一个数据库密码';
grant all privileges on nextcloud.* to nextcloud@localhost;
flush privileges;
quit;
在转换前,推荐你备份一下原来的postgresql数据库

代码: 全选

sudo -u postgres pg_dump nextcloud > nextcloud.db.pg.sql
再做几个转换前的准备操作

代码: 全选

sudo -u www-data php occ maintenance:mode --on
sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
sudo -u www-data php occ maintenance:repair
接着使用下面的occ指令转换数据库

代码: 全选

php occ db:convert-type --all-apps mysql oc_mysql_user 127.0.0.1 new_db_name
比如我使用的是

代码: 全选

sudo -u www-data php occ db:convert-type --password="你设置的数据库密码" --clear-schema --all-apps mysql nextcloud 127.0.0.1 nextcloud
在提示Continue with the conversion?时,输入yes,然后回车
转换结束后,关闭维护模式

代码: 全选

sudo -u www-data php occ maintenance:mode --off
可以进 https://{server_url}/settings/admin/serverinfo 看到转换后的数据库类型确实为mysql,说明成功了
图片

Reference:
Invalid datetime format: 1366 Incorrect string value