データの初期化
データベースとミドルウェアのデプロイの続きです。対象は 初回デプロイ用の新規業務データベースです。実行前に MySQL、Redis、Neo4j が起動し、接続確認を完了している必要があります。
1. 初期化前の確認
バックエンド JAR、フロントエンドと同一リリースの qOntology ソースまたはデプロイパッケージを用意します。以下の 2 ファイルを使用します。ファイル名の show は、業務テーブル全体を省略できるという意味ではありません。
docker/qOntology/mysql/init/
├── init-system.sql # システム管理、権限、関連する基本テーブル
└── init-show.sql # オントロジー、アプリケーション、モデルの業務テーブルと初期データ確認したバージョンでは、両スクリプトが qontology データベースを作成・使用し、それぞれ 32 テーブルを含み、名前の重複はありません。後続バージョンは対応するパッケージを基準とし、64 テーブルを全バージョン共通の要件としないでください。
既存の業務データベースでは再実行しない
両 SQL には DROP TABLE IF EXISTS が含まれます。再インポートすると対象テーブルが削除・再作成されるため、一般的な起動エラーの修復やバージョン更新には使用できません。データベースが存在する場合は、今回のデプロイ用に準備された空のデータベースか確認します。業務データがある場合は初回初期化を中止してください。
サーバー上のソースルートで実行します。ファイルの存在だけを確認し、リリースやリセットのスクリプトは実行しません。
# 同一リリースのソースディレクトリに移動し、両方の初期化スクリプトを確認
cd /path/to/qOntology
test -f docker/qOntology/mysql/init/init-system.sql
test -f docker/qOntology/mysql/init/init-show.sql
# MySQL にログインし、対象業務データベースが空か確認
/opt/mysql57/bin/mysql --defaults-file=/etc/mysql57.cnf -uroot -pMySQL 内で確認します。
SHOW DATABASES LIKE 'qontology';
SELECT COUNT(*) AS existing_tables
FROM information_schema.tables
WHERE table_schema = 'qontology';
EXIT;新規環境には業務テーブルがまだ存在しないはずです。テーブルがある場合は、以下のインポートを続行しないでください。
2. MySQL 業務データベースの初期化
2.1. 順番にインポート
ソースルートで続けて実行し、各コマンドの要求に従って MySQL 管理者パスワードを入力します。1 つ目が成功してから 2 つ目を実行してください。エラーを無視する --force は追加しません。
# 初回デプロイの空データベース専用:先にシステムテーブルと基本データをインポート
/opt/mysql57/bin/mysql --defaults-file=/etc/mysql57.cnf -uroot -p \
< docker/qOntology/mysql/init/init-system.sql# システムスクリプトの成功を確認してから、業務テーブルと初期データをインポート
/opt/mysql57/bin/mysql --defaults-file=/etc/mysql57.cnf -uroot -p \
< docker/qOntology/mysql/init/init-show.sqlスクリプト内に CREATE DATABASE と USE qontology があるため、事前に業務データベースを手動選択する必要はありません。latest初始化.sql、過去の初期化 SQL、アップグレードディレクトリ内の全ファイルを追加でインポートしないでください。
2.2. アプリケーション用アカウントの作成
業務用パスワードを Shell の引数に含めないよう、管理者の対話セッションを使用します。
# このセッションの MySQL コマンド履歴を保存せず、管理者でログイン
MYSQL_HISTFILE=/dev/null /opt/mysql57/bin/mysql --defaults-file=/etc/mysql57.cnf -uroot -pパスワードを置き換えて実行します。このアカウントはローカルから qontology にアクセスするためのもので、グローバル管理権限は付与しません。
CREATE USER 'qontology'@'127.0.0.1' IDENTIFIED BY '<MYSQL_APP_PASSWORD>';
GRANT ALL PRIVILEGES ON qontology.* TO 'qontology'@'127.0.0.1';
SHOW GRANTS FOR 'qontology'@'127.0.0.1';
EXIT;アカウントが既に存在する場合は作成元を確認し、手順を繰り返すために削除しないでください。後続の API 設定では 127.0.0.1:3306、データベース qontology、ユーザー qontology、ここで設定したパスワードを使用します。
2.3. テーブルとアカウントの検証
アプリケーション用アカウントで TCP 接続します。
/opt/mysql57/bin/mysql --protocol=TCP -h127.0.0.1 -P3306 -uqontology -p qontologySHOW TABLES;
SELECT COUNT(*) AS system_users FROM system_user;
SELECT COUNT(*) AS system_roles FROM system_role;
SELECT COUNT(*) AS ontology_tables
FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name LIKE 'om\_%';
EXIT;システム・業務テーブルが存在し、クエリで権限や文字コードのエラーが出ないことを確認します。アプリケーション管理者のログイン情報と初期パスワードは、同一リリースの説明または納品記録を確認してください。データベースのパスワードから推測することはできません。スクリプト内のモデル、接続、サンプルデータも実環境に照らして確認してから有効化します。
3. Neo4j の初期化と検証
3.1. 新規の空データベースを使用
前ページで Neo4j を初回起動すると、既定のデータベースが作成されます。ここでは未確認のグラフデータを追加インポートしません。前ページで設定した認証情報でログインします。
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 \
/opt/neo4j/bin/cypher-shell -a bolt://127.0.0.1:7687 -u neo4jRETURN 1 AS connection_ok;
SHOW DATABASES;
MATCH (n) RETURN count(n) AS node_count;既定の neo4j データベースが利用可能か確認します。新規の空データベースでは、通常ノード数は 0 です。:exit で終了します。関係データベースのデモレコードからグラフノードが自動生成されるわけではありません。空のグラフでは、デモグラフの表示を初期化成功の条件としないでください。
3.2. 任意のサンプルグラフデータ
ソースの sql/neo4j/data/ と docker/qOntology/neo4j-init/data/ はデータディレクトリであり、neo4j-admin load に直接渡せる .dump ファイルではありません。本シリーズでは新規データベースを上書きせず、これらに含まれる system データベースや認証ファイルも直接コピーしません。
デモグラフを復元する場合は、リリースに対応したサポート対象のエクスポートと復元手順を取得し、Neo4j のバージョン、データベース名、停止要件、対応する関係データを確認します。既存グラフをバックアップしてから、その形式の復元手順に従ってください。明確なエクスポートがない場合は空のデータベースを維持し、架空のインポート先を指定しないでください。
4. 結果確認とエラー対応
| 確認項目 | 完了基準 |
|---|---|
| システム・業務テーブル | 両 SQL が成功し、主要テーブルを検索できる |
| アプリケーション用アカウント | 127.0.0.1:3306 に接続し、qontology を検索できる |
| Neo4j | 既定データベースが利用でき、RETURN 1 が成功 |
| バージョン整合性 | SQL、設定、JAR、フロントエンドが同一リリース |
SQL エラーでは、パスワードや業務データ全体を含めずに、ファイル、行番号、エラーメッセージを記録します。MySQL のバージョン、ファイルの完全性、文字セット、権限を確認して対処してください。初期化スクリプト全体の再実行を汎用的な修復方法にしないでください。既存環境の更新には対応バージョンのアップグレードスクリプトを使い、実行順序を確認します。
次はアプリケーションのビルドです。同一バージョンの成果物がある場合は、qOntology サービスのデプロイへ直接進めます。
