時系列エンジンの切り替え¶
概要¶
この記事では、Guanceの時系列エンジンの切り替えについて説明します。この操作は、InfluxDB から GuanceDB への切り替えに適用されます。
前提条件¶
- GuanceDB for Metrics がすでにデプロイされていること。未デプロイの場合は、GuanceDB インストール を参照してください。
デプロイ情報¶
| 名称 | 内容 |
|---|---|
| guance-insert デフォルトアドレス | guancedb-cluster-guance-select.middleware |
| guance-insert デフォルトポート | 8480 |
| guance-select デフォルトアドレス | guancedb-cluster-guance-select.middleware |
| guance-select デフォルトポート | 8481 |
切り替え手順¶
テーブルのバックアップ¶
CREATE TABLE `main_workspace_bak` LIKE `main_workspace`;
INSERT INTO `main_workspace_bak` SELECT * FROM `main_workspace`;
CREATE TABLE `main_influx_db_bak` LIKE `main_influx_db`;
INSERT INTO `main_influx_db_bak` SELECT * FROM `main_influx_db`;
GuanceDB 情報の挿入¶
- Guance df_core データベースにログインし、以下のステートメントを実行します。
INSERT INTO `main_influx_instance` (`uuid`, `host`, `authorization`, `configJSON`,`dbcount`, `user`, `pwd`, `dbType`, `priority`, `status`, `creator`, `updator`, `createAt`, `deleteAt`, `updateAt`)
VALUES
('276f8404252347d18e469f65f5a1abdd', 'http://0.0.0.0', '{\"admin\": {\"password\": \"*\", \"username\": \"*\"}}','{"read": {"host": "http://guancedb-cluster-guance-select.middleware:8481"}, "write": {"host": "http://guancedb-cluster-guance-insert.middleware:8480"}}', 0, '', '', 'guancedb', 50, 0, '', '', UNIX_TIMESTAMP(), -1, UNIX_TIMESTAMP());
確認:
select count(1) from main_influx_instance where uuid='276f8404252347d18e469f65f5a1abdd';
+----------+
| count(1) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
クエリ結果が1以上の場合、実行成功です。
GuanceDB による InfluxDB 情報の置き換え¶
- InfluxDB のステータスを変更します。
確認:
select count(1) from main_influx_instance where status=3 and dbType='influxdb';
+----------+
| count(1) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
クエリ結果が1以上の場合、実行成功です。
- すべてのワークスペースに対応する時系列データベース情報を一括更新します。
update main_influx_db set influxInstanceUUID=(select uuid from main_influx_instance where status=0 and dbType='guancedb' order by priority desc limit 1) , dbType='guancedb' where status=0;
確認:
SELECT count(1)
FROM main_influx_db AS db
JOIN main_influx_instance AS instance ON db.influxInstanceUUID = instance.uuid
WHERE db.status = 0
AND db.dbType = 'guancedb';
+----------+
| count(1) |
+----------+
| 26 |
+----------+
1 row in set (0.01 sec)
クエリ結果が1以上の場合、実行成功です。
main_workspaceテーブルのdatastore内のmetric値を一括更新します。
update main_workspace set datastore=JSON_SET(datastore, "$.metric", "guancedb") where status=0 and datastore ->> "$.metric" = "influxdb";
確認:
SELECT count(1)
FROM main_workspace
WHERE status = 0
AND datastore ->> "$.metric" = "guancedb";
+----------+
| count(1) |
+----------+
| 26 |
+----------+
1 row in set (0.00 sec)
クエリ結果が1以上の場合、実行成功です。
- DB ID を変更します。
UPDATE df_core.main_influx_db
SET df_core.main_influx_db.db =(
SELECT df_core.main_workspace.id
FROM df_core.main_workspace
WHERE df_core.main_workspace.dbUUID = df_core.main_influx_db.UUID
);
確認:
SELECT count(1)
FROM df_core.main_influx_db AS db
JOIN df_core.main_workspace AS ws ON ws.dbUUID = db.UUID;
+----------+
| count(1) |
+----------+
| 26 |
+----------+
1 row in set (0.00 sec)
クエリ結果が1以上の場合、実行成功です。
Kodo の全サービスの再起動¶
Redis のキャッシュクリア¶
以下の2つの方法のいずれかを選択してください。
- Redis の再起動
- キャッシュクリアコマンドの実行
# すべての "dbinfo:*" キャッシュレコードを削除します。以下の一括削除コマンドを実行します。
redis-cli -h <host> -p <ポート> -n 0 -a <パスワード> keys dbinfo:* | xargs -r -t -n1 redis-cli -h <host> -p <ポート> -n 0 -a <パスワード> del
# すべての "wkspInfo:*" キャッシュレコードを削除します。以下の一括削除コマンドを実行します。
redis-cli -h <host> -p <ポート> -n 0 -a <パスワード> keys wkspInfo:* | xargs -r -t -n1 redis-cli -h <host> -p <ポート> -n 0 -a <パスワード> del
# すべての "tkn_info:*" キャッシュレコードを削除します。以下の一括コマンドを実行します。
redis-cli -h <host> -p <ポート> -n 0 -a <パスワード> keys tkn_info:* | xargs -r -t -n1 redis-cli -h <host> -p <ポート> -n 0 -a <パスワード> del