データベースダンプの作成
バックアップ を Liferay Cloudのバックアップ サービスにアップロードするには、ドキュメント ライブラリとデータベース ダンプをそれぞれ含む 2 つの圧縮ファイルで構成されたスナップショットが必要です。 ローカル Liferay インスタンスのデータベースからデータをアップロードするには、アップロードするダンプを作成できる必要があります。 これは、 Liferay Cloud への移行 および Liferay のアップグレードに必要です。
バックアップ サービスは、1 つのデータベース ( lcp-secret-database-name シークレットで設定されたデータベース、通常は lportal) のバックアップと復元のみをサポートします。 複数のデータベースの圧縮とアップロードはサポートされていません。
テーブルの正しい表記の実現
Liferay Cloud ではデータベース テーブル名と列名は大文字と小文字が区別され、データベースの種類 (PostgreSQL または MySQL) によって異なる規則に従う必要があります。 特定のオペレーティング システムまたはデータベース タイプ間の変換では、テーブル名の大文字化に関するエラーが発生する可能性があります。 例えば、MySQLはLinuxではデフォルトで大文字と小文字を区別しますが、WindowsやMacOSでは区別しません(Liferayではすべて小文字の名前でテーブルが生成されることがあります)。
データベース ダンプを作成する前に、データベースのテーブルに適切な大文字/小文字が使用されていることを確認してください。 データベースのテーブルに正しい大文字/小文字のパターンがない場合は、手動またはスクリプトを使用して正しい形式に変換する必要があります。 また、テーブル名を参照する独自のコードには、更新された大文字と小文字を反映していることを確認する必要があります。 テーブル名の調整についてサポートが必要な場合は、 サポート チケットを送信してください 。
PostgreSQLの大文字化(小文字)
PostgreSQL の場合、エラーを回避するためにテーブル名は 小文字 にする必要があります。 テーブル名が大文字で作成されている場合(例: PascalCase)、Liferay Cloud では認識されません。 pgloaderなどのツールを使用してデータベースを PostgreSQL に変換した場合、名前はデフォルトで小文字に変換されます。
たとえば、次の Pascal ケース テーブル名を変換します。
-
アカウントエントリ → アカウントエントリ
-
CP定義 → CP定義
-
ゴミ箱エントリ → ゴミ箱エントリ
PostgreSQL の ALTER TABLE コマンドを使用して、テーブルの名前を変更できます。
MySQL の大文字化 (Pascal の場合)
MySQL の場合、テーブル名は パスカルケースにする必要があります。 テーブル名が小文字で作成されている場合、Liferay Cloudでは認識できません。
例えば、これらの小文字のテーブル名を変換します。
-
アカウントエントリ → アカウントエントリ
-
CP定義 → CP定義
-
ゴミ箱エントリ → ゴミ箱エントリ
MySQL でテーブルの名前を変更するには、 RENAME TABLE コマンドを使用できます。
PostgreSQL データベースダンプの作成と圧縮
PostgreSQL のデータベース ダンプを作成および圧縮するためのコマンドは、オペレーティング システムによって異なります。 ここで示すコマンドは、データベース ダンプを database.gz ファイルに圧縮します。これは、Liferay PaaS へのデータベースのアップロードに必要な形式です。
Windows (OS) を使用している場合は、圧縮ファイルを圧縮/解凍するコマンドを実行するために、ファイル圧縮ソフトウェアをインストールする必要があります。 これを行うには、 7-zip または同様のファイル圧縮ソフトウェアをインストールします。
Linux/MacOSの場合:
ダンプを実行して圧縮するには、次のコマンドを実行します (変数値を自分のユーザー名、ホスト、データベース名に置き換えます)。
USERNAME=dxpcloud
HOST=localhost
DATABASE=lportal
pg_dump -U ${USERNAME} --format=plain --no-owner --no-acl -h ${HOST} -d ${DATABASE} | gzip > database.gz
Windowsの場合:
ダンプを実行して圧縮するには、次のコマンドを実行します (変数値を自分のユーザー名、ホスト、データベース名に置き換えます)。
SET USERNAME=dxpcloud
SET HOST=localhost
SET DATABASE=lportal
pg_dump -U %USERNAME% --format=plain --no-owner --no-acl -h %HOST% -d %DATABASE% -f database.sql
7za a -tgzip database.gz database.sql
バックアップ サービスからデータベース ダンプをダウンロードして、バックアップ サービスが PostgreSQL ダンプ ファイルを作成する方法を確認することもできます。
結果のダンプ ファイルには、データベースを削除または作成するステートメントが含まれていてはなりません。 次に例を示します。
--
-- PostgreSQL database dump
--
-- Dumped from database version 15.5
-- Dumped by pg_dump version 15.5
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: accountentry; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.accountentry (
MySQL データベースダンプの作成と圧縮
ここで示す手順では、MySQL データベースのダンプを database.gz ファイルに圧縮します。これは、Liferay PaaS へのデータベースのアップロードに必要な形式です。
Windows を使用している場合、これらの手順では、データベース ダンプを圧縮するために 7-Zip がインストールされていることを前提としています。 MySQL データベースに直接アクセスできる必要があります。
-
データベースのダンプを実行し、それを
.gzアーカイブに圧縮します。LinuxおよびMacOSの場合:
mysqldump -uroot -ppassword --databases --add-drop-database lportal | gzip -c | cat > database.gzWindowsの場合:
mysqldump -u##### -p##### --databases --add-drop-database lportal > database.sql7za a -tgzip database.gz database.sqlバックアップの復元を正しく行うには、
--databasesフラグと--add-drop-databaseフラグが必要です。 また、/backup/downloadAPIを使用して、バックアップサービスがどのようにMySQLのダンプファイルを作成するかを確認することができます。
結果のデータベース ダンプには、 create table ステートメントの前に次のコードが含まれます。
--
-- Current Database: `lportal`
--
/*!40000 DROP DATABASE IF EXISTS `lportal`*/;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `lportal` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `lportal`;