將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲
使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。
如果 Nextcloud 在更新後出現「資料庫錯誤」異常,請nextcloud.log在變更任何表格之前檢查底層資料庫錯誤。首先恢復資料庫連線;如果更新過程中途停止,請先完成更新,occ upgrade然後僅在日誌顯示需要時才使用文件中記錄的修復命令。
瀏覽器訊息只是症狀,並非診斷結果。 Nextcloud 可能無法連接到 MySQL/MariaDB 或 PostgreSQL,資料庫帳戶可能已失效,或者應用程式程式碼和架構可能處於不同的升級階段。 Nextcloud官方故障排除指南建議將失敗的請求 ID 與伺服器日誌進行比對。
config/config.php。預設日誌檔案位於data/nextcloud.log,但自訂部署可能會將日誌記錄到其他位置。sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'
第二條指令僅適用於在 systemd 下執行 MariaDB 的主機;其他部署,請使用 PostgreSQL 服務或容器記錄。請尋找異常SQLSTATE程式碼和第一個與資料庫相關的錯誤原因,而不是依賴堆疊追蹤的最後一行。
| 日誌線索 | 首先進行有用的檢查 |
|---|---|
SQLSTATE[HY000] [2002] | 資料庫進程、主機名稱、連接埠、套接字路徑或 SQLite 檔案存取;驅動程式決定解釋方式。 |
SQLSTATE[HY000] [1040] | MySQL/MariaDB 連線耗盡和活動會話。 |
MySQL server has gone away | 資料庫重新啟動、斷開連線、資源壓力和伺服器日誌。 |
| 身份驗證或存取被拒絕 | 資料庫帳戶、密碼、網路存取權限和權限。 |
| 缺少表、關係或列 | 資料庫升級是否完成,以及已安裝的程式碼是否與其架構相符。 |
前三個範例已在 Nextcloud 的常見錯誤文件中說明。缺少表格資訊並不意味著允許手動建立表格:請先確定特定的遷移失敗原因。
在重試遷移之前,請務必保留可復原的資料庫備份,其中包含 Nextcloud 的設定和資料。官方備份流程還包括自訂應用程式和主題(如有)。請確認備份的時間點一致;僅包含程式碼的備份無法還原部分變更的資料庫。
以下命令假設安裝在常見的 Debian/Ubuntu系統中/var/www/nextcloud,www-data其 Web 伺服器帳戶為 `<username>`。請occ以對應的 HTTP 使用者身分運作;軟體包、Docker、Snap、AIO 和託管安裝的路徑和執行方法各不相同。 occ命令參考文件解釋了這些要求。
如果日誌顯示連線被拒絕、套接字不可達或伺服器無法使用,請先驗證現有資料庫服務是否正在執行。這些是主機層級的檢查方法,並非需要隨意執行的清單:
sudo systemctl status mariadb
sudo systemctl status postgresql
對於獨立的資料庫伺服器,還需檢查 DNS、防火牆規則、所選連接埠以及 Nextcloud 應用主機或容器的網路可及性。檢查config/config.php是否存在`<hostname> dbtype`、dbhost` <port> dbname` 和 `<connection>` 等設定項目dbuser。配置參數參考文件解釋了主機名稱、連接埠和 Unix 套接字語法。切勿將設定資訊貼dbpassword到公開工單或 shell 指令中,以免暴露歷史記錄。
如果在部署期間資料庫密碼輪替或憑證發生更改,請使用金鑰管理工作流程修正此不匹配。如果伺服器報告連線數過多,請在考慮容量變更之前檢查活動連線數和連線數累積的原因。索引指令無法解決連線中斷問題。
同時升級 PHP 或資料庫伺服器可能會導致先前運作正常的安裝故障。請務必將目標Nextcloud 版本與其官方系統需求和發行說明進行比較,而不要想當然地認為所有已安裝的驅動程式和伺服器版本都仍然受支援。根據查閱的 Nextcloud 35 文檔,PHP 版本支援 8.3 至 8.5;支援的資料庫版本在文件中另有說明。更早的版本有不同的限制。
此外,請確認所選引擎所需的 PHP 資料庫驅動程式已在命令列和 Web PHP 環境中啟用。架構遷移後,切勿盲目降級資料庫伺服器:僅可從相容且一致的備份方案中進行還原。
資料庫可存取且備份安全後,切換至 Nextcloud 安裝目錄並檢查其狀態:
cd /var/www/nextcloud
sudo -E -u www-data php occ status
如果 Nextcloud 報告升級正在進行中或尚未完成,請按照已安裝的來源版本和目標版本的支援升級路徑進行操作。對於傳統的手動安裝,請運行:
sudo -E -u www-data php occ upgrade
請勿中斷指令或執行並發升級程序。請閱讀其輸出:成功遷移與資料庫連線異常有所不同。 Nextcloud 的手動升級文件明確建議occ upgrade在基於 Web 的升級進程停滯以及maintenance:repair升級路徑需要修復時採取以下措施:
sudo -E -u www-data php occ maintenance:repair
在分析故障原因後使用maintenance:repair此方法;它不能取代修復錯誤的憑證、停止運行的資料庫或真正不相容的執行環境。如果occ upgrade特定 SQL 遷移失敗,請儲存確切的異常訊息,並尋找特定版本的修復程式或還原完整的匹配備份,而不是嘗試手動使用 DDL。
某些遷移操作會被有意延遲。在運行中的實例上,管理概覽可能會詢問是否需要新增可選的列、索引或主鍵。如果該版本支持,這些命令可以提供預運行預覽:
sudo -E -u www-data php occ db:add-missing-indices --dry-run
sudo -E -u www-data php occ db:add-missing-columns --dry-run
sudo -E -u www-data php occ db:add-missing-primary-keys --dry-run
--dry-run只有當已記錄的問題或管理檢查需要且建議的變更已審核時,才執行相應的命令。這些維護操作在大資料庫上可能需要一些時間。 Nextcloud 35 也提供了相關文件db:schema:check;請勿假定舊版本分支中存在此文件。有關特定版本的行為,請參閱資料庫指令參考。
sudo -E -u www-data php occ status。確認已安裝版本與預期版本相符,無需升級,且未產生新的致命 SQL 異常。sudo -E -u www-data php occ maintenance:mode --off。nextcloud.log在這些檢查過程中,注意觀察是否有新的資料庫異常。如果再次出現相同的資料庫異常,請停止重複遷移,並收集請求 ID、SQLSTATE 文字、資料庫伺服器日誌、版本對以及失敗的occ輸出。這些資訊有助於確定剩餘問題是連接性問題、軟體不相容問題還是特定遷移失敗問題。僅憑登入成功並不能證明所有後台任務和資料庫查詢都能正常運作。
使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。
透過診斷 SQL 錯誤、檢查資料庫連線並安全地完成中斷的遷移,在更新後恢復 Nextcloud 存取。
使用 Nextcloud 的 OCC 命令從伺服器 shell 重設管理員密碼,並提供有關使用者名稱、權限和外部登入提供者的指導。
透過在 Apache、NGINX 或 TLS 代理程式上設定標頭來清除 Nextcloud 的 HSTS 警告,然後安全地驗證公共 HTTPS 回應。
追蹤 App Store 安裝失敗是否由 DNS、HTTPS、代理、TLS 或 Nextcloud 伺服器本身的設定問題所引起。
將縮圖製作移至受控的後台計劃,修剪未使用的預覽尺寸,並在不使 Nextcloud 伺服器過載的情況下驗證佇列。
找到導致 Nextcloud 同步失敗的檔案、排除規則、連線問題或用戶端資料庫狀態,然後安全地驗證上傳和下載。
找到觸發 Nextcloud 警告的 PHP OPcache 限制,更新正確的 Web PHP 配置,安全重啟,並驗證結果。
比較內建程式碼和基於 Docker 的程式碼,然後透過安全的 HTTPS 反向代理將 Collabora Online 連接到 Nextcloud。
規劃一個可靠的 Nextcloud 高可用性部署,包括共用儲存、Redis 鎖定、支援仲裁的 MariaDB 路由和實用的故障轉移檢查。