實踐教程之如何使用 PolarDB-X 進行數據導入導出

PolarDB-X 爲了方便用戶體驗,提供了免費的實驗環境,您可以在實驗環境裏體驗 PolarDB-X 的安裝部署和各種內核特性。除了免費的實驗,PolarDB-X 也提供免費的視頻課程,手把手教你玩轉 PolarDB-X 分佈式數據庫。

本期實驗將指導您如何使用PolarDB-X進行數據導入導出

本期免費實驗地址

本期教學視頻地址

前置準備

假設已經根據前一講內容完成了PolarDB-X的搭建部署,使用PolarDB-X Operator安裝PolarDB-X,並且可以成功鏈接上PolarDB-X數據庫。

PolarDB-X導入導出方式彙總

PolarDB-X常見的數據導出方法有:

  • mysql -e命令行導出數據
  • mysqldump工具導出數據
  • select into outfile語句導出數據(默認關閉)
  • Batch Tool工具導出數據(PolarDB-X配套的導入導出工具)

PolarDB-X常見的數據導入方法有:

  • source語句導入數據
  • MySQL命令導入數據
  • 程序導入數據
  • load data語句導入數據
  • Batch Tool工具導入數據(PolarDB-X配套的導入導出工具)

初始數據準備

1.建議分屏,兩個終端操作。

單擊右上角的分屏圖標,創建兩個終端,方便分別進行登錄數據庫和執行命令操作。

說明:

a. k8s的操作即kubectl命令都需要在galaxykube用戶下才可進行;

b. 登錄數據庫和其它執行命令可在root或galaxykube用戶下進行操作,注意文件路徑就行。

2.執行如下命令,安裝sysbench。

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo yum -y install sysbench

說明:可通過sysbench --help查看是否安裝成功。

3.執行如下命令,登陸數據庫。

使用連接mysql -hip -Pport -uuser -ppassword -Ac登錄PolarDB-X。

mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 -Ac

4.執行如下命令,創建數據庫。

create database sysbench_int;

5.通過sysbench導入初始數據。

5.1 首先執行exit登出數據庫。

5.2 執行如下命令,通過sysbench導入初始數據。

sysbench oltp_insert --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=polardbx_root --mysql-password=123456 --mysql-db=sysbench_int --db-driver=mysql --tables=1 --table-size=100000 --report-interval=1 prepare

6.將sysbench默認建出的單庫單表改爲分庫分表模式。

6.1 執行如下命令,使用連接mysql -hip -Pport -uuser -ppassword -Ac登錄PolarDB-X。

mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 -Ac

6.2 執行如下命令,先將原表改名。

use sysbench_int;
ALTER TABLE sbtest1 RENAME TO sbtest1_single;

6.3 執行如下命令,手動創建分庫分表。

CREATE TABLE `sbtest1` (
  `id` int(11) NOT NULL AUTO_INCREMENT BY GROUP,
  `k` int(11) NOT NULL DEFAULT '0',
  `c` char(120) NOT NULL DEFAULT '',
  `pad` char(60) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 2;

6.4 執行如下命令,通過insert select執行到新的表中.

INSERT INTO sbtest1 SELECT * FROM  sbtest1_single;

6.5 執行如下命令,可查看初始數據信息。

show create table sbtest1;
select min(id),max(id),count(id) from sbtest1;
select * from sbtest1 limit 10;

純數據格式進行導入導出

1.先執行exit登出數據庫。

2.通過mysql -e命令導出數據。

2.1 執行如下命令,通過mysql -e命令從PolarDB-X導出數據。

time mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 sysbench_int -N -e "SELECT id,k,c,pad FROM sbtest1;" > data_10w.txt
time mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 sysbench_int -N -e "SELECT id,k,c,pad FROM sbtest1;" | sed 's/\t/,/g' >data_10w.csv

2.2 執行如下命令,查看文件大小。

ll -h wc -l data_10w.txt

2.3 執行如下命令,查看數據格式。

head -10 data_10w.txt

3.通過LoadData語句導入數據

3.1 執行如下命令,登錄PolarDB-X。

說明:需加-local-infile 參數,才能執行LoadData語句。

mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 -Ac --local-infile

3.2 執行如下命令,創建目標數據庫表。

create database test_one;
use test_one;
create table test1 like sysbench_int.sbtest1;
show create table test1;

3.3 執行如下命令,導入數據到目標庫表中。

-- 文件路徑需要對齊 
LOAD DATA LOCAL INFILE 'data_10w.txt' INTO TABLE test1;

3.4 執行如下命令,查看導入的數據。

select min(id),max(id),count(id) from test1;
select * from test1 limit 10;

SQL語句格式進行導入導出

1.先執行exit登出數據庫。

2.通過mysqldump進行導出數據。

2.1 執行如下命令,通過mysqldump進行導出數據。

time mysqldump -h127.0.0.1 -P3306 -upolardbx_root -p123456 --default-character-set=utf8mb4 --net_buffer_length=10240 --no-tablespaces --no-create-db --no-create-info --skip-add-locks --skip-lock-tables --skip-tz-utc --set-charset --hex-blob sysbench_int sbtest1 > dump_10w.sqlv

2.2 執行如下命令,查看sql語句格式的數據。

head -30 dump_10w.sql

3.通過source語句進行導入。

3.1 執行如下命令,登錄PolarDB-X。

mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 -Ac --local-infile

3.2 執行如下命令,創建目標數據庫表.

create database test_two; use test_two; create table sbtest1 like sysbench_int.sbtest1;

3.3 執行如下命令,導入數據到目標表。

-- 注意文件路徑 
source /root/dump_10w.sql;

3.4 執行如下命令,檢查表數據。

-- 可檢查表數據 
select min(id),max(id),count(id) from sbtest1;

4.通過mysql命令導入

4.1 執行如下命令,登錄PolarDB-X。

mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 --local-infile

4.2 執行如下命令,清空表數據。

truncate table test_two.sbtest1;

4.3 執行exit退出數據庫,然後執行如下導入命令。

mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 --default-character-set=utf8mb4 test_two < dump_10w.sql

4.4 執行如下命令,再次登錄數據庫檢查表數據情況。

mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 --local-infile use test_two; select min(id),max(id),count(id) from sbtest1;

Batch-Tool工具進行導入導出

1.安裝batch-tool工具(開源工具介紹:https://github.com/ApsaraDB/galaxysql-tools/tree/main/batch-tool

執行如下命令,下載batch-tool。

## github下載, 國內使用github下載不穩定時,請您使用下面的oss下載
wget https://github.com/ApsaraDB/galaxysql-tools/releases/download/batch-tool-v1.2.0/batch-tool.jar
## oss下載
wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/PolarDB-X/batch-tool.jar

2.執行如下命令,安裝java環境。

yum install -y java-1.8.0-openjdk.x86_64

3.通過batch-tool工具導出。

3.1 執行如下命令,通過batch-tool工具導出。

java -jar batch-tool.jar -h127.0.0.1 -P3306 -upolardbx_root -p123456 -D sysbench_int -o export -t sbtest1 -s , -F 1

3.2 執行如下命令,查看文件情況。

head -30 sbtest1_0

4.通過batch-tool工具導入。

4.1 執行如下命令,登錄PolarDB-X。

mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 -Ac --local-infile

4.2 執行如下命令,清空表 test_one.test1 的數據

truncate table test_one.test1;

4.3 執行exit登出數據庫。

4.4 執行如下命令,導入數據。

java -jar batch-tool.jar -h127.0.0.1 -P3306 -upolardbx_root -p123456 -D test_one -o import -t test1 -s , -f "sbtest1_0" -maxConn 8 -minConn 4

4.5 執行如下命令,再次登錄PolarDB-X查看錶的插入情況。

mysql -h127.0.0.1 -P3306 -upolardbx_root -p123456 -Ac --local-infile
use test_one;
-- 檢查表數據
select min(id),max(id),count(id) from test1;
點擊立即免費試用雲產品 開啓雲上實踐之旅!

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章