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;
本文来源:PolarDB-X 知乎号,关注阅读更多精彩好文