スギ学習ノート|SequoiaDB MySQLインポートエクスポートツール実戦使用
6396 ワード
この記事はコミュニティユーザーから投稿され、このパートナーの技術共有に感謝します.
スギデータベースアーキテクチャの概要
スギデータベースは分散型データベースとして計算とストレージ分離アーキテクチャであり、データベースインスタンス層とストレージエンジン層から構成されている.ストレージ・エンジン・レイヤは、データの読み書きストレージや分散トランザクション管理などのデータベース・コア機能を担当します.データベースインスタンス層、すなわちここの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)ストレージプロセスによるテストデータの製造
2)製造試験データ状況の表示
3)次のmysqldumpバックアップ命令を実行する
対応するファイルをnewsとして表示します.sql
データベースにログインして元のデータベースデータを削除します
4)sourceで新しいデータをインポート
mysqldumpからエクスポートされた完全なsql文を使用して、データベースに直接ログインしてインポートを実行します.
mysqldumpデータエクスポートツールとsourceインポートツールがサポートされていることがわかります. mydumperとmyloaderは を使用します.
この章では、mydumperツールとmyloaderツールの使用について説明します.
ある学生はmysqldumpとmydumperに対して少し混同しています:mysqldumpはMySQLの元工場が持っています.mydumper/myloaderはMySQL/facebookなどが開発・維持している論理バックアップ・リカバリ・ツールで、DBAが一般的に使用されており、単独でインストールする必要があり、具体的なインストール方法はネットワーク上で照会することができる.
SequoiaDBがmydumper/myloaderを使用する場合、
まずmydumperバージョン番号を見てみましょう
1)mydumperエクスポートデータ
元のデータベースを削除
2)myloaderデータのインポート
データが削除されmyloaderでデータがインポートされていることがわかります
データベースにログインして表示
mydumperおよびmyloaderインポートデータは問題ありません.スギデータベースSequoiadbはMySQLの互換ツールmydumperおよびmyloaderをサポートしているようです.
MySQLデータベースデータを移行するには、MySQLデータをmydumperでエクスポートした後、スギデータベースでmyloaderを利用してスギデータベースにインポートするだけです.
まとめ
スギデータベースは計算-記憶分離のアーキテクチャを採用し、MySQLの100%完全な互換性を実現した.この文書では、スギデータベースがすべての標準MySQLの周辺ツールをサポートし、分散型拡張性が既存のアプリケーションの拡張性と全体的なデータ管理能力を大幅に向上させることも明らかになりました.したがって,スギデータベース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を使用してデータのインポートとエクスポートを行う方法について説明します.
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ツールの使用について説明します.
ある学生は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スキームの有力な置き換えといえる.