DTS数据库迁移


项目业务需要异地迁移数据库mysql5.7,几种方案线上dump下载本地还原,硬盘邮递,线上dts迁移,实际用到了阿里云的dts业务迁移。

前期用一个测试库5G数据做迁移测试,阿里云业务找到dts数据迁移功能,新建任务,填写源库和目标库信息,阿里有支持的云平台,不支持的平台和个人公网源库接入方式直接选择公网IP,需要合作伙伴做好源库的公网IP和端口开放及添加阿里云按照几个大区华东,华南等区一大堆的白名单。需要权限:

后面选择需要迁移的数据库>箭头拉过去,确认好配置源库及目标库信息以后开始高级配置基本上 默认的选项:一般线上数据还是要增量校验的,整体同步以后增量运行一段时间做同步。


一路下来做最后预检查,一般会全部通过,这样的需要改源库的binlog格式

接着购买链路规格

开启任务

任务校验:

多个实例同时迁移互不影响,dts迁移速度取决于公网速度。

迁移完成释放实例:

释放实例完成以后dts传输完成,需要检验一下数据;DBA不在粗略检验一下表数据;

#!/bin/bash

echo -n "mysql username: ";read username

echo -n "mysql host: ";read host

echo -n "mysql port: ";read port

echo  -n "mysql password: " ; stty -echo ; read password; stty echo ; echo

mysql -u $username -p"$password" -h$host  -p$port -NBe "show databases;" |grep -v 'information_schema'|grep -v 'performance_schema'|grep -v 'mysql'| while read database;do

mysql -u $username -p"$password" -h$host -p$port -NBe "show tables;" $database |while read  -a row ;do

tablename=${row[0]}

countline=`mysql -u$username -p"$password" -h$host -p$port -NBe "select count(*) from $database.$tablename"`

\#counttables=`mysql -u$username -p"$password" -NBe "select count(*) from information_schema.tables where table_schema like '%_db_abc%'"`

echo "$database.$tablename count is $countline" >>count1.csv

 

done

counttables=`mysql -u$username -p"$password" -h$host  -p$port -NBe "select count(*) from information_schema.tables where table_schema like '%_db_abc%'"`

echo "$database-----tables count is $counttables">>count1.csv

done

 

结果类似这样:

源库和目标库对比一下应该是完全对上的,至此mysql数据库迁移完成。


文章作者: 云上的小雨滴
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 云上的小雨滴 !
评论
  目录