スギ学習ノート|SequoiaDB MySQLインポートエクスポートツール実戦使用


この記事はコミュニティユーザーから投稿され、このパートナーの技術共有に感謝します.
スギデータベースアーキテクチャの概要
スギデータベースは分散型データベースとして計算とストレージ分離アーキテクチャであり、データベースインスタンス層とストレージエンジン層から構成されている.ストレージ・エンジン・レイヤは、データの読み書きストレージや分散トランザクション管理などのデータベース・コア機能を担当します.データベースインスタンス層、すなわちここのSQL層は、アプリケーションSQL要求処理をストレージエンジン層に送信し、ストレージエンジン層応答結果をアプリケーション層にフィードバックする役割を果たす.MySQLインスタンス/PGインスタンス/sparkインスタンス、Jsonインスタンス/S 3オブジェクトストレージインスタンス/PosixFsインスタンスなどの非構造化インスタンスをサポートします.このアーキテクチャは、従来のデータベースからスギデータベースへのシームレスな移行を容易にし、開発学習コストを削減し、以前もデータベース圏の同業者と交流し、アーキテクチャを非常に認めていました.
ここでSQLレイヤはMySQLインスタンスを採用し、ストレージエンジンレイヤは3つのデータノードと協調ノードエントリノードから構成されています.ここで、データノードはデータを格納するためのものであり、協調ノードはデータを格納せず、MySQLの要求をデータベースノードにルーティングするためのものである.エントリノードは、ユーザ情報/パーティション情報などのクラスタのシステム情報を格納するために使用される.ここでは物理マシンまたはクラウド仮想マシンをシミュレートするコンテナを使用します.ここではMySQLインスタンスを1つのコンテナに設定し、目次とノードと調整ノードを1つのコンテナに配置し、3つのデータノードを1つのコンテナに配置し、3つのデータノードが3つのデータグループを構成し、各データグループの3つのコピーを構成します.Webアプリケーションの膨大なデータは,スライスによって異なるデータノードに分散され,ここでのデータABCはスライスによって3台の機器に分散される.
ここでのデータスライスは分布HashアルゴリズムDHT機構により実現され,DHTはdistribute Hashing tableの略である.データが書き込まれると、まずMySQLインスタンスを介して協調ノードにレコードが送信され、協調ノードは分散Hashアルゴリズムにより各レコードのパーティションキーに基づいてハッシュされ、ハッシュが完了すると協調ノードはパーティションキーに基づいてどのパーティションに送信されるかを判断するので、各パーティション間のデータは完全に独立している.この方法では,大きなテーブルを次の異なるサブパーティション内の小さなテーブルに分解し,データ分割を実現することができる.
mysqldumpとmydumper/myloaderインポートエクスポートツール実戦
SequoiaDBはMySQLの完全な互換性を実現しており、ユーザーによっては次のような質問があります.
「完全互換性である以上、MySQL関連のツールは使用できますか?」
「MySQLからSequoiaDBにデータを移行するにはどうすればいいですか?」
次に、mysqldumpとmydumper/myloaderを使用してデータのインポートとエクスポートを行う方法について説明します.
  • mysqldump

  • 1)ストレージプロセスによるテストデータの製造
    #mysql -h 127.0.0.1 -P 3306 -u root
    mysql>create database news;
    mysql>use news;
    mysql>create table user_info(id int(11),unickname varchar(100));
    
    delimiter //
    create procedure `news`.`user_info_PROC`()
    begin
    declare iloop smallint default 0;
    declare iNum mediumint default 0;
    declare uid int default 0;
    declare unickname varchar(100) default 'test';
    while iNum <=10 do
      start transaction;
    while iloop<=10 do
    set uid=uid+1;
    set unickname=CONCAT('test',uid);
            insert into `news`.`user_info`(id,unickname)
              values(uid,unickname);
    set iloop=iloop+1;
        end while;
    set iloop=0;
    set iNum=iNum+1;
        commit;
    end while;
    end//
    delimiter ;
    call news.user_info_PROC();
    
    

    2)製造試験データ状況の表示
    mysql> use news;
    Database changed
    mysql> show tables;
    +----------------+
    | Tables_in_news |
    +----------------+
    | user_info      |
    +----------------+
    1 row in set (0.00 sec)
    mysql> select count(*) from user_info;
    +----------+
    | count(*) |
    +----------+
    |      121 |
    +----------+
    1  row in set (0.01 sec)
    
    

    3)次のmysqldumpバックアップ命令を実行する
    #/opt/sequoiasql/mysql/bin/mysqldump -h 127.0.0.1 -P 3306 -u 
    root -B news > news.sql
    

    対応するファイルをnewsとして表示します.sql
    データベースにログインして元のデータベースデータを削除します
    mysql> drop database news;
    Query OK, 1 row affected (0.10 sec)
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4  rows in set (0.00 sec)
    
    

    4)sourceで新しいデータをインポート
    #/opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root
    

    mysqldumpからエクスポートされた完全なsql文を使用して、データベースに直接ログインしてインポートを実行します.
    #/opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root
    mysql>source news.sql
    mysql> use news;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with-A
    Database changed
    mysql> show tables;
    +----------------+
    | Tables_in_news |
    +----------------+
    | user_info      |
    +----------------+
    1 row in set (0.00 sec)
    

    mysqldumpデータエクスポートツールとsourceインポートツールがサポートされていることがわかります.
  • mydumperとmyloaderは
  • を使用します.
    この章では、mydumperツールとmyloaderツールの使用について説明します.
    ある学生はmysqldumpとmydumperに対して少し混同しています:mysqldumpはMySQLの元工場が持っています.mydumper/myloaderはMySQL/facebookなどが開発・維持している論理バックアップ・リカバリ・ツールで、DBAが一般的に使用されており、単独でインストールする必要があり、具体的なインストール方法はネットワーク上で照会することができる.
    SequoiaDBがmydumper/myloaderを使用する場合、
    まずmydumperバージョン番号を見てみましょう
    # mydumper --version
    mydumper 0.9.1, built against MySQL 5.7.17
    
    

    1)mydumperエクスポートデータ
    # mydumper -h 127.0.0.1 -P 3306 -u root -B news -o /home/sequoiadb
    

    元のデータベースを削除
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | news               |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec)
    mysql> drop database news;
    Query OK, 1 row affected (0.13 sec)
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec)
    
    

    2)myloaderデータのインポート
    データが削除されmyloaderでデータがインポートされていることがわかります
    #myloader -h 127.0.0.1 -P 3306 -u root -B news -d /home/sequoiadb
    

    データベースにログインして表示
    # /opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | news               |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec)
    mysql> use news;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    Database changed
    mysql> show tables;
    +----------------+
    | Tables_in_news |
    +----------------+
    | user_info      |
    +----------------+
    1 row in set (0.00 sec)
    mysql> select count(*) from user_info;
    +----------+
    | count(*) |
    +----------+
    |      121 |
    +----------+
    1 row in set (0.00 sec)
    

    mydumperおよびmyloaderインポートデータは問題ありません.スギデータベースSequoiadbはMySQLの互換ツールmydumperおよびmyloaderをサポートしているようです.
    MySQLデータベースデータを移行するには、MySQLデータをmydumperでエクスポートした後、スギデータベースでmyloaderを利用してスギデータベースにインポートするだけです.
    まとめ
    スギデータベースは計算-記憶分離のアーキテクチャを採用し、MySQLの100%完全な互換性を実現した.この文書では、スギデータベースがすべての標準MySQLの周辺ツールをサポートし、分散型拡張性が既存のアプリケーションの拡張性と全体的なデータ管理能力を大幅に向上させることも明らかになりました.したがって,スギデータベースSequoiaDBは従来の単点MySQLスキームの有力な置き換えといえる.