データ移行は、MySQL から ClickHouse にインポートする必要があります。概要プランは以下のとおりで、ClickHouse 自体がサポートする 3 つの方法と 2 つのサードパーティ ツールが含まれます。 テーブルエンジンの作成 MySQL CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2], ... INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1, INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2 ) ENGINE = MySQL('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']); 公式ドキュメント: https://clickhouse.yandex/docs/en/operations/table_engines/mysql/ 実際のデータは、外部テーブルとして理解できるリモート MySQL データベースに保存されることに注意してください。 MySQL でデータを追加および削除することでこれを確認できます。 挿入 選択 -- 最初にテーブルを作成します CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ... ) ENGINE = エンジン -- データをインポート INSERT INTO [db.]table [(c1, c2, c3)] select column or * from mysql('host:port', 'db', 'table_name', 'user', 'password') 列の種類と列の数をカスタマイズし、クリックハウス関数を使用してデータを処理することができます。 mysql("host:port","db","table_name","user_name","password")からtoDate(xx)を選択します。 選択元としてテーブルを作成する テーブルを作成 [存在しない場合] [db.]テーブル名 エンジン = ログ として 選択* mysql から('host:port', 'db', 'article_clientuser_sum', 'user', 'password') ネットユーザーの記事: http://jackpgao.github.io/2018/02/04/ClickHouse-Use-MySQL-Data/ カスタム列はサポートされておらず、参考文献でブロガーが書いた これは Altinity 社は、MySQL から ClickHouse にデータを移行するための Python ツール (binlog の増分更新と完全インポートをサポート) をオープンソース化しましたが、公式の readme はコードと同期しておらず、クイック スタートに従って動作しません。 ## テーブル clickhouse-mysql を作成する \ --src-host=127.0.0.1 \ --src-user=リーダー \ --src-password=Qwerty1# \ --table-templates-with-create-database \ --src-table=airline.ontime > create_clickhouse_table_template.sql ## スクリプト vim create_clickhouse_table_template.sql を変更します ## インポートしてテーブルを作成する clickhouse-client -mn < create_clickhouse_table_template.sql ## clickhouse-mysqlにデータをインポートする\ --src-host=127.0.0.1 \ --src-user=リーダー \ --src-password=Qwerty1# \ --table-migrate \ --dst-host=127.0.0.1 \ --dst-table=ログ統合\ --csvプール 公式ドキュメント: https://github.com/Altinity/clickhouse-mysql-data-reader#mysql-migration-case-1—migrate-existing-data なお、上記 3 つの方法はすべて MySQL から ClickHouse にインポートされます。データ量が多いと、MySQL に大きな負担がかかります。以下は2つのオフライン方式です(ストリームセットはリアルタイムとオフラインの両方をサポートします) csv ## テーブルの作成を無視 clickhouse-client \ -h ホスト \ --query="[db].table に挿入 フォーマット CSV" < test.csv ただし、ソース データの品質が低い場合は、特殊文字 (区切り文字、エスケープ文字) や改行などの問題が発生することがよくあります。私はひどく騙されました。 カスタム区切り文字、--format_csv_delimiter="|" エラーが発生した場合、中止するのではなくスキップします。 --input_format_allow_errors_num=10 は最大 10 行のエラーを許可し、 --input_format_allow_errors_ratio=0.1 は 10% のエラーを許可します。 csv は null 値をスキップし、コード: 27 を報告します。 DB::Exception: 入力を解析できません: 期待される 、 before: xxxx: (at row 69) ERROR: garbage after Nullable(Date): "8,002<LINE FEED>0205" sed ' :a;s/,,/,\\N,/g;ta' |clickhouse-client -h host --query "INSERT INTO [db].table FORMAT CSV" ,, を ,\N, に置き換えます。 python clean_csv.py --src=src.csv --dest=dest.csv --chunksize=50000 --cols --encoding=utf-8 --delimiter=, clean_csv.py 他の記事032-csvファイルのフォールトトレランス処理を参照してください ストリームセット Streamsets は、MySQL からの完全なインポートや CSV の読み取りをサポートし、binlog をサブスクライブすることで増分挿入もサポートします。私の他の記事「025-Big Data ETL ツール StreamSets のインストールと MySQL Binlog へのサブスクリプション」を参照してください。 この記事では、MySQLからClickhouseをインポートする方法のみを示します。 この記事では、ストリームセットサービスがすでに設定されていることを前提としています。 サービスを有効にして再起動する jdbc jarとmysqlおよびclickhouseの依存パッケージをアップロードします。 便利な方法として、pom.xmlを作成し、Mavenを使用して均一にダウンロードします。 <プロジェクト xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <モデルバージョン>4.0.0</モデルバージョン> <groupId>com.anjia</groupId> <artifactId>デモ</artifactId> <packaging>jar</packaging> <バージョン>1.0-SNAPSHOT</バージョン> <name>デモ</name> <url>http://maven.apache.org</url> <依存関係> <依存関係> <groupId>ru.yandex.clickhouse</groupId> <artifactId>クリックハウス-jdbc</artifactId> <バージョン>0.1.54</バージョン> </依存関係> <依存関係> <グループID>mysql</グループID> <artifactId>mysql-コネクタ-java</artifactId> <バージョン>5.1.47</バージョン> </依存関係> </依存関係> </プロジェクト> Mavenがローカルにインストールされている場合は、次のコマンドを実行します。 mvn 依存関係:コピー依存関係 -D出力ディレクトリ=lib -Dインクルードスコープ=コンパイル 必要なすべての jar ファイルがダウンロードされ、lib ディレクトリにコピーされます。 次に、それを ストリームセットサービスを再起動します
要約する 以上が、編集者が紹介したMySQLからClickHouseへの移行方法5選です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: ElementUIはel-formフォームリセット機能ボタンを実装します
Mac OS 10.11 に MySQL をインストールして設定する方法を、主に写真を使って手順を簡...
デフォルトでは、コンテナ内のプロセスは root ユーザー権限で実行され、この root ユーザーは...
過去 N 秒間の QPS 値の統計 (1 秒あたりの選択、挿入などを含む) mysql> se...
目次1. 需要1. 需要2. SDKパラメータ設定1. ディレクトリ構造3. コードの実装1. バッ...
今日、PHP を学習する場合、当然ながら、まず実行環境をインストールする必要があります。Phpstu...
1. Dockerコンテナを起動する以下のコマンドを使用して新しい Docker コンテナを起動しま...
序文以前、defineProperty を紹介したとき、オブジェクトの変更のみを監視でき、配列の変更...
最近、MySQL に触れました。昨日、テーブル構造情報を格納するための新しいテーブルを作成しました。...
1. HBaseの概要1.1 HBaseとはHBase は、高い信頼性、高いパフォーマンス、列ストレ...
1. 新しいディスクを準備し、現在のルートパーティションと同じファイルシステムでフォーマットし、ディ...
ヒント: 以下の操作はすべて root 権限で実行されます。 # MySQL がインストールされてい...
この記事では、例を使用して、MySQL クエリ ステートメントの簡単な操作を説明します。ご参考までに...
レンダリング コード - 青と黄色のリングを例に挙げます <div class="コ...
遅いクエリをチェックすると、時間が正しくなく、システム時間とちょうど 8 時間異なっていることがわか...
Mysqlトランザクション操作の失敗を解決する方法トランザクションの原子性: トランザクションは、デ...