溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

巨杉學習筆記 | SequoiaDB MySQL導入導出工具

發布時間:2020-03-05 03:30:47 來源:網絡 閱讀:579 作者:OliverFinn 欄目:數據庫

本文來自社區用戶投稿,感謝這位小伙伴的技術分享

巨杉數據庫架構簡介

巨杉數據庫作為分布式數據庫是計算和存儲分離架構,由數據庫實例層和存儲引擎層組成的。存儲引擎層負責數據庫核心功能比如數據讀寫存儲以及分布式事務管理。數據庫實例層也就是這里的的SQL層負責把應用SQL請求處理后發存儲引擎層處理,并且把存儲引擎層響應結果反饋給應用層。支持結構化實例比如MySQL實例/PG實例/spark實例,也支持非結構化實例比如 Json實例/S3對象存儲實例/PosixFs實例等等。這種架構支持的實例類型比較多,方便從傳統數據庫無縫遷移到巨杉數據庫,減小了開發學習成本,之前也跟數據庫圈同行交流,他們對架構也是十分認可。

巨杉學習筆記 | SequoiaDB MySQL導入導出工具
這里的SQL層采用的是MySQL實例,存儲引擎層是有三個數據節點和協調節點編目節點組成。其中數據節點就是用來存儲數據的,協調節點不存儲數據,是用來把MySQL的請求進行路由分發到數據庫節點。編目節點用來存儲集群的系統信息比如用戶信息/分區信息等等。這里用一個容器來模擬一個物理機或云虛擬機,這里設置的是MySQL實例在一個容器里,編目和節點和協調節點放在了一個容器,三個數據節點分別放在一個容器,三個數據節點構成了三個數據組,每個數據組三個副本。Web應用的海量數據是通過分片切分的方式分散給不同的數據節點,像這里的數據ABC通過分片打散到三臺機器。

巨杉學習筆記 | SequoiaDB MySQL導入導出工具

這里的數據分片是通過分布式Hash算法DHT機制實現,DHT是distribute Hashing table 縮寫。當寫入數據時,首先通過MySQL實例把記錄下發到協調節點,協調節點會通過分布式Hash算法根據每條記錄的分區鍵進行散列,散列完之后協調節點根據分區鍵判斷到底發送到哪一個分區,所以每個分區之間的數據是完全隔離互相獨立的。采用這種方法,我們就可以把一個很大的表拆散到下面不同的子分區里面小表,實現數據拆分。

mysqldump和 mydumper/myloader
導入導出工具實戰

SequoiaDB實現了對MySQL的完整兼容,那么有的用戶會問了:

“既然是完整兼容,MySQL相關的工具是否能使用?”

“數據從MySQL遷移到SequoiaDB如何操作?”

下面我們就介紹SequoiaDB如何使用 mysqldump和 mydumper/myloader 進行數據的導入導出。

  1. 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導入工具。

  1. 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方案的一種有力替換。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女