時系列データベース - TDengine Taos(タオス)の使い方と落とし穴

時系列データベース

時系列データベース( Time Series DatabaseTSDB ) は、時系列データベースと呼ばれます時系列データベースとは、主に時間タグが付いたデータを処理(時間の順序で変化する、つまり時系列化)するために使用されるデータのことを指し、時間タグ付きデータは時系列データとも呼ばれます。

DB-Engines Webサイトのランキングを通じて 、多くの時系列データベースを見ることができます

1. 時系列データの主なデータ属性

(1) 各データ ポイントには、インデックス付け、集計、およびサンプリングのためのタイムスタンプが含まれています。このデータは多次元であり、相関している場合もあります。

(2) 書き込み量を増やし、読み取り量を減らす。第 2 レベル、ミリ秒レベル、さらにはナノ秒レベルでの高頻度書き込みをサポートする必要がある。クエリは通常、多次元の集計クエリであり、クエリのレイテンシ要件は比較的高い

(3) データの集約ビュー (ダウンサンプリングまたは集約されたビュー、傾向線など) は、個々のデータ ポイントよりも多くの洞察を提供する可能性があります。たとえば、ネットワークの信頼性の低下やセンサーの読み取り値の異常を考慮して、特定の期間にわたる特定の平均がしきい値を超えたときに、個々のデータ ポイントに対してアラートを設定するのではなく、アラートを設定する場合があります。

(4) データを分析するには、通常、一定期間にわたってデータにアクセスする必要があります (例: 過去 1 週間のクリック率データを教えてください)

2. 時系列データベースの適用シナリオ

時系列データベースのアプリケーション シナリオは、モノのインターネットやインターネット APM などのシナリオで広く使用されています。

(1)公安: インターネット記録、通話記録、個人追跡、インターバルスクリーニング。

(2)電力業界:スマートメーター、送電網、発電設備の集中監視。

(3)インターネット: サーバー/アプリケーションの監視、ユーザーのアクセスログ、広告のクリックログ。

(4)モノのインターネット: エレベーター、ボイラー、機械、水道メーター、その他のネットワーク機器。

(5) 運輸業: リアルタイムの道路状況、交差点の流れの監視、検問所データ

(6) 金融業界:取引記録、アクセス記録、ATM、POS機の監視

TDエンジン

実際のところ、私が TDengine Taosi 時系列データベースを直接使用した理由はわかりません。社内の何人かの同僚が以前にそれを使用したことがあったとしか言えません。時系列データベースの勉強を始めたばかりだと思っていました。問題があれば誰かが一緒に話し合ってくれるだろうということで、TDengine を選びました。TDengine のパフォーマンスに関して、ブロガーはインターネット上に研究資料が非常に少ないことに気づき、多くのネチズンがそれについて不満を言いましたが、ブロガーはここでコメントしたり意見を表明したりすることはできません。結局のところ、それは無料です(ただし、ダウンロードは必要です)サーバーとクライアント) パッケージをインストールするとき、ダウンロードするには電子メール アドレスを入力する必要があります。これ、えー、えー、えー...)

TDengine Taosi 公式 Web サイト:  TDengine | SQL をサポートするオープンソースの高性能分散時系列データベース | Taosi Data

TDengine Taosi は、SQL をサポートするオープンソースの高性能分散時系列データベースです。

公式 Web サイトのドキュメント:製品紹介 | TDengine ドキュメント

もちろん、現在の更新は本当に早くて、4月中旬のブロガーのドキュメントインターフェースと、メーデー以降の公式サイトのドキュメントインターフェースは異なります(半月ごとに更新されているそうです)

1. インストール

1.Dockerのインストール

ドキュメント: はじめに | TDengine ドキュメント

Dockerがインストールされていることを確認してください

次のコマンドを実行します

docker run -d -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp tdengine/tdengine

TDengine タイミング ライブラリを使用してサービスを Linux システムに公開し、taos ドライバーをマッピングし、ホスト名をマッピングする場合、ブロガーはここで最初に宣言します。遭遇するバグについては以下で詳しく説明します。

-v /usr/local/taos/driver/libtaos.so.2.1.1.0:/usr/lib/libtaos.so

次のように完了します

docker run -d \
    --name application-name \
    --hostname docker-hostname \
    -v /usr/local/taos/driver/libtaos.so.2.4.0.5:/usr/lib/libtaos.so \
    -v /usr/share/zoneinfo:/usr/share/zoneinfo \
    -e TZ=Asia/Shanghai \
    -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp \
    docker-image-name

コンテナが稼働していることを確認してください

docker ps

コンテナに入ってbashを実行する

docker exec -it <containrid> bash

タオスを開始する

インストール後、 systemctl コマンドを使用して TDengine のサービスプロセスを開始してください。

systemctl start taosd

サービスが適切に動作しているかどうかを確認します。

systemctl status taosd

2. インストールパッケージ

ドキュメント: はじめに | TDengine ドキュメント

公式 Web サイトから tar.gz インストール パッケージをダウンロードします( TDengine-server-2.4.0.5-Linux-x64.tar などの Linux をインストールします)。

tar xvzf TDengine-enterprise-server-2.4.0.5-Linux-x64.tar.gz -C 安装目录

( 1 )インストール

cd opt/taos/TDengine-server-2.4.0.5
sudo ./install.sh

( 2 )走る

systemctl start taosd

systemctl status taosd  查看运行状态

3. アップグレード

よくある質問とフィードバック | TDengine ドキュメント | Taosi データ

バージョン 3.0 は以前のバージョンに基づいて完全にリファクタリングされており、設定ファイルとデータ ファイルには互換性がありません。アップグレードする前に必ず次のことを行ってください。

  1. 設定ファイルを削除するには、次のコマンドを実行します。 sudo rm -rf /etc/taos/taos.cfg
  2. ログファイルを削除するには、次のコマンドを実行します。 sudo rm -rf /var/log/taos/
  3. データが不要になったことを確認するには、データ ファイルを削除して実行します。 sudo rm -rf /var/lib/taos/

ノート:

事前にデータのエクスポートとバックアップをしっかり行ってください。! 

4. インストールディレクトリの説明

TDengine データベースが正常にインストールされると、メインのインストール ディレクトリは /usr/local/taos となり、ディレクトリの内容は次のようになります。

[root@xx TDengine-server-3.0.1.1]# cd /usr/local/taos
[root@xx taos]# ll
total 0
drwxr-xr-x.  2 root root 269 Sep 21 12:15 bin
drwxr-xr-x.  2 root root  46 Sep 21 12:15 cfg
lrwxrwxrwx.  1 root root  13 Sep 21 12:15 data -> /var/lib/taos
drwxr-xr-x.  2 root root  51 Sep 21 12:15 driver
drwxr-xr-x. 11 root root 124 Sep 21 12:15 examples
drwxr-xr-x.  2 root root  73 Sep 21 12:15 include
lrwxrwxrwx.  1 root root  13 Sep 21 12:15 log -> /var/log/taos

構成ファイル ディレクトリ、データベース ディレクトリ、ログ ディレクトリを自動的に生成します。
設定ファイルのデフォルト ディレクトリ: /etc/taos/taos.cfg、/usr/local/taos/cfg/taos.cfg へのソフト リンク、
データベースのデフォルト ディレクトリ: /var/lib/taos、/usr/local へのソフト リンク/taos/data;
デフォルトのログ ディレクトリ: /var/log/taos、/usr/local/taos/log へのソフト リンク;
/usr/local/taos/bin ディレクトリ内の実行可能ファイル、/usr へのソフト リンク / bin ディレクトリ;
/usr/local/taos/driver ディレクトリの下のダイナミック ライブラリ ファイルは /usr/lib ディレクトリにソフト リンクされます;
/usr/local/taos/include ディレクトリの下のヘッダ ファイルは以下にソフト リンクされます/usr/include ディレクトリ。

5. ファイルのアンインストールとアップデートの手順

インストール パッケージをアンインストールする場合、設定ファイル、データベース ファイル、ログ ファイル、つまり /etc/taos/taos.cfg 、 /var/lib/taos 、 /var/log/taos は保持されます。ユーザーが確認後に保持する必要がない場合は、手動で削除できますが、削除後はデータが完全に失われ、復元できなくなるので注意してください。

更新インストールの場合、デフォルトの設定ファイル ( /etc/taos/taos.cfg ) が存在する場合は、既存の設定ファイルが引き続き使用され、インストール パッケージに含まれる設定ファイルは taos.cfg.org に変更され、 /usr/ に保存されています local/taos/cfg/ ディレクトリは、構成パラメータを設定するための参考例として使用できます。構成ファイルがない場合は、インストール パッケージに付属の構成ファイルを使用します

6. アンインストール

TDengine の各種インストール パッケージのインストールとアンインストール - TDengine | Taosi Data

[root@ss TDengine-server-2.4.0.5]# rmtaos
TDengine is removed successfully!

2. クライアント

インストール パッケージをダウンロードします:すべてのダウンロード リンク - TDengine | Taosi Data

ブロガーによってダウンロードされたバージョン 2.4.0.5

ノート: 

クライアントとサーバーのバージョン番号は正確に同じである必要があります。そうでない場合、クライアントの接続時に「接続を確立できません」というエラーが表示されます。

下記参照

ドキュメント - Taosi データ | TDengine

よくある質問とフィードバック | TDengine ドキュメント | Taosi データ

4.「接続を確立できません」というエラーが発生した場合はどうすればよいですか?

クライアントで接続エラーが発生しました。以下の手順に従って確認してください。

  1. ネットワーク環境を確認してください
  • クラウド サーバー: クラウド サーバーのセキュリティ グループが TCP/UDP ポート 6030/6041 にアクセスできるかどうかを確認します。
  • ローカル仮想マシン: ネットワークに ping できるかどうかを確認し、localhost ホスト名として使用しないようにしてください。
  • 自社サーバー:NATネットワーク環境の場合、サーバーがクライアントにメッセージを返せるか必ずご確認ください。
  1. クライアントとサーバーのバージョン番号が正確に同じであること、およびオープンソースのコミュニティ エディションとエンタープライズ エディションを混合できないことを確認してください。

  2. サーバー上で を実行して、  taosd のsystemctl status taosd実行ステータス を確認します実行されていない場合は、taosdを起動します

  3. クライアントが正しいサーバー FQDN (完全修飾ドメイン名 - サーバー上で Linux コマンド hostname -f を実行することで取得できます) を指定していることを確認します。FQDN 構成リファレンス: TDengine のFQDN について明確に説明している記事があります

  4. サーバーの FQDN に ping を実行します。応答がない場合は、ネットワーク、DNS 設定、またはクライアントが配置されているコンピューターのシステム ホスト ファイルを確認してください。TDengine クラスターがデプロイされている場合、クライアントはすべてのクラスター ノードの FQDN に ping できる必要があります。

  5. ファイアウォール設定を確認し (Ubuntu の場合は ufw status が使用され、CentOS の場合は firewall-cmd --list-port が使用されます)、クラスター内のすべてのホストのポート 6030/6041 上の TCP/UDP プロトコルが相互に通信できることを確認します。 。

  6. Linux での JDBC (ODBC、Python、Go、およびその他の同様のインターフェイス) 接続の場合は、 libtaos.soがディレクトリ/usr/local/taos/driverにあり、/usr/local/taos/driver がシステム ライブラリにあることを確認してください。関数検索パスLD_LIBRARY_PATH

  7. Windows 上の JDBC、ODBC、Python、Go、およびその他の接続の場合は、 C:\TDengine\driver\taos.dllがシステム ライブラリ関数の検索ディレクトリにあることを確認してください( taos.dllをディレクトリC:に配置すること をお勧めします)。 \Windows\システム32 )

  8. それでも接続のトラブルシューティングができない場合

  • Linux システムの場合は、コマンド ライン ツール nc を使用して、指定したポートの TCP および UDP 接続がスムーズであるかどうかを判断してください。 UDP ポート接続が機能しているかどうかを確認します。 サーバー側の TCP ポート接続が機能しているかどうかを確認しnc -vuz {hostIP} {port} ますnc -l {port} 。クライアント側の TCP ポート接続は機能しています。nc {hostIP} {port}

  • Windows システムの場合は、PowerShell コマンド Test-NetConnection -ComputerName {fqdn} -Port {port} を使用して、サービス セグメント ポートがアクセスされているかどうかを確認してください。

  1. taos プログラムの組み込みネットワーク接続検出機能を使用して、サーバーとクライアント間の指定されたポート接続がスムーズであるかどうかを検証することもできます (診断など)

1. Windows は taos クライアントを使用します 

cmd.exe で、C:\TDengine ディレクトリに切り替え、taos.exe を実行してデータベースに接続します。

他のホストのクライアントを通じて TDengine にアクセスするには、ホスト名を指定する必要があります: taos -h ip/hostname

次のように:

taos -h 192.168.22.16

或者

// myhostname 指Linux系统上的主机名
taos -h myhostname

taos 経由で接続する場合、ユーザー名とパスワードは指定されません。ユーザーが認証情報を指定しない場合、 TDengine はデフォルトで root になり、taosdata になります。

接続に成功しました

 

2.FQDNの設定

FQDN (完全修飾ドメイン名、完全修飾ドメイン名) は、インターネット上の特定のコンピューターまたはホストの完全なドメイン名です。FQDN は、ホスト名とドメイン名の 2 つの部分で構成されます。たとえば、メール サーバーの FQDN が mail.taosdata.com であるとします。ホスト名は mail で、ホストはドメイン名 taosdata.com 内にあります。

FQDN を IP に変換する役割を担うDNS (ドメイン ネーム システム) は、ほとんどのインターネット アプリケーションのアドレス指定方法です。

ドキュメント: TDengine の FQDN を明確にする記事 - TDengine | Taosi Data

Windowsシステム

Windows は当面クライアントの展開のみをサポートしているため、FQDN の解決を構成するだけで済みます。

C:\Windows\System32\drivers\etc Win10 を例に挙げると、 hosts文件

10.211.55.14 node1
10.211.55.15 node2
10.211.55.16 node3

Linuxシステム 

node1 ノードを例に挙げると、次の/etc/hostnameように変更する必要があります。/etc/hosts

/etc/hostname変更が完了したら、有効にするために再起動が必要です

改訂/etc/hosts

vi /etc/hostname
//将文件内容修改为node1
vi /etc/hosts
//添加一下三行
10.211.55.14 node1
10.211.55.15 node2
10.211.55.16 node3

成功のプロンプトは Windows 上の通常の pingy と同じですが、失敗のプロンプトは次のようになります。

//windows下
C:\Users\pc-01>ping node1
Ping 请求找不到主机 node1。请检查该名称,然后重试。
//Linux下
root@node2:~# ping node1
ping: unknown host node1

3. ポートを開く 

TCP/UDP ポート 6030 ~ 6042 へのオープン アクセス

参照: Linux-CentOS オープンポート外部ネットワークアクセス許可

4. クライアントとサーバー間の時刻の不一致により、クライアントとサーバー間の接続ができないという問題もあります 

タイムゾーン構成ファイルを変更する

#删除当前默认时区的配置文件,不建议直接删除(出于操作安全考虑),最好是使用mv命令重命名
rm -rf /etc/localtime 

#建立软连接文件到配置文件区,替换掉之前删掉或备份的/etc/localtime 文件
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

timedatectl #查看当前时区

#设置当前时区为上海常用:Asia/Hong_Kong
timedatectl set-timezone Asia/Shanghai 

同期時間

#安装时间同步应用
yum install -y ntp 

#同步上海授时中心时间
ntpdate ntp.api.bz 

3、SQL文

ドキュメント: TAOS SQL | TDengine ドキュメント

1. データベース、スーパーテーブル、テーブル

2.テーブル名の正当性

ドキュメント - Taosi データ | TDengine

TDengine のテーブル (列) の命名規則は次のとおりです: 文字、数字、アンダースコアのみで構成でき、最初に数字を使用することはできません、長さは 192 バイトを超えることはできません、大文字と小文字は区別されません。このテーブル名には、データベース名の接頭辞と区切り文字は含まれません。

3.テーブル管理

ドキュメント - Taosi データ | TDengine

テーブルの最初のフィールドは TIMESTAMP である必要があり、システムはそれを主キーとして自動的に設定します。

4. Taos シェルのバイナリおよび nchar フィールドの最大表示幅

ドキュメント - Taosi データ | TDengine

シェルでコマンド set max_binary_display_width nn を使用して、このオプションを動的に変更します。

set max_binary_display_width 50;

4 番目に、Java に接続します

ドキュメント: TDengine Java コネクタ | TDengine ドキュメント

taos-jdbcdriver これは TDengine の公式 Java 言語コネクタであり、Java 開発者はこれを介して TDengine データベースにアクセスするためのアプリケーション ソフトウェアを開発できます。taos-jdbcdriver JDBC ドライバーの標準インターフェイスを実装し、2 種類のコネクタを提供します。1 つは、TDengine クライアント ドライバー (taosc) を通じて TDengine インスタンスにネイティブに接続することです。

taos-jdbcdriverの jar パッケージ Maven ウェアハウス アドレス

https://mvnrepository.com/artifact/com.taosdata.jdbc/taos-jdbcdriver

Maven プロジェクトで、次の依存関係を pom.xml に追加します。

<dependency>
 <groupId>com.taosdata.jdbc</groupId>
 <artifactId>taos-jdbcdriver</artifactId>
 <version>2.0.**</version>
</dependency>
public Connection getConn() throws Exception{
  Class.forName("com.taosdata.jdbc.TSDBDriver");
  String jdbcUrl = "jdbc:TAOS://taosdemo.com:6030/test?user=root&password=taosdata";
  Properties connProps = new Properties();
  connProps.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
  connProps.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
  connProps.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
  connProps.setProperty("debugFlag", "135");
  connProps.setProperty("maxSQLLength", "1048576");
  Connection conn = DriverManager.getConnection(jdbcUrl, connProps);
  return conn;
}

public Connection getRestConn() throws Exception{
  Class.forName("com.taosdata.jdbc.rs.RestfulDriver");
  String jdbcUrl = "jdbc:TAOS-RS://taosdemo.com:6041/test?user=root&password=taosdata";
  Properties connProps = new Properties();
  connProps.setProperty(TSDBDriver.PROPERTY_KEY_BATCH_LOAD, "true");
  Connection conn = DriverManager.getConnection(jdbcUrl, connProps);
  return conn;
}

接続プールと併用する

ヒカリCP

使用例は次のとおりです。

 public static void main(String[] args) throws SQLException {
    HikariConfig config = new HikariConfig();
    // jdbc properties
    config.setJdbcUrl("jdbc:TAOS://127.0.0.1:6030/log");
    config.setUsername("root");
    config.setPassword("taosdata");
    // connection pool configurations
    config.setMinimumIdle(10);           //minimum number of idle connection
    config.setMaximumPoolSize(10);      //maximum number of connection in the pool
    config.setConnectionTimeout(30000); //maximum wait milliseconds for get connection from pool
    config.setMaxLifetime(0);       // maximum life time for each connection
    config.setIdleTimeout(0);       // max idle time for recycle idle connection
    config.setConnectionTestQuery("select server_status()"); //validation query

    HikariDataSource ds = new HikariDataSource(config); //create datasource

    Connection  connection = ds.getConnection(); // get connection
    Statement statement = connection.createStatement(); // get statement

    //query or insert
    // ...

    connection.close(); // put back to conneciton pool
}

ドルイド

使用例は次のとおりです。

public static void main(String[] args) throws Exception {

    DruidDataSource dataSource = new DruidDataSource();
    // jdbc properties
    dataSource.setDriverClassName("com.taosdata.jdbc.TSDBDriver");
    dataSource.setUrl(url);
    dataSource.setUsername("root");
    dataSource.setPassword("taosdata");
    // pool configurations
    dataSource.setInitialSize(10);
    dataSource.setMinIdle(10);
    dataSource.setMaxActive(10);
    dataSource.setMaxWait(30000);
    dataSource.setValidationQuery("select server_status()");

    Connection  connection = dataSource.getConnection(); // get connection
    Statement statement = connection.createStatement(); // get statement
    //query or insert
    // ...

    connection.close(); // put back to conneciton pool
}

5.データのインポートとエクスポート

1. エクスポート

データ エクスポート | TDengine ドキュメント | Taosi データ

select  * from  <tb_name> >>データ.csv;

インストールパスに保存します

select * エネルギー_ab.レポート_五分_レポート_レコード >> データ_ab.csv から;

2.インポート

データのインポート | TDengine ドキュメント | Taosi データ

taos> insert into d1001 file '~/data.csv';
Query OK, 9 row(s) affected (0.004763s)

6、容量、バックアップ

1. 容量

キャパシティ プランニング | TDengine ドキュメント | Taosi データ

各データベースは、デフォルトで CPU コアの数と同じ固定数の vgroup を作成でき、maxVgroupsPerDb を通じて構成できます。vgroup 内の各コピーは vnode になり、各 vnode は固定サイズのメモリを占有します (サイズはキャッシュに関連するデータベース構成パラメータのブロックと同じです)、各テーブルはタグの全長に関連するメモリを占有します、さらに、システムには一定の固定メモリ オーバーヘッドがあります。したがって、各 DB に必要なシステム メモリは次の式で計算できます。

データベース メモリ サイズ = maxVgroupsPerDb * レプリカ * (ブロック * キャッシュ + 10MB) + numOfTables * (tagSizePerTable + 0.5KB)

例: maxVgroupPerDB がデフォルト値 64、キャッシュのデフォルト サイズ 16M、ブロックのデフォルト値 6、DB 内に 100,000 のテーブル、単一コピー、タグの合計長が 256 バイトであると仮定します。合計メモリ要件は、64 * 1 * (16 * 6 + 10) + 100000 * (0.25 + 0.5) / 1000 = 6792M となります。

taosd メモリの合計 = vnode メモリ + mnode メモリ + クエリ メモリ

( 1 ) 「vnode メモリ」とは、現在の taosd ノードに割り当てられたクラスタ内のすべてのデータベース ストレージによって占有されるメモリ リソースを指します。上記の「データベースのメモリサイズ」の計算式に従って各 DB のメモリ使用量を推定し、それらを合計し、クラスタ内の TDengine ノードの総数に応じて平均することができます (複数のコピーを設定する場合は、対応するコピー倍数を乗算します)。

( 2 ) 「mnode メモリ」とは、クラスター内の管理ノードによって占有されるリソースを指します。taosd ノード上に mnode 管理ノードが分散されている場合、メモリ消費量は「0.2KB * クラスター内のデータ テーブルの総数」だけ増やす必要があります。

( 3 ) 「クエリ メモリ」とは、クエリ リクエストを処理するときにサーバーが占有する必要があるメモリを指します。1 つのクエリ ステートメントは、少なくとも「0.2KB * クエリに含まれるデータ テーブルの総数」のメモリを占有します。

2. バックアップ

taosdump は、実行中の TDengine クラスターからのデータのバックアップと、バックアップされたデータの同じまたは別の実行中の TDengine クラスターへの復元をサポートするユーティリティ アプリケーションです。

taosdump は、バックアップする論理データ単位としてデータベース、スーパー テーブル、または通常のテーブルを使用でき、指定された期間内のデータベース、スーパー テーブル、および通常のテーブルのデータ レコードをバックアップすることもできます。使用時にデータをバックアップするディレクトリ パスを指定できますが、場所を指定しない場合、taosdump はデフォルトで現在のディレクトリにデータをバックアップします。

TDengine のバックアップとリカバリ_DBA Dadong のブログ-CSDN ブログ

taosdump | TDengine ドキュメント | Taos データ

すべてのデータベースをバックアップします:  -A または --all-databases パラメータを指定します

指定した複数のデータベースをバックアップします。 -D db1,db2,... パラメータを使用します。

指定されたデータベース内のいくつかのスーパー テーブルまたは通常のテーブルをバックアップします。 dbname stbname1 stbname2 tbname1 tbname2 ... パラメータを使用します。この入力シーケンスの最初のパラメータはデータベース名であり、サポートされるデータベースは 1 つだけであり、2 番目以降のパラメータであることに注意してください。スペースで区切られた、データベース内のスーパー テーブルまたは通常のテーブルの名前です。

使用法: taosdump [OPTION...] dbname [tbname ...]
または: taosdump [OPTION...] --databases db1,db2,...
または: taosdump [OPTION...] --all-databases
または: taosdump [OPTION...] -i inpath
または: taosdump [OPTION...] -o outpath

-h, --host=HOST データのダンプ元のサーバー ホスト。デフォルトはローカルホストです

-p、--password サーバーに接続するためのユーザーのパスワード。デフォルトはタオスデータです

-P, --port=PORT 接続するポート
-u, --user=USER サーバーへの接続に使用するユーザー名。デフォルトは
rootです。
-c, --config-dir=CONFIG_DIR ディレクトリを構成します。デフォルトは /etc/taos
-i, --inpath=INPATH 入力ファイルのパスです。
-o, --outpath=OUTPATH 出力ファイルのパス。
-r, --resultFile=RESULTFILE DumpOut/In 結果ファイルのパスと名前。
-a, --allow-sys システム データベースのダンプを許可します。
-A, --all-databases すべてのデータベースをダンプします。
-D, --databases=DATABASES 入力されたデータベースをダンプします。
データベース名を区切るにはカンマを使用します。
-N, --without-property プロパティを指定せずにデータベースをダンプします。
-s、--schemaonly テーブルのスキーマのみをダンプします。
-y、--answer-yes プロンプトに対して「yes」と入力します。データファイルのチェックはスキップされます
-d, --avro-codec=snappy null、deflate、snappy、 lzma
の中から avro コーデックを選択します。-S, --start-time=START_TIME ダンプの開始時刻。エポック形式またはISO8601/RFC3339 形式のいずれかを使用できます。ISO8601形式の例: 2017-10-01T00:00:00.000+0800 または2017-10-0100:00:00:000+0800 または '2017-10-01 00:00:00.000+0800'






-E, --end-time=END_TIME ダンプの終了時刻。エポック形式または ISO8601/RFC3339
形式のいずれかを使用できます。ISO8601 形式の例:
2017-10-01T00:00:00.000+0800 または
2017-10-0100:00:00.000+0800 または '2017-10-01
00:00:00.000+0800'
-B, --data-batch =DATA_BATCH バックアップ
/リストア時のクエリ/挿入ステートメントごとのデータ数。デフォルト値は 16384 です。バックアップ時に「実際のダンプ .. バッチ .. エラー」が表示される場合
、またはリストア
時に「WAL サイズが制限を超えています」エラーが表示される場合は
、値をより小さい値に調整して
試してください。有効な値は、
行の長さとテーブル スキーマのタイプに関連します。
-I、--inspect avro ファイルの内容を検査し、画面に印刷します。
-L, --loose-mode テーブル名と列名に
文字と数字のみを使用する場合は、loose モードを使用します。デフォルトは「いいえ」です。
-n、--no-escape エスケープ文字「`」はありません。デフォルトではそれを使用します。
-T, --thread-num=THREAD_NUM ファイル内のダンプのスレッドの数。デフォルトは
5です
。 -g, --debug デバッグ情報を出力します。
-?, --help このヘルプ リストを表示します
--usage 短い使用法メッセージを表示します
-V, --version プログラムのバージョンを表示します

長いオプションに対する必須またはオプションの引数は、対応する短いオプションでも必須またはオプションです


バグを <[email protected]> に報告してください。

taosTools インストール パスの下に dumpdata フォルダーを作成します。

バックアップ、コマンドの実行

/usr/localhost/taos/taosTools-1.4.3/bin/./taosdump -A

以下のファイルを参照してください

バックアップを復元

 /usr/localhost/taos/taosTools-1.4.3/bin/./taosdump -i /usr/localhost/taos/taosTools-1.4.3/dumpdata/

セブン、ピットを踏む

よくある質問とフィードバック

ドキュメント - Taosi データ | TDengine

taos データベースの一般的な問題の概要が github にあります

https://github.com/taosdata/tdengine/issues?q=

マスターの TDengine/src/connector/jdbc · taosdata/TDengine · GitHub

JDBC コネクタによって報告される可能性のあるエラー コードには、JDBC ドライバー自体によって報告されるエラー (エラー コードは 0x2301 ~ 0x2350 の間)、JNI メソッドによって報告されるエラー (エラー コードは 0x2351 ~ 0x2400 の間)、およびエラーの 3 種類があります。 TDengine の他の機能モジュールによって報告されます。特定のエラー コードについては、以下を参照してください。

https://github.com/taosdata/TDengine/blob/develop/src/inc/taoserror.h

1.systemctl の taosd の起動に失敗しました

Taosi 2.4.X を 3.0.X にアップグレードし、Taosi サービスを開始してエラーを報告します

[root@XX TDengine-server-3.0.1.1]# systemctl status taosd
● taosd.service - TDengine server service
   Loaded: loaded (/etc/systemd/system/taosd.service; enabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Wed 2022-09-21 12:16:31 CST; 45min ago
  Process: 105841 ExecStart=/usr/bin/taosd (code=exited, status=255)
  Process: 105834 ExecStartPre=/usr/local/taos/bin/startPre.sh (code=exited, status=0/SUCCESS)
 Main PID: 105841 (code=exited, status=255)

Sep 21 12:16:30 ht-energy systemd[1]: Unit taosd.service entered failed state.
Sep 21 12:16:30 ht-energy systemd[1]: taosd.service failed.
Sep 21 12:16:31 ht-energy systemd[1]: taosd.service holdoff time over, scheduling restart.
Sep 21 12:16:31 ht-energy systemd[1]: Stopped TDengine server service.
Sep 21 12:16:31 ht-energy systemd[1]: start request repeated too quickly for taosd.service
Sep 21 12:16:31 ht-energy systemd[1]: Failed to start TDengine server service.
Sep 21 12:16:31 ht-energy systemd[1]: Unit taosd.service entered failed state.
Sep 21 12:16:31 ht-energy systemd[1]: taosd.service failed.

/usr/bin/taosd を実行すると、次のような特定のエラーが直接発​​生します。

[root@ht-energy TDengine-server-3.0.1.1]# /usr/bin/taosd
read /etc/localtime error, reason:Invalid argumentThere is not /etc/timezone.
09/21 13:02:28.688021 00108335 UTL fail to load apoll url
09/21 13:02:28.688104 00108335 UTL load from cfg file /etc/taos/taos.cfg success
09/21 13:02:28.688112 00108335 UTL failed to load env file: .env
09/21 13:02:28.688123 00108335 UTL load from env variables cfg success
09/21 13:02:28.688620 00108335 UTL fail to load apoll url
09/21 13:02:28.688685 00108335 UTL load from cfg file /etc/taos/taos.cfg success
09/21 13:02:28.688696 00108335 UTL failed to load env file: .env
09/21 13:02:28.688703 00108335 UTL load from env variables cfg success
09/21 13:02:28.688789 00108335 UTL                      global config
09/21 13:02:28.688794 00108335 UTL =================================================================
09/21 13:02:28.688797 00108335 UTL cfg_file     firstEp                  ht-energy:6030
09/21 13:02:28.688802 00108335 UTL default      secondEp                 ht-energy:6030
09/21 13:02:28.688805 00108335 UTL default      fqdn                     ht-energy
09/21 13:02:28.688809 00108335 UTL default      serverPort               6030
09/21 13:02:28.688812 00108335 UTL default      tempDir                  /tmp
09/21 13:02:28.688816 00108335 UTL default      minimalTmpDirGB          1.00
09/21 13:02:28.688831 00108335 UTL default      shellActivityTimer       3
09/21 13:02:28.688834 00108335 UTL default      compressMsgSize          -1
09/21 13:02:28.688837 00108335 UTL default      compressColData          -1
09/21 13:02:28.688840 00108335 UTL default      queryPolicy              1
09/21 13:02:28.688844 00108335 UTL default      querySmaOptimize         0
09/21 13:02:28.688847 00108335 UTL default      queryPlannerTrace        0
09/21 13:02:28.688850 00108335 UTL default      smlChildTableName
09/21 13:02:28.688854 00108335 UTL default      smlTagName               _tag_null
09/21 13:02:28.688857 00108335 UTL default      smlDataFormat            1
09/21 13:02:28.688861 00108335 UTL default      numOfTaskQueueThreads    4
09/21 13:02:28.688864 00108335 UTL default      dataDir                  /var/lib/taos
09/21 13:02:28.688867 00108335 UTL default      minimalDataDirGB         2.00
09/21 13:02:28.688871 00108335 UTL default      supportVnodes            16
09/21 13:02:28.688874 00108335 UTL default      maxShellConns            50000
09/21 13:02:28.688892 00108335 UTL default      statusInterval           1
09/21 13:02:28.688897 00108335 UTL default      minSlidingTime           10
09/21 13:02:28.688901 00108335 UTL default      minIntervalTime          1
09/21 13:02:28.688904 00108335 UTL default      maxNumOfDistinctRes      10000000
09/21 13:02:28.688908 00108335 UTL default      countAlwaysReturnValue   1
09/21 13:02:28.688911 00108335 UTL default      queryBufferSize          -1
09/21 13:02:28.688914 00108335 UTL default      printAuth                0
09/21 13:02:28.688918 00108335 UTL default      multiProcess             0
09/21 13:02:28.688921 00108335 UTL default      mnodeShmSize             20972544
09/21 13:02:28.688924 00108335 UTL default      vnodeShmSize             104858624
09/21 13:02:28.688928 00108335 UTL default      qnodeShmSize             41944064
09/21 13:02:28.688931 00108335 UTL default      snodeShmSize             41944064
09/21 13:02:28.688934 00108335 UTL default      bnodeShmSize             41944064
09/21 13:02:28.688937 00108335 UTL default      numOfShmThreads          1
09/21 13:02:28.688941 00108335 UTL default      numOfRpcThreads          4
09/21 13:02:28.688944 00108335 UTL default      numOfCommitThreads       4
09/21 13:02:28.688947 00108335 UTL default      numOfMnodeReadThreads    1
09/21 13:02:28.688950 00108335 UTL default      numOfVnodeQueryThreads   16
09/21 13:02:28.688954 00108335 UTL default      numOfVnodeStreamThreads  4
09/21 13:02:28.688957 00108335 UTL default      numOfVnodeFetchThreads   4
09/21 13:02:28.688960 00108335 UTL default      numOfVnodeWriteThreads   8
09/21 13:02:28.688964 00108335 UTL default      numOfVnodeSyncThreads    16
09/21 13:02:28.688967 00108335 UTL default      numOfVnodeRsmaThreads    8
09/21 13:02:28.688970 00108335 UTL default      numOfQnodeQueryThreads   16
09/21 13:02:28.688973 00108335 UTL default      numOfSnodeSharedThreads  2
09/21 13:02:28.688976 00108335 UTL default      numOfSnodeUniqueThreads  2
09/21 13:02:28.688980 00108335 UTL default      rpcQueueMemoryAllowed    3353018777
09/21 13:02:28.688985 00108335 UTL default      monitor                  1
09/21 13:02:28.688988 00108335 UTL default      monitorInterval          30
09/21 13:02:28.688992 00108335 UTL default      monitorFqdn
09/21 13:02:28.688995 00108335 UTL default      monitorPort              6043
09/21 13:02:28.688998 00108335 UTL default      monitorMaxLogs           100
09/21 13:02:28.689001 00108335 UTL default      monitorComp              0
09/21 13:02:28.689005 00108335 UTL default      telemetryReporting       1
09/21 13:02:28.689008 00108335 UTL default      telemetryInterval        43200
09/21 13:02:28.689011 00108335 UTL default      telemetryServer          telemetry.taosdata.com
09/21 13:02:28.689015 00108335 UTL default      telemetryPort            80
09/21 13:02:28.689018 00108335 UTL default      transPullupInterval      2
09/21 13:02:28.689021 00108335 UTL default      mqRebalanceInterval      2
09/21 13:02:28.689025 00108335 UTL default      ttlUnit                  86400
09/21 13:02:28.689028 00108335 UTL default      ttlPushInterval          86400
09/21 13:02:28.689031 00108335 UTL default      uptimeInterval           300
09/21 13:02:28.689034 00108335 UTL default      udf                      1
09/21 13:02:28.689038 00108335 UTL default      configDir                /etc/taos
09/21 13:02:28.689041 00108335 UTL default      scriptDir                /etc/taos
09/21 13:02:28.689044 00108335 UTL default      logDir                   /var/log/taos
09/21 13:02:28.689048 00108335 UTL default      minimalLogDirGB          1.00
09/21 13:02:28.689051 00108335 UTL default      numOfLogLines            10000000
09/21 13:02:28.689055 00108335 UTL default      asyncLog                 1
09/21 13:02:28.689058 00108335 UTL default      logKeepDays              0
09/21 13:02:28.689061 00108335 UTL default      debugFlag                0
09/21 13:02:28.689065 00108335 UTL default      simDebugFlag             143
09/21 13:02:28.689068 00108335 UTL default      tmrDebugFlag             131
09/21 13:02:28.689071 00108335 UTL default      uDebugFlag               131
09/21 13:02:28.689075 00108335 UTL default      rpcDebugFlag             131
09/21 13:02:28.689078 00108335 UTL default      jniDebugFlag             131
09/21 13:02:28.689081 00108335 UTL default      qDebugFlag               131
09/21 13:02:28.689084 00108335 UTL default      cDebugFlag               131
09/21 13:02:28.689087 00108335 UTL default      dDebugFlag               135
09/21 13:02:28.689090 00108335 UTL default      vDebugFlag               135
09/21 13:02:28.689113 00108335 UTL default      mDebugFlag               135
09/21 13:02:28.689117 00108335 UTL default      wDebugFlag               135
09/21 13:02:28.689120 00108335 UTL default      sDebugFlag               135
09/21 13:02:28.689123 00108335 UTL default      tsdbDebugFlag            131
09/21 13:02:28.689126 00108335 UTL default      tqDebugFlag              135
09/21 13:02:28.689129 00108335 UTL default      fsDebugFlag              135
09/21 13:02:28.689132 00108335 UTL default      udfDebugFlag             135
09/21 13:02:28.689135 00108335 UTL default      smaDebugFlag             131
09/21 13:02:28.689138 00108335 UTL default      idxDebugFlag             135
09/21 13:02:28.689141 00108335 UTL default      tdbDebugFlag             131
09/21 13:02:28.689144 00108335 UTL default      metaDebugFlag            135
09/21 13:02:28.689147 00108335 UTL default      timezone
09/21 13:02:28.689150 00108335 UTL default      locale                   en_US.UTF-8
09/21 13:02:28.689154 00108335 UTL default      charset                  UTF-8
09/21 13:02:28.689157 00108335 UTL default      enableCoreFile           1
09/21 13:02:28.689160 00108335 UTL default      numOfCores               8.00
09/21 13:02:28.689164 00108335 UTL default      openMax                  1024
09/21 13:02:28.689167 00108335 UTL default      streamMax                16
09/21 13:02:28.689170 00108335 UTL default      pageSizeKB               4
09/21 13:02:28.689173 00108335 UTL default      totalMemoryKB            32744324
09/21 13:02:28.689179 00108335 UTL default      os sysname               Linux
09/21 13:02:28.689183 00108335 UTL default      os nodename              hostname
09/21 13:02:28.689186 00108335 UTL default      os release               3.10.0-1160.el7.x86_64
09/21 13:02:28.689189 00108335 UTL default      os version               #1 SMP Mon Oct 19 16:18:59 UTC 2020
09/21 13:02:28.689192 00108335 UTL default      os machine               x86_64
09/21 13:02:28.689196 00108335 UTL default      version                  3.0.1.1
09/21 13:02:28.689199 00108335 UTL default      compatible_version       3.0.0.0
09/21 13:02:28.689202 00108335 UTL default      gitinfo                  e6bb4c1aead0e3f156b13d4536fd9966373c194b
09/21 13:02:28.689205 00108335 UTL default      buildinfo                Built at 2022-09-15 21:48
09/21 13:02:28.689208 00108335 UTL =================================================================
09/21 13:02:28.691051 00108335 DND start to init dnode env
09/21 13:02:28.691073 00108335 DND ERROR The default data directory /var/lib/taos contains old data of tdengine 2.x, please clear it before running!
09/21 13:02:28.691251 00108335 DND ERROR failed to init dnode since Config not found

データが不要になったこと(またはエクスポートされてバックアップされたこと)を確認します。

データファイルを削除するには、次のコマンドを実行します。 sudo rm -rf /var/lib/taos/

ノート:

事前にデータのエクスポートとバックアップをしっかり行ってください。! 

2.タオスドライバー

java.lang.NoClassDefFoundError: Could not initialize class com.taosdata.jdbc.TSDBJNIConnector

3、java.lang.UnsatisfiedLinkError: java.library.path に taos がありません

java.lang.UnsatisfiedLinkError: no taos in java.library.path

java.lang.NoClassDefFoundError: クラス com.taosdata.jdbc.TSDBJNIConnector を初期化できませんでした · 問題 #4238 · taosdata/TDengine · GitHub

https://github.com/taosdata/TDengine/issues/8235

4、java.sql.SQLException: JNI エラー(2354): Ref がありません

本質は、  JNI接続がNULLであることです

public static final int ERROR_JNI_CONNECTION_NULL = 0x2354;  // JNI connection is NULL


12:47:02.779 [threadPoolTaskExecutor-11] INFO  c.e.c.taos.TaosUtils - [instance,89] - 驱动 = com.taosdata.jdbc.TSDBDriver url = jdbc:TAOS://zm-dev:6030/tent_test_1?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8
Taos get connection starting...
java.sql.SQLException: JNI ERROR (2354): Ref is not there
        at com.taosdata.jdbc.TSDBError.createSQLException(TSDBError.java:75)
        at com.taosdata.jdbc.TSDBJNIConnector.connect(TSDBJNIConnector.java:80)
        at com.taosdata.jdbc.TSDBConnection.connect(TSDBConnection.java:35)
        at com.taosdata.jdbc.TSDBConnection.<init>(TSDBConnection.java:21)
        at com.taosdata.jdbc.TSDBDriver.connect(TSDBDriver.java:133)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:208)
        at com.energy.common.taos.TaosUtils.instance(TaosUtils.java:99)
        at com.energy.common.taos.TaosUtils.insertIntoBatchResult(TaosUtils.java:186)
        at com.energy.jobTask.fiveMinutesTask.FiveMinutesTask.job(FiveMinutesTask.java:211)
        at com.energy.startUp.InvokeJobTaskMethodsByPojo.doTask(InvokeJobTaskMethodsByPojo.java:82)
        at com.energy.startUp.EnergyTaskStartUp$1$1.run(EnergyTaskStartUp.java:75)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
java.lang.NullPointerException
        at com.energy.common.taos.TaosUtils.insertIntoBatchResult(TaosUtils.java:189)
        at com.energy.jobTask.fiveMinutesTask.FiveMinutesTask.job(FiveMinutesTask.java:211)
        at com.energy.startUp.InvokeJobTaskMethodsByPojo.doTask(InvokeJobTaskMethodsByPojo.java:82)
        at com.energy.startUp.EnergyTaskStartUp$1$1.run(EnergyTaskStartUp.java:75)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

実際、ブロガーの問題も同じです。つまり、libtaos.so が見つからないということです。

Linux では、次のソフト リンク ln -s /usr/local/taos/driver/libtaos.so.xxxx /usr/lib/libtaos.so を作成する必要があります。

cd /usr/lib

ln -s libtaos.so .1  libtaos.so.3.0.1.1

1.ブロガーは、バージョン 2.4.0.14 の taos インストール ディレクトリ /xx/taos/TDengine-server-2.4.0.14/driver/ にある libtaos.so.2.4.0.14 の名前を libtaos.so に変更し、サービス jar にコピーしました。次のように、 パッケージと同じディレクトリ

2. 次のように Dockerfile をビルドします。

/usr/lib が Java PATH にありません。テストのために libtaos.so を /usr/bin ディレクトリに置きます

メインコード:  libtaos.so /usr/lib を追加します。

FROM java:8
MAINTAINER zm
EXPOSE 8104

ADD energy-task.jar energy-task.jar
ADD libtaos.so /usr/lib

# Dockerfile
RUN echo 'Asia/Shanghai' >/etc/timezone

ENTRYPOINT ["java","-jar","energy-task.jar"]

3. ブロガーがプロジェクト jar パッケージを実行するときは、ホスト名をマップする必要があります

-v /etc/hosts:/etc/hosts -v /etc/hostname:/etc/hostname

次のように完了します。 

#!/bin/sh

cd /data1/docker/server/energy/energy-task

docker rm -f energy-task
docker rmi energy-task:latest
# 根据Dockerfile文件 构建镜像;"."代表当前目录,-t参数设置标签;使用当前目录的Dockerfile文件创建镜像并设置标签
docker build -t energy-task .
docker run -d -p 8104:8081 -e "SPRING_PROFILES_ACTIVE=test" 
        -v /etc/localtime:/etc/localtime -v /data1/logs/energy-task:/logs 
        -v /data1/files/energy-task:/files 
        -v /etc/hosts:/etc/hosts -v /etc/hostname:/etc/hostname 
--restart=always --privileged=true --name         energy-task energy-task:latest

おすすめ

転載: blog.csdn.net/MinggeQingchun/article/details/124553960