• mongoShake docker 部署 (mongoshake:2.6.5)


    mongoshake:2.6.5  docker 

     1. 下载镜像

    sudo docker pull happysea/mongoshake:2.6.5

    2. 同步mongo 数据 (192.168.18.176:27018,192.168.18.176:27019,192.168.18.176:27020)到kafka(192.168.18.51:9092)   topic  mongosheketopic

    sudo docker run -itd --rm --name=mongoshake --restart unless-stopped  -p9101:9101 -p 9100:9100 
    -e tunnel_address=seamgtest@192.168.18.51:9092  
    -e log_dir=./logs/   
    -e sync_mode=incr    
    -e mongo_urls=mongodb://root:root@192.168.18.176:27018,192.168.18.176:27019,192.168.18.176:27020   
    -e tunnel=kafka  
    -e tunnel_address=mongosheketopic@192.168.18.51:9092 
    -e tunnel_kafka_partition_number=1 
    -e tunnel_message=json -e incr_sync_mongo_fetch_method=oplog
    -v /opt/docker/mongoshake/logs:/mongo-shake-v2.6.5/logs:rw
    happysea/mongoshake:2.6.5

     2.1  同步到其它地方,自己配置(略)

    3. 变量参数

    collector.conf 中的配置名, 用 "_" 替换掉点 " . "

    eg:   tunnel.address    变为   tunnel_address

    然后指定  -e   tunnel_address=topic@192.168.18.51:9092  即可

    详见:

    master_quorum = '${master_quorum:=false}'
    full_sync.http_port = 9101
    incr_sync.http_port = 9100
    # profiling on net/http/profile
    # profiling端口,用于查看内部go堆栈。
    system_profile_port = 9200
    # global log level: debug, info, warning, error. lower level message will be filter
    log.level = '${log_level:=info}'
    log.dir = '${log_dir}'
    log.flush = '${log_flush:=false}'
    sync_mode = '${sync_mode:=incr}'
    mongo_urls = '${mongo_urls:=mongodb://root:root@192.168.18.176:27018,192.168.18.176:27019,192.168.18.176:27020}'
    # please fill the source config server url if source mongodb is sharding.  #############
    mongo_cs_url = '${mongo_cs_url}'
    mongo_s_url = '${mongo_s_url}'
    # enable source ssl
    mongo_ssl_root_ca_file = '${mongo_ssl_root_ca_file}'
    tunnel = '${tunnel:=kafka}'
    ############################################### tunnel.address mgtest1@192.168.18.51:9092 ###################################
    tunnel.address = '${tunnel_address:=mongosheketest@192.168.18.51:9092}'
    tunnel.message = '${tunnel_message:=json}'
    tunnel.kafka.partition_number = '${tunnel_kafka_partition_number:=1}'
    # canonical_extended_json
    tunnel.json.format = '${tunnel_json_format}'
    tunnel.mongo_ssl_root_ca_file = '${tunnel_mongo_ssl_root_ca_file}'
    mongo_connect_mode = '${mongo_connect_mode:=secondaryPreferred}'
    filter.namespace.black = '${filter_namespace_black}'
    filter.namespace.white = '${filter_namespace_white}'
    filter.pass.special.db = '${filter_pass_special_db}'
    filter.ddl_enable = '${filter_ddl_enable:=false}'
    filter.oplog.gids = '${filter_oplog_gids:=false}'
    # 2.4版本以后不需要配置为源端cs的地址。
    checkpoint.storage.url = '${checkpoint_storage_url}'
    checkpoint.storage.db = '${checkpoint_storage_db:=mongoshake}'
    # checkpoint collection,s name.
    # checkpoint存储的表的名字,如果启动多个mongoshake拉取同一个源可以修改这个表名以防止冲突。
    checkpoint.storage.collection = '${checkpoint_storage_collection:=ckpt_default}'
    # set if enable ssl
    checkpoint.storage.url.mongo_ssl_root_ca_file = '${checkpoint_storage_url_mongo_ssl_root_ca_file}'
    # 大于给定的时间,如果是则会直接报错退出。
    checkpoint.start_position = 1970-01-01T00:00:00Z
    transform.namespace = '${transform_namespace}'
    full_sync.reader.collection_parallel = '${full_sync_reader_collection_parallel:=6}'
    # the number of document writer thread in each collection.
    # 同一个表内并发写的线程数,例如,8表示对于同一个表,将会有8个写线程进行并发写入。#######
    full_sync.reader.write_document_parallel = '${full_sync_reader_write_document_parallel:=8}'
    # number of documents in a batch insert in a document concurrence
    # 目的端写入的batch大小,例如,128表示一个线程将会一次聚合128个文档然后再写入。#######
    full_sync.reader.document_batch_size = '${full_sync_reader_document_batch_size:=128}'
    # max number of fetching thread per table. default is 1
    # 单个表最大拉取的线程数,默认是单线程拉取。需要具备splitVector权限。
    # 注意:对单个表来说,仅支持索引对应的value是同种类型,如果有不同类型请勿启用该配置项!
    full_sync.reader.parallel_thread = '${full_sync_reader_parallel_thread:=1}'
    # the parallel query index if set full_sync.reader.parallel_thread. index should only has
    # 1 field.
    # 如果设置了full_sync.reader.parallel_thread,还需要设置该参数,并行拉取所扫描的index,value
    # 必须是同种类型。对于副本集,建议设置_id;对于集群版,建议设置shard_key。key只能有1个field。
    full_sync.reader.parallel_index = '${full_sync_reader_parallel_index:=_id}'
    # drop the same name of collection in dest mongodb in full synchronization
    # 同步时如果目的库存在,是否先删除目的库再进行同步,true表示先删除再同步,false表示不删除。
    full_sync.collection_exist_drop = '${full_sync_collection_exist_drop:=true}'
    # create index option.
    
    # background表示创建后台索引。
    full_sync.create_index = '${full_sync_create_index:=none}'
    # convert insert to update when duplicate key found
    # 如果_id存在在目的库,是否将insert语句修改为update语句。
    full_sync.executor.insert_on_dup_update = '${full_sync_executor_insert_on_dup_update:=false}'
    # filter orphan document for source type is sharding.
    # 源端是sharding,是否需要过滤orphan文档
    full_sync.executor.filter.orphan_document = '${full_sync_executor_filter_orphan_document:=false}'
    # enable majority write in full sync.
    # the performance will degrade if enable.
    # 全量阶段写入端是否启用majority write
    full_sync.executor.majority_enable = '${full_sync_executor_majority_enable:=false}'
    # --------------------------- incrmental sync configuration ---------------------------
    
    #######################################   incr_sync.mongo_fetch_method ###########################################
    incr_sync.mongo_fetch_method = '${incr_sync_mongo_fetch_method:=oplog}'
    
    incr_sync.change_stream.watch_full_document = '${incr_sync_change_stream_watch_full_document:=false}'
    
    incr_sync.oplog.gids = '${incr_sync_oplog_gids}'
    
    incr_sync.shard_key = '${incr_sync_shard_key:=collection}' 
    
    incr_sync.shard_by_object_id_whitelist = '${incr_sync_shard_by_object_id_whitelist}' 
    
    incr_sync.worker = '${incr_sync_worker:=8}'
    
    incr_sync.tunnel.write_thread = '${incr_sync_tunnel_write_thread:=8}'
    # set the sync delay just like mongodb secondary slaveDelay parameter. unit second.
    # 设置目的端的延迟,比如延迟源端20分钟,类似MongoDB本身主从同步slaveDelay参数,单位:秒
    # 0表示不启用
    incr_sync.target_delay = '${incr_sync_target_delay:=0}'
    # memory queue configuration, plz visit FAQ document to see more details.
    # do not modify these variables if the performance and resource usage can
    # meet your needs.
    # 内部队列的配置参数,如果目前性能足够不建议修改,详细信息参考FAQ。
    incr_sync.worker.batch_queue_size = '${incr_sync_worker_batch_queue_size:=64}'
    incr_sync.adaptive.batching_max_size = '${incr_sync_adaptive_batching_max_size:=1024}'
    incr_sync.fetcher.buffer_capacity = '${incr_sync_fetcher_buffer_capacity:=256}'
    
    incr_sync.executor.upsert = '${incr_sync_executor_upsert:=false}'
    # oplog changes to Update while Insert found duplicated key (_id or unique-index)
    # 如果_id存在在目的库,是否将insert语句修改为update语句。
    incr_sync.executor.insert_on_dup_update = '${incr_sync_executor_insert_on_dup_update:=false}'
    
    incr_sync.conflict_write_to = '${incr_sync_conflict_write_to:=none}'
    
    incr_sync.executor.majority_enable = '${incr_sync_executor_majority_enable:=false}'
    
    special.source.db.flag = '${special_source_db_flag}' 
    View Code
  • 相关阅读:
    C++进阶--析构函数中的异常
    C++进阶--派生类的析构(虚析构函数,shared_ptr)
    linux_shell_拆分文件_多进程脚本
    java_eclipse_设置全局编码_utf-8_编译class指定_运行jar乱码解决_不依赖环境
    linux_环境变量设置 utf-8
    linux_awk_内部正则过滤
    java_Eclipse中SVN的安装步骤(两种)和使用方法
    linux_vim_快捷键
    php_公共方法01_传入数组_打印可见信息
    linux_sed 正则替换
  • 原文地址:https://www.cnblogs.com/lshan/p/15507931.html
Copyright © 2020-2023  润新知