ストレージを壊さずに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'
2番目のコマンドは、systemdでMariaDBを実行しているホストにのみ適用されます。その他の環境では、PostgreSQLのサービスログまたはコンテナログを使用してください。最後のスタックトレース行に頼るのではなく、例外SQLSTATEコードと最初のデータベース関連の原因を検索してください。
| ログの手がかり | 最初の便利なチェック |
|---|---|
SQLSTATE[HY000] [2002] | データベースプロセス、ホスト名、ポート、ソケットパス、またはSQLiteファイルへのアクセス。解釈はドライバによって決定されます。 |
SQLSTATE[HY000] [1040] | MySQL/MariaDBの接続枯渇とアクティブなセッション。 |
MySQL server has gone away | データベースの再起動、切断、リソース負荷、およびサーバーログ。 |
| 認証またはアクセスが拒否されました | データベースアカウント、パスワード、ネットワークアクセス、および権限。 |
| テーブル、リレーション、または列が見つかりません | データベースのアップグレードが完了したか、またインストールされたコードがそのスキーマと一致しているか。 |
最初の3つの例は、Nextcloudのドキュメントに記載されている一般的なエラーについて説明しています。テーブルが見つからないというメッセージは、テーブルを手動で作成する許可を意味するものではありません。まず、移行の失敗箇所を正確に特定してください。
マイグレーションを再試行する前に、Nextcloudの設定とデータとともに、復元可能なデータベースのバックアップを保存してください。公式のバックアップ手順には、カスタムアプリやテーマが存在する場合も含まれます。バックアップが同じ時点のものであることを確認してください。コードのみのバックアップでは、部分的に変更されたデータベースを復元することはできません。
以下のコマンドは、一般的な Debian/Ubuntu インストール環境()を想定しており/var/www/nextcloud、www-dataWeb サーバーアカウントは です。occ適切な HTTP ユーザーとして実行してください。パッケージ、Docker、Snap、AIO、およびマネージドインストールでは、パスと実行方法が異なります。occコマンドのリファレンスでこれらの要件について説明しています。
ログに接続拒否、到達不能なソケット、または利用できないサーバーが表示されている場合は、まず既存のデータベースサービスが実行されていることを確認してください。これらはホストレベルの代替チェックであり、無差別に実行すべきリストではありません。
sudo systemctl status mariadb
sudo systemctl status postgresql
別個のデータベース サーバーの場合は、DNS、ファイアウォール ルール、選択したポート、および Nextcloud アプリケーション ホストまたはコンテナからのネットワーク到達可能性も確認してください。、、、 を調べてください。構成パラメータ リファレンスconfig/config.phpには、ホスト名、ポート、および Unix ソケット構文の説明があります。 は、公開チケットや履歴に残るシェル コマンドに貼り付けないでください。dbtypedbhostdbnamedbuserdbpassword
デプロイ中にデータベースのパスワードが変更されたり、認証情報が変更された場合は、シークレット管理ワークフローを使用して不一致を修正してください。サーバーが接続数が多すぎると報告した場合は、容量変更を検討する前に、アクティブな接続と接続が蓄積している原因を調べてください。インデックスコマンドでは接続障害は解消されません。
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 35db: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コマンドを使用して、サーバーシェルから管理者パスワードをリセットする方法を説明します。ユーザー名、権限、外部ログインプロバイダーに関するガイダンスも含まれています。
NextcloudのHSTS警告を解消するには、Apache、NGINX、またはTLSプロキシでヘッダーを設定し、公開HTTPS応答が安全に動作することを確認してください。
App Storeのインストール失敗の原因を、DNS、HTTPS、プロキシ、TLS、またはNextcloudサーバー自体の設定の問題に絞り込んでください。
サムネイル作成作業を制御されたバックグラウンドスケジュールに移行し、使用されていないプレビューサイズをトリミングし、Nextcloudサーバーに過負荷をかけることなくキューを検証します。
Nextcloudの同期を妨げているファイル、除外ルール、接続の問題、またはクライアントデータベースの状態を特定し、アップロードとダウンロードが安全に行われることを確認します。
Nextcloudの警告を引き起こしているPHP OPcacheの制限値を特定し、適切なWeb PHP設定を更新し、安全に再起動して、結果を確認してください。
組み込みのCODEとDockerベースのCODEを比較し、安全なHTTPSリバースプロキシを介してCollabora OnlineをNextcloudに接続します。
共有ストレージ、Redisロック、クォーラム対応MariaDBルーティング、および実用的なフェイルオーバーチェックを備えた、信頼性の高いNextcloud HAデプロイメントを計画します。