MySQL5.7数据导入/导出、TiDB数据回迁移

一、环境&安装包

  • CentOS Linux release 7.4.1708 (Core)
  • TDSQL(腾讯基于MySQL5.7.x自主研发的数据库)
  • Mysqldump(MySQL5.7.41备份客户端)
  • Dumpling(mydumper 的全新升级版)
  • Myloader(mydumper附带的导入命令,需要安装mydumper)
  • TiDB(分布式集群数据库)

二、数据导出/导入

所需要权限:

  • SELECT
  • RELOAD
  • LOCK TABLES
  • REPLICATION CLIENT
  • PROCESS

1.安装mysqldump

#检查之前是否安装了其他mysql
[root@node-11 user1]# rpm -qa | grep mysql
[root@node-11 user1]# rpm -qa | grep mariadb
 
#卸载之前安装的 mariadb (与mysql-client参数上存在不同,mariadb它没有--set-gtid-purged=off参数,备份时会报错)
[root@node-11 user1]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
[root@node-11 user1]# rpm -e --nodeps mariadb-5.5.68-1.el7.x86_64
 
#安装mysql-client(包含mysqldump)
[root@node-11 user1]# rpm -ivh mysql-community-common-5.7.41-1.el7.x86_64.rpm           //安装公共类库包
[root@node-11 user1]# rpm -ivh mysql-community-libs-5.7.41-1.el7.x86_64.rpm             //安装libs依赖包
[root@node-11 user1]# rpm -ivh mysql-community-client-5.7.41-1.el7.x86_64.rpm           //安装MySQL客户端包
[root@node-11 user1]# mysqldump -V                                                      //查看版本

2.数据导出

[root@hdzwvm000007172 bak]# time mysqldump -h172.16.8.99  -P15070 -uhdjsjb_intelliQT  --set-gtid-purged=off -p'xxxxxxxxxx' --databases hdjsjb_intelliqt    > /srv/bak/hdjsjb_intelliqt.sql
[root@hdzwvm000007172 bak]# du -h hdjsjb_intelliqt.sql      //计算sql文件大小

在这里插入图片描述
在这里插入图片描述

参数说明:

time:计算命令执行返回时间
-h:指定MySQL服务器的主机名或IP地址。
-P:指定MySQL服务器的端口号。
–u:指定连接MySQL服务器的用户名。
- -set-gtid-purged:指定是否在备份时清除GTID信息。GTID是MySQL 5.6及以上版本中用于复制的全局事务标识符。
-p:指定连接MySQL服务器的密码。注意密码需要用单引号括起来。
- -databases:指定要备份的数据库名称。
>:将备份数据输出到指定的文件中。

命令解析:
这条命令的作用是将名为hdjsjb_intelliqt的MySQL数据库备份到/srv/bak/hdjsjb_intelliqt.sql文件中,备份时不清除GTID信息。备份时需要连接到主机名或IP地址为172.16.8.99,端口号为15070的MySQL服务器,使用用户名hdjsjb_intelliQT和密码hdjsjb_intelliQT@123进行连接。

3.文件传输

#将文件传输至目标服务器
[root@hdzwvm000007172 bak]# time rsync -av -e "ssh -p4147" hdjsjb_intelliqt.sql  root@10.111.13.17:/srv/mysql_bak  

在这里插入图片描述

参数说明:

time:在执行 rsync 命令时显示详细的时间统计信息。
rsync:命令本身,用于同步文件。
-av:a 表示以归档模式同步文件,保留文件属性,递归同步子目录,保留符号链接等;v 表示以详细模式输出同步过程中的信息。
-e “ssh -p4147”:指定使用 ssh 协议进行同步,并指定 ssh 的端口号为 4147。
hdjsjb_intelliqt.sql:要同步的本地文件名。
root@10.111.13.17:/srv/mysql_bak:远程服务器的用户名和 IP 地址,以及同步到的目标路径。

命令解析:

这条命令是用于将本地文件 hdjsjb_intelliqt.sql 同步到远程服务器 10.111.13.17 的 /srv/mysql_bak 目录下。

4.数据导入

[root@node-11 mysql_bak]# time mysql -h10.111.13.32 -uhdjsjb_intelliQT -p'xxxxxxxx'  hdjsjb_intelliqt   < hdjsjb_intelliqt.sql

在这里插入图片描述

三、数据迁移(tidb–>tdsql[mysql])

1.安装dumpling导出数据

[root@bogon tidb]# tar -xvf dumpling-v6.0.0-linux-amd64.tar.gz
[root@bogon tidb]# ./dumpling -V
[root@bogon tidb]# date=$(date +%Y-%m-%d)                                                                                                   //赋值日期格式变量
[root@bogon tidb]# time ./dumpling -h 11.16.39.5 -P 14000 -u root -p xxxxx -c gzip -t 8 -F 256m -o /lightning-tidb/$date/                //全量导出数据(支持热导出)
[root@bogon tidb]# zcat bak_ebike-schema-create.sql.gz                                                                                      //查看压缩文件内容
[root@bogon tidb]# zcat bak_ebike.magic_api_file_202203301601-schema.sql.gz
[root@bogon tidb]# zcat bak_ebike.magic_api_file_202203301601.000000000.sql.gz |grep INSERT

在这里插入图片描述
在这里插入图片描述

参数说明:

参数说明:
time:这个命令会测量程序的运行时间。
./dumpling:这是要运行的程序的名称。
-h 11.16.39.5:这是要连接的主机的IP地址。
-P 14000:这是要连接的主机的端口号。
-u root:这是要使用的用户名。
-p :这是要使用的密码。
-c gzip:这是要使用的压缩算法。
-t 8:这是要使用的线程数。
-F 256m:这是要使用的文件大小。
-o /lightning-tidb/ d a t e / :这是要导出数据的目录路径,其中 date/:这是要导出数据的目录路径,其中 date/:这是要导出数据的目录路径,其中date将被替换为当前日期

备份文件:

metadata:此文件包含导出的起始时间,以及 master binary log 的位置。
{schema}-schema-create.sql:创建 数据库 的 SQL 文件。
{schema}.{table}-schema.sql:创建 table 的 SQL 文件。

2.安装mydumper、myloader导入MySQL

无需提前创建数据库、表结构

[root@bogon tidb-sql]# rpm -ivh mydumper-0.13.0-6.el7.x86_64.rpm
[root@bogon tidb-sql]# myloader -V
[root@bogon tidb-sql]# time myloader -h 127.0.0.1   -u root -p 'xxxxxxx' -P 3307 -e -t 8 -C -d /srv/soft/tidb-sql --overwrite-tables -v 3

在这里插入图片描述
在这里插入图片描述

参数说明:

time:这个命令会输出执行时间。
myloader:这是要执行的命令。
-h 127.0.0.1:这是要连接的MySQL服务器的IP地址。
-u root:这是要使用的MySQL用户名。
-p ‘hdzxzj!qazxsw2’:这是要使用的MySQL密码。
-P 3307:这是要连接的MySQL服务器的端口号。
-e:启用还原数据的二进制日志。
-t 8:这个参数表示使用8个线程来导入数据。
-C:这个参数表示要压缩导出的数据。
-d /srv/soft/tidb-sql:这个参数表示要导出的数据库的名称。
- -overwrite-tables:这个参数表示要覆盖已存在的表。
-v 3:这个参数表示输出详细的日志信息,级别为3。

3.验证数据

[root@bogon mysql-5.7]# ./bin/mysql -S mysql.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1219882
Server version: 5.7.36-log MySQL Community Server (GPL)
 
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bak_ebike          |
| confluence         |
| ebike              |
| es_view            |
| jira               |
| jumpserver         |
| mysql              |
| performance_schema |
| sys                |
| zabbix             |
+--------------------+
11 rows in set (0.01 sec)
 
mysql> use bak_ebike
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_bak_ebike         |
+-----------------------------+
| magic_api_file_202203301601 |
+-----------------------------+
1 row in set (0.00 sec)
 
mysql> select * from magic_api_file_202203301601\G;

在这里插入图片描述

在这里插入图片描述

可以看到数据库、表结构、表数据均已导入成功,已有300行数据插入。


四、结束语

  本次MySQL导入/导出、TiDB数据回迁就到此结束了,后期会给大家带来主流数据库更深层次应用,感谢认真读完,如果觉得还可以,那么给作者点赞、收藏、关注吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cs阿坤dn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值