您需要在您RDS for MySQL所在的云账号下开通阿里云数据传输服务。并 点击此处
下载dts-ads-writer插件到您的一台服务器上并解压(需要该服务器可以访问互联网,建议使用阿里云ECS以最大限度保障可用性)。服务器上需要有Java
6或以上的运行环境(JRE/JDK)。
*** 作步骤
1. 在分析型数据库上创建目标表,数据更新类型为实时写入,字段名称和MySQL中的建议均相同;
2. 在阿里云数据传输的控制台上创建数据订阅通道,并记录这个通道的ID;
(见: https://help.aliyun.com/document_detail/dts/Getting-Started/data-subscription.html),
3. 配置dts-ads-writer/app.conf文件,配置方式如下:
所有配置均保存在app.conf中,运行前请保证配置正确;修改配置后,请重启writer
基本配置:
{
"dtsAccessId": "", // 拥有数据订阅通道的云账号的accessId, 必须配置
"dtsAccessKey": "", // 拥有数据订阅通道的云账号的accessKey, 必须配置
"dtsTunnelId": "", // 数据订阅通道的id, 必须配置注意是id,不是通道名称
"adsUserName": "", // 访问您的分析型数据库的用户名(accessId), 必须配置
"adsPassword": "", // 访问您的分析型数据库的密码(accessKey), 必须配置
"adsJdbcUrl": "", // 访问分析型数据库的jdbc连接串, 必须配置(格式jdbc:mysql://ip:port/dbname)
"tables": [
{
"source": {
"primaryKeys": [""] // 主键定义, 必须配置注意RDS和分析型数据库中的主键定义必须一致
"db": "", // 源头RDS的db名称, 必须配置
"table": "",// 源头RDS的table名称, 必须配置
"skipColumns": ["col1"] // 可选,若在此配置了RDS表某列名,则该列不会同步
},
"target": {
"table": "" // 分析型数据库表的table名称, 必须配置
},
"columnMapping": {
"": "" // rds表和ads表的列对应关系:key为rds的列名, value为分析型数据库的列名,选填,不填则按照列名一一对应
}
}
]
}
tables节点的配置示例,
表示rds_db库下的rds_table表对应ads_table表,并且rds_table表的col1列对应ads_table表的col1_ads列,
rds_table表的col2列对应ads_table表的col2_ads列
"tables": [
{
"source": {
"primaryKeys": [
"col1",
"col2"
],
"db": "rds_db",
"table": "rds_table"
},
"target": {
"table": "ads_table"
},
"columnMapping": {
"col1": "col1_ads",
"col2": "col2_ads"
}
}
]
注意事项:
1)RDS for MySQL表和分析型数据库中表的主键定义必须完全一致;如果不一致会出现数据不一致问题。如果需要调整RDS/分析型数据库表的主键,建议先停止writer进程;
2)一个插件进程中分析型数据库db只能是一个,由adsJdbcUrl指定;
3)一个插件进程只能对应一个数据订阅通道;如果更新通道中的订阅对象时,需要重启进程
4)RDS for MySQL中DDL *** 作不做同步处理;
5)更新app.conf需要重启插件进程才能生效;
6)如果工具出现bug或某种其它原因需要重新同步历史数据,只能回溯最近24小时的数据(在阿里云数据传输的控制台中修改消费位点);
7)插件的最大同步性能与运行插件的服务器的互联网带宽和磁盘IOPS成正比。
4. 运行dts-ads-writer/bin/startup.sh(sh bin/startup.sh);
5. 配置监控程序监控进程存活和日志中的常见错误码。
logs目录下的日志中的异常信息均以ErrorCode=XXXX ErrorMessage=XXXX形式给出,可以进行监控
ignore_user_abort虽然浏览器会断开,但是一般还是会继续执行程序的。你说的监视数据库变化,指的是通过浏览器监视还是通过服务器日志的形式监视呢?如果是浏览器,那么建议你可以做个1秒钟刷新一次的页面,这样监控。或者写个js定时器用ajax请求来检测。如果是服务器日志,ignore_user_abort是一个方法。另外可以通过命令行执行PHP一直运行的方式来监控。根据要求配置MySQL主从备份、读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用。
为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致
环境:192.168.0.1 (Master)
192.168.0.2 (Slave)
MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1
server-id = 1 //数据库ID号, 为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值
log-bin=mysql-bin //启用二进制日志
binlog-do-db=data //需要同步的二进制数据库名
binlog-ignore-db=mysql //不同步的二进制数据库名这个同步后听说很麻烦,我没有同步
log-bin=/var/log/mysql/updatelog //设定生成的log文件名
log-slave-updates //把更新的记录写到二进制文件中
slave-skip-errors //跳过错误,继续执行复制
2、建立复制所要使用的用户
mysql>grant replication slave on *.* to identified by '********'
3、重启mysql
/usr/bin/mysqladmin -uroot shutdown
/usr/bin/mysql_safe &
4、现在备份Master上的数据
锁定后我直接tar.gz data这个库文件
mysql>FLUSH TABLES WITH READ LOCK
cd /var/lib/mysql
tar data.tar.gz data
接着直接执行了远程scp
scp ./data.tar.gz
5、登录Slave数据库服务器,修改my.cnf
server-id = 3 //2已经被用在另一个服务器上了,如果以后要再加Slave号接着往后数就OK了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)