高可用数据同步方案-SqlServer迁移Mysql实战
高可用数据同步方案-SqlServer迁移Mysql实战简介随着业务量的上升,以前的架构已经不满足业务的发展,数据作为业务中最重要的一环,需要有更好的架构作为支撑。目前我司有sql server转mysql的需求,所以结合当前业务,我挑选了阿里云开源的一个很好用的同步工具DataX DataX介绍
框架设计DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。
实战下载安装部署$ wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
$ tar zxvf datax.tar.gz
$ sudo chmod -R 755 {YOUR_DATAX_HOME}
也可以自己下载源码安装,不过需要安装maven $ git clone git@github.com:alibaba/DataX.git
$ cd {DataX_source_code_home}
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
打包成功后的DataX包位于 {DataX_source_code_home}/target/datax/datax/ ,结构如下: $ cd {DataX_source_code_home}
$ ls ./target/datax/datax/
bin conf job lib log log_perf plugin
配置你需要编写一个基本信息配置文件,文件包括原库到写入库的表字段对应关系。基本信息包括 {
"job": { "content": [ { "reader": { //读入库配置,比如说是sql server "name": "",//数据源名称,别瞎写 "parameter": {} //数据库配置信息 },"writer": { //写入库配置,比如说是mysql "name": "",//数据源名称,别瞎写 "parameter": {} //数据库配置信息 } } ],"setting": { //基本设置 "speed": { //流量控制 "channel": 1,//同步时候的并发数 "byte": 104857600 //同步时候的字节大小,影响速度 },"errorLimit": { //脏数据控制 "record": 10,//脏数据最大记录数阈值 "percentage": 0.05 //脏数据占比阈值 } } } }
下面给一个配置demo,大家根据自己的需要修改demo,然后使用 {
"job": { "setting": { "speed": { "byte": 1073741824 } },"content": [ { "reader": { "name": "sqlserverreader","parameter": { "username": "root",//自己根据需要修改数据库用户名 "password": "admin",//密码 "where": "","connection": [ { "querySql": [ "SELECT Id,MyReasonId,MyProductType,MyReason FROM dbo.MyReason WITH ( NOLOCK )" ],//全量sql,根据自己需要写增量sql也可以 "jdbcUrl": [ "jdbc:sqlserver://192.168.1.1:1433;DatabaseName=XXXX" ]//自己根据需要修改数据库连接 } ] } },"writer": { "name": "mysqlwriter","parameter": { "writeMode": "insert",//写入模式,这里写插入 "username": "root",//密码 "column": [ "id",//注意与上面的列一一对应 "my_reason_id","my_product_type","my_reason" ],"connection": [ { "jdbcUrl": "jdbc:mysql://192.168.1.2:3306/XXX?useUnicode=true&characterEncoding=utf-8","table": [ "my_reason" ] } ] } } } ] } }
编辑好之后,放到新建work目录里面,然后存为mssql_to_mysql.json,下面就可以运行了 运行$ cd {YOUR_DATAX_HOME}/bin
$ python datax.py ../work/mssql_to_mysql.json
同步结束,显示日志如下: ...
2015-12-17 11:20:25.263 [job-0] INFO JobContainer -
任务启动时刻 : 2015-12-17 11:20:15
任务结束时刻 : 2015-12-17 11:20:25
任务总计耗时 : 10s
任务平均流量 : 205B/s
记录写入速度 : 5rec/s
读出记录总数 : 50
读写失败总数 : 0
这样就说明成功啦 进阶job配置将你需要同步的增量数据放入到安装目录job下面,存为myjob.json,名称随意 linux下通过crontab命令实现 #查看crond服务是否启动,出现以下日志表示已启动
$/sbin/service crond status
crond (pid 30742) is running...
(2)若出现以下日志,表示当前用户已经有正在运行的定时任务,用户只需用命令crontab -e 来编辑crontab文件,参考第四步。
(2)提交你刚刚创建的crontab文件
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |