cms检索服务开发测试环境做了迁移:
10.12.68.97,10.12.68.98,10.12.68.99 zk,kafka测试,开发共用
10.12.68.100 ,10.12.68.101 canal,canal-adapter测试
10.12.68.102,10.12.68.103,10.12.68.104 es测试
开发环境:
10.12.68.105 canal,canal-adapter开发
10.12.68.106 es开发
开发环境ip: 10.12.68.106
1.kafka创建 topic
以开发环境为例 (测试环境叫cms)
./kafka-topics.sh --create --zookeeper 10.12.68.97:2181 --topic cms-dev --replication-factor 1 --partitions 1
扩展分区:
./kafka-topics.sh --alter --zookeeper 10.12.68.97:2181 --topic se-do-data-test --partitions 1
标红部分根据实际需求做相应改动。
线上环境1副分,32分区,
测试环境1副本,2分区,
预发环境1副本,8分区
开发环境1副本,1分区
--topic topic名称
--partitions 线上可分16个分区
查看topic描述:
./kafka-topics.sh --describe --zookeeper 10.12.68.97:2181 --topic cms-dev
./kafka-consumer-groups.sh --bootstrap-server
localhost:9092 --group g1 --describe
./kafka-console-producer.sh --broker-list
localhost:9092 --topic cms-dev
消费:
./kafka-console-consumer.sh -bootstrap-server
localhost:9092 --topic cms-dev --from-beginning
2.canal配置
/apps/canal/conf/canal.properties
canal注册zk地址(测试环境连接相应的zk)
canal.zkServers = 10.12.68.97:2181,10.12.68.98:2181,10.12.68.99:2181
kafka地址:(测试环境连接相应的kafka)
canal.mq.servers = 10.12.68.97:9092,0.12.68.98:9092,0.12.68.99:9092
创建mysql实例目录:
以开发环境为例:/apps/canal/conf/CMS_DEV10.12.52.159
在目录 下的 instance.properties
#数据库ip
canal.instance.master.address=10.12.52.159:3306
canal.instance.dbUsername=testuser
canal.instance.dbPassword=testuser
#环境使用的topic
canal.mq.topic=cms-dev
#和创建的topic分区数有关
3.adapter:
application.yml
mq信息:
mqServers: 10.12.68.97:9092,0.12.68.98:9092,0.12.68.99:9092#or ro
定义一个srcDataSource
cms:
url: jdbc:mysql://10.12.52.159:3306/cms?useUnicode=true
username: testuser
password: testuser
topic信息:
- instance: cms-dev # canal instance Name or mq topic name
es信息:
- name: es
hosts: 10.12.68.106:9200 # 127.0.0.1:9200 for rest mode
properties:
mode: rest # transport # or rest
cluster.name: ooo-cluster
es目录创建 一个yml文件,名字起的有意义 (测试环境叫cms.yml)
以测试环境为例cms_content_text_123456.yml)
dataSource信息
dataSourceKey: cms
topic名字:
destination: cms-dev
索引名:测试环境叫cms
_index: cms_site_123456
5.初始化es mapping
curl -XPUT 10.12.68.106:9200/cms_site_123456 -H 'Content-Type:application/json' -d @mapping.json
创建mapping.json 文件
{
"mappings": {
"CMS_CONTENT": {
"dynamic_templates": [{
"str_symbol": {
"match": "*es_symbol_*",
"match_mapping_type": "string",
"mapping": {
"type": "text",
"analyzer": "ik_max_word",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
},
{
"str_text": {
"match": "*es_text_*",
"match_mapping_type": "string",
"mapping": {
"type": "text",
"analyzer": "ik_max_word"
}
}
},
{
"str_integer": {
"match": "*es_integer_*",
"match_mapping_type": "string",
"mapping": {
"type": "long"
}
}
},
{
"str_float": {
"match": "*es_float_*",
"match_mapping_type": "string",
"mapping": {
"type": "doule"
}
}
},
{
"str_date": {
"match": "*es_date_*",
"match_mapping_type": "string",
"mapping": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss.SSS"
}
}
},
{
"str_multi": {
"match": "*es_multi_*",
"match_mapping_type": "string",
"mapping": {
"type": "keyword"
}
}
},
{
"str_json": {
"match": "*es_json_*",
"match_mapping_type": "string",
"mapping": {
"type": "text"
}
}
}
],
"properties": {
"TID": {
"type": "long"
},
"CID": {
"type": "long"
},
"TENANT_ID": {
"type": "keyword"
},
"VERSION": {
"type": "long"
},
"SORT": {
"type": "long"
},
"STATUS": {
"type": "long"
},
"RCID": {
"type": "long"
},
"TOP": {
"type": "long"
},
"TYPE": {
"type": "long"
},
"CREATE_DATE": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSZ||epoch_millis"
},
"UPDATE_DATE": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSZ||epoch_millis"
},
"CONTENT": {
"type": "text",
"analyzer": "ik_max_word"
},
"DETAIL": {
"type": "text",
"analyzer": "ik_max_word"
},
"TEXT_CONTENT": {
"type": "text",
"analyzer": "ik_max_word"
},
"TEXT_DETAIL": {
"type": "text",
"analyzer": "ik_max_word"
},
"SYSTAG": {
"type": "long"
},
"SYSTAG_DATE": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSZ||epoch_millis"
}
}
}
}
}
(如果删除索引结构需要,重新优化设置)优化refresh时间,优化total_fields等:
curl -XPUT 'http://10.12.68.106:9200/cms_site_123456/_settings' -H 'Content-Type:application/json' -d'{ "refresh_interval": "100ms" ,
"index.mapping.total_fields.limit": 10000000 }'
初始化数据:
curl -XPOST 'http://10.12.68.105:8081/etl/es/cms_content_text_123456.yml'
按照时间同步(-1代表不匹配任务租户):
按照租户同步,如1600035223(日期要取一个较大的时间):
同步修复数据方式:
1.直接删除索引重建mapping,全量同步数据
2.只删除全部数据,保留结构。(数据量大时可能需要很长时间,此时可采用方式1)(标红部分替换成对应环境变量)
curl -XPOST 'http://10.12.68.106:9200/cms_site_123456/_delete_by_query?pretty' -H 'Content-Type:application/json' -d '
{ "query": { "match_all": {} }
}'
3.只删除指定租户的数据(标红部分替换成对应环境变量)
curl -XPOST'http://10.12.68.106:9200/cms_site_123456/_delete_by_query?pretty' -H 'Content-Type:application/json' -d '
{
"query": {
"match_phrase": {
"TENANT_ID": "1600035223"
}
}
}'
举例:
cms 测试环境:
(cms预发环境):
cms线上环境 :