我对将数据迁移到新的 nextcloud 安装有疑问。我有一个单节点谷歌 Ganeti 集群,其中有多个 VM,nextcloud 和备份 VM 是唯一具有外部数据存储的 VM。Ganeti 主服务器(主机)和所有 VM 都运行 Ubutuntu 16.04。
- 对于 nextcloud,我有一个 raid 5,通过 nfs 从主机(Ganeti)连接到客户机(nextcloud),其中包含 2TB 的数据
- 我正在使用 samba 4 AD 来管理用户帐户
- 数据目录中的用户文件夹是用户的 UUID
现在我想将 Ganeti 主服务器(主机)和虚拟机(客户机)从 Ubuntu 迁移到 Debian。这意味着我必须删除所有内容,保留现有 raid 并重新安装主机和客户机。因此,当设置新的 samba 4 AD 并再次创建用户时,他们将拥有不同的 UUID。我当前的 samba 版本是 4.3.11-Ubuntu,所以我无法运行备份samba-tool domain backup offline --targetdir=/backup-dir
有没有办法将现有账户的数据迁移到具有新 UUID 的新账户?或者将现有 UUID 重新映射到 CN?
我发现用户的 UUID(即他们的主目录)存储在 mysql 数据库中。
我已经在 nextcloud 社区问过这个问题,但还没有答案。
先谢谢了
答案1
迁移到 Debian 后,我决定从默认的 stretch repo 中将 mysql-5.7 迁移到 mariadb-server 10.1.37-0+deb9u1。因此我执行了以下操作:
- 安装了默认 Debian pero 所需的所有软件包,这些软件包是 nextcloud 所需的
- 创建了我的 nextcloud vhost
- 将目录复制
/var/www/nextcloud/
到新服务器 - 从旧服务器创建 sqldump 并将其复制到新服务器
第一个问题是 mariadb-server 10.1.37 中innodb_large_prefix
未启用此功能,这导致我在导入 mysqldump 时对某些表感到头疼。而它在 mysql-server 5.7 中已启用。因此我做了以下操作:
# mysql -u root -p
MariaDB [(none)]> SET GLOBAL innodb_file_format=Barracuda;
MariaDB [(none)]> SET GLOBAL innodb_file_per_table=ON;
MariaDB [(none)]> SET GLOBAL innodb_large_prefix=1;
然后从mysql注销。接下来我创建了nextcloud表并导入了数据库并进行了升级:
mysql -u root -p -e "CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
mysql -u root -p nextcloud < /tmp/nextcloud.sql
mysql_upgrade -u root -p --force
然后我添加了 apache ssl vhost 和 LDAPS 的证书并重新启动了 apache2 和 mysql。
最后一步是将 nextcloud 服务器的新 IP 添加到Ganeti 主机(主机)上,并在新的 nextcloud 服务器中/etc/exports
自动挂载共享。/etc/fstab
就这样,一切都准备就绪,并且运行正常。
笔记:
如果新的 nextcloud 服务器有不同的主机名,您必须执行以下操作:
- 替换 apache vhost 中的服务器名称
- 替换服务器名称
/var/www/nextcloud/config/config.php
将 nextcloud.sql 转储中的所有旧服务器名称替换为新服务器名称,然后再将其导入数据库:
cp nextcloud.slq nextcloud-org.sql sed -i 's/old\.cloud\.server/new\.cloud\.server/g' nextcloud.sql
完毕
笔记:
如果您使用的是 mariadb fro debian buster,即 mariadb-server 1:10.3.13-1 ,则innodb_large_prefix
由于兼容性,将再次重新启用。但我还没有测试过。
https://mariadb.com/kb/en/library/innodb-system-variables/#innodb_large_prefix