精华内容
下载资源
问答
  • 实时同步

    2019-03-26 19:23:00
    近期开始接触真正的实时同步,之前接触的SparkStreaming偏重于实时计算,kafka和flume只能算简单的数据同步,如今正式开始做产品化的数据同步项目。特此记录一些知识点。 客户收到磁盘阈值超限报警,进入服务器后,...

    近期开始接触真正的实时同步,之前接触的SparkStreaming偏重于实时计算,kafka和flume只能算简单的数据同步,如今正式开始做产品化的数据同步项目。特此记录一些知识点。

     客户收到磁盘阈值超限报警,进入服务器后,执行df -h可以查看服务器整体磁盘占用情况:

     然后可以查看具体目录下的占比,比如cd /,然后执行du -sh * 

     

    Dagger2是Dagger的升级版,是一个依赖注入框架,实现解耦

     

    在Java中有一个开源的名为Metrics的项目,它能够捕获JVM以及应用层面的性能参数

    转载于:https://www.cnblogs.com/1023linlin/p/10602818.html

    展开全文
  • 但很多情况下,我们的需求是:现在的数据存储在mysql、oracle等关系型传统数据库中,如何尽量不改变原有数据库表结构,将这些数据的insert,update,delete操作结果实时同步到elasticsearch(简称ES)呢? 本文基于以上...

    Elasticsearch 最少必要知识实战教程直播回放

    引言:

    elasticsearch 的出现使得我们的存储、检索数据更快捷、方便。但很多情况下,我们的需求是:现在的数据存储在mysql、oracle等关系型传统数据库中,如何尽量不改变原有数据库表结构,将这些数据的insert,update,delete操作结果实时同步到elasticsearch(简称ES)呢?
    本文基于以上需求点展开实战讨论。

    1.对delete操作的实时同步泼冷水

    到目前为止,所有google,stackoverflow,elastic.co,github上面搜索的插件和实时同步的信息,告诉我们:目前同步delete还没有好的解决方案。
    折中的解决方案如下:
    方案探讨:https://discuss.elastic.co/t/delete-elasticsearch-document-with-logstash-jdbc-input/47490/9
    http://stackoverflow.com/questions/34477095/elasticsearch-replication-of-other-system-data/34477639#34477639

    方案一,

    在原有的mysql数据库表中,新增一个字段status, 默认值为ok,如果要删除数据,实则用update操作,status改为deleted.
    这样,就能同步到es中。es中以status状态值区分该行数据是否存在。deleted代表已删除,ok代表正常。

    方案二,

    使用go elasticsearch 插件实现同步,如:。但是我实操发现,该插件不稳定,bug较多。我也给源码作者提出了bug。
    Bug详见:https://github.com/siddontang/go-mysql-elasticsearch/issues/46

    关于删除操作的最终讨论解决方案(截止2016年6月24日):

    http://stackoverflow.com/questions/35813923/sync-postgresql-data-with-elasticsearch/35823497#35823497

    首先,软件删除而非物理删除数据,新增一个 flag 列,标识记录是否已经被删除,这样,相同的记录也会存在于Elasticsearch。可以执行简单的term查询操作,检索出已经删除的数据信息。
    其次,若需要执行cleanup清理数据操作(物理删除),只需要在数据库和ES中同时删除掉标记位deleted的记录即可。如:mysql执行:delete from cc where cc.flag=‘deleted’; ES同样执行对应删除操作。

    2.如何使用 插件实现insert,update 的同步更新操作?

    我的上一篇博文:http://blog.csdn.net/laoyang360/article/details/51694519 做了些许探讨。
    除了上篇文章提到的三个插件,这里推荐试用过比较好用的logstash的一款插件,名称为: logstash-input-jdbc

    3.如何安装logstash-input-jdbc插件?

    【注意啦,注意啦20170920】:logstash5.X开始,已经至少集成了logstash-input-jdbc插件。所以,你如果使用的是logstash5.X,可以不必再安装,可以直接跳过这一步。
    参考:http://blog.csdn.net/yeyuma/article/details/50240595#quote
    网友博文已经介绍很详细,不再赘述。
    基本到这一步:

    cd /opt/logstash/

    sudo bin/plugin install logstash-input-jdbc

    到此,基本就能成功。若不能请留言。

    4,如何实现实时同步?

    4.1 前提:mysql存在的数据库及表

    数据库名为:test
    test下表名为:cc
    表中数据为:

    mysql> use test;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> select * from cc;
    +----+--------------------+---------+---------------------+
    | id | name | status | modified_at |
    +----+--------------------+---------+---------------------+
    | 1 | laoyang360 | ok | 0000-00-00 00:00:00 |
    | 2 | test002 | ok | 2016-06-23 06:16:42 |
    | 3 | dllaoyang | ok | 0000-00-00 00:00:00 |
    | 4 | huawei | ok | 0000-00-00 00:00:00 |
    | 5 | jdbc_test_update08 | ok | 0000-00-00 00:00:00 |
    | 7 | test7 | ok | 0000-00-00 00:00:00 |
    | 8 | test008 | ok | 0000-00-00 00:00:00 |
    | 9 | test9 | ok | 0000-00-00 00:00:00 |
    | 10 | test10 | deleted | 0000-00-00 00:00:00 |
    +----+--------------------+---------+---------------------+
    9 rows in set (0.01 sec)
    

    4.2 需要两个文件:1)jdbc.conf; 2)jdbc.sql.

    [root@5b9dbaaa148a logstash_jdbc_test]# cat jdbc.conf
    input {
      stdin {
      }
      jdbc {
      # mysql jdbc connection string to our backup databse  后面的test对应mysql中的test数据库
      jdbc_connection_string => "jdbc:mysql://192.168.1.1:3306/test"
      # the user we wish to excute our statement as
      jdbc_user => "root"
      jdbc_password => "******"
      # the path to our downloaded jdbc driver
      jdbc_driver_library => "/elasticsearch-jdbc-2.3.2.0/lib/mysql-connector-java-5.1.38.jar"
      # the name of the driver class for mysql
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
    #以下对应着要执行的sql的绝对路径。
      statement_filepath => "/usr/local/logstash/bin/logstash_jdbc_test/jdbc.sql"
    #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
      schedule => "* * * * *"
    #设定ES索引类型
      type => "cc_type"
      }
    }
    
    filter {
      json {
      source => "message"
      remove_field => ["message"]
      }
    }
    
    output {
      elasticsearch {
    #ESIP地址与端口
      hosts => "192.168.1.1:9200"
    #ES索引名称(自己定义的)
      index => "cc_index"
    #自增ID编号
      document_id => "%{id}"
      }
      stdout {
    #以JSON格式输出
      codec => json_lines
      }
    }
    
    #要执行的sql语句。
    选择哪些信息同步到ES中。
    [root@5b9dbaaa148a logstash_jdbc_test]# cat jdbc.sql
    select
      *
    from
    where cc.modified_at > :sql_last_value
    

    [注意啦!注意啦!注意啦!]

    cc.modified_at, 这个modified_at是我自己定义的更改时间字段,默认值default是now()当前时间。
    而 :sql_last_value如果input里面use_column_value => true, 即如果设置为true的话,可以是我们设定的字段的上一次的值。
    默认 use_column_value => false, 这样 :sql_last_value为上一次更新的最后时刻值。
    也就是说,对于新增的值,才会更新。这样就实现了增量更新的目的。

    有童鞋问,如何全量更新呢? 答案:就是去掉where子句即可。

    步骤1:

    在logstash的bin路径下新建文件夹logstash_jdbc_test,并将上两个文件 1)jdbc.conf,2)jdbc.sql.模板拷贝到里面。

    步骤2:

    按照自己的mysql地址、es地址、建立的索引名称、类型名称修改conf,以及要同步内容修改sql。

    步骤3:

    执行logstash, 如下:
    [root@5b9dbaaa148a plugins]# ./logstash -f ./logstash_jdbc_test/jdbc.conf

    步骤4:

    验证同步是否成功。
    可以通过: 如下图所示:
    这里写图片描述

    5,注意事项

    如果你要测试go-mysql-elasticsearch可能会遇到下面三个Bug及解决方案如下:

    【Bug1】

    How to Setting The Binary Log Format
    http://dev.mysql.com/doc/refman/5.7/en/binary-log-setting.html

    【Bug2】

    what is inner http status address
    https://github.com/siddontang/go-mysql-elasticsearch/issues/11

    【Bug3】

    [2016/06/23 10:19:38] canal.go:146 [Error] canal start sync binlog err: ERROR 1236 (HY000): Misconfigured master - server id was not set
    http://dba.stackexchange.com/questions/76089/error-1236-from-master-after-restored-replication

    6,小结

    实操发现: logstash-input-jdbc 能较好的实现mysql的insert、update的操作的增量、全量数据同步更新到ES。

    但delete操作的实时同步没有很好的解决方案,如果你有,且都测试ok的话,请留言告诉我,不吝赐教!

    ——————————————————————————————————
    更多ES相关实战干货经验分享,请扫描下方【铭毅天下】微信公众号二维码关注。
    (每周至少更新一篇!)

    这里写图片描述
    和你一起,死磕Elasticsearch
    ——————————————————————————————————

    2016-6-23 pm22:42 思于家中床前

    作者:铭毅天下
    转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/51747266
    如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

    展开全文
  • 实时同步sersync

    2019-10-02 16:29:31
    1 实时同步 1.1 实时同步原理 存储服务器数据实时同步到备份服务器 1.2 什么是实时同步 实时同步是一种只要当前目录触发事件,就马上同步到远程的目录。 1.3 为什么要实时同步 保证数据的连续性减少人力成本 1.4...

    1 实时同步

    1.1 实时同步原理

    存储服务器数据实时同步到备份服务器

    1.2 什么是实时同步

    实时同步是一种只要当前目录触发事件,就马上同步到远程的目录。

    1.3 为什么要实时同步

    保证数据的连续性
    减少人力成本

    1.4 实时工具的选择

    inotify+rsync
    sersync+rsync
    lsyncd
    Inotify是一个通知接口,用来监控文件系统的各种变化,如果文件存取,删除,移动。可以非常方便地实现文件异动告警,增量备份,并针对目录或文件的变化及时作出响应。rsync+inotify可以实触发式实时同步增量备份。
    sersync是国人基于rsync+inotify-tools开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。
    sersync优点
    (1)支持通过配置文件管理
    (2)真正的守护进程socket(不需要写脚本)
    (3)可以对失败文件定时重传(定时任务功能)
    (4)第三方的HTTP接口(例如更新cdn缓存)
    (5)默认多线程rsync同步

    2 inotify

    inotify:实时监控目录数数据变化软件,安装在存储服务器。

    2.1 inotify软件部署

    yum install -y inotify-tools        #安装inotify
    rpm -ql inotify-tools           #查看软件包内容
    内容:
    /usr/bin/inotifywait        #监控目录数据变化的命令 
    /usr/bin/inotifywatch       #统计监控事件信息

    2.2 监控目录数据变化的命令

    /usr/bin/inotifywait
    参数:

    -m 让监控过程始终保持下去;没有这个参数,只监控一次
    -r 递归监控目录
    format 定义输出信息格式
    时间信息  创建什么文件  事件信息:创建文件
    timefmt 具体定义时间的格式
    -q 输出更少的信息,只输出事件信息
    -e 只监控什么事件

    事件:
    inotifywait -mrq --format "%w%f" -e "close_write,move,create,delete" /data

    access 文件或目录内容被读取
    modify       文件或目录内容被写入
    attrib 文件或目录属性被改变
    close_write 文件或目录被关闭,在打开之后有写操作然后关闭文件
    close_nowrite 文件或目录被关闭,在打开之后没有任何操作
    编写文件--打开文件--编辑/没有编辑--关闭文件    
    close 文件或目录被关闭,写或读之后被关闭
    open 文件或目录被打开
    moved_to 文件或目录被移动到监控目录,其它目录数据移动到监控目录
    moved_from 文件或目录从监控目录移除,监控目录数据移动到其它地方
    move 文件或目录移动到监控目录或移除监控目录
    create 文件或目录在监控目录中被创建出来
    delete 文件或目录在监控目录中被删除
    delete_self  文件或目录被删除
    unmount 包含文件或目录的文件系统被卸载
    重要事件: close_write、move、create、delete

    2.3 监控命令语法结构

    语法结构:inotifywait 参数信息 监控目录
    inotifywait -mrq --timefmt "%F %T" --format "%T %w%f %e" /data  #监控命令
    
    2019-07-20 22:13:20 /data/oldboy_dir/oldboy04.txt CREATE        #监控的反应信息
    # timefmt里的"%F %T"对应2019-07-20 22:13:20 #format里的%T对应timefmt里的"%F %T"
    # %w对应监控的目录 /data/oldboy_dir
    # %f对应触发事件文件数据信息 create
    # %e对应显示触发的事件信息

    实时同步命令格式_看图王.png

    2.4 编写实时同步脚本

    第一步:进行数据监控

    [root@nfs01 ~]#inotifywait -mrq --format "%w%f" -e "close_write,move,create,delete" /data
    /data/test.txt
    /data/test.txt

    第二步:部署好rsync守护进程服务
    服务端:
    安装rsync软件
    编辑配置文件
    创建虚拟(rsync)用户
    创建密码文件并修改权限600
    创建备份目录,修改属主属组权限
    启动服务程序服务/重启程序
    客户端:
    创建密码文件,并修改权限600,测试传输
    第三步:编写脚本

    [root@nfs01 scripts]#vi inotify_watch.sh 
    [root@nfs01 scripts]#cat inotify_watch.sh 
    #!/bin/bash
    inotifywait -mrq --format "%w%f" -e "close_write,move,create,delete" /data|\
    while read line
    do
      rsync -az --delete /data/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    done

    问题一:
    执行脚本总有输出信息,并且脚本不能持续运行,如何实现脚本在后台一直运行:
    方法一: 执行脚本后面加上 &

    sh /server/scripts/inotify_watch.sh 
    # &:让脚本在后台运行,但连接断开,脚本就不回运行
    # 在编辑脚本时,将-avz中的v去掉,不会再有输出信息

    方法二: 利用专用命令    nohup

    nohup sh /server/scripts/inotify_watch.sh &     #脚本一直持续运行,断开也会运行

    如果想要脚本开机运行,可以写入/erc/rc.local
    问题二:数据已经同步完毕,但是脚本还在一直运行       shell知识学习完,有带解决。

    3 sersync

    sersync软件实现实时同步:先安装好inotify+rsync

    3.1 如何部署安装sersync软件

    第一步:下载sersync软件
    http://github.com/wsgzao/sersync
    第二步:上传软件到linux系统

    yum install -y lrzsr    # lrzsz:实现Windows,linux互传文件
    rz -y   # 将Windows数据传输到linux
    sz -y   # 将linux数据传输到windows

    第三步:安装部署sersync软件(二进制包)

    unzip sersync_installdir_64bit.zip
    mv /server/tools/sersync_installdir_64bit/sersync/ /usr/local/
    #   /usr/local/ 第三方软件目录

    第四步:修改配置文件

    [root@nfs01 ~]# vim /usr/local/sersync/conf/confxml.xml
    
    说明:排除指定信息不要进行实时同步
     <filter start="false">
       <exclude expression="(.*)\.svn"></exclude>
       <exclude expression="(.*)\.gz"></exclude>
       <exclude expression="^info/*"></exclude>
       <exclude expression="^static/*"></exclude>
    </filter>
    
    说明:指定监控的事件信息
    <inotify>
       <delete start="true"/>
       <createFolder start="true"/>
       <createFile start="false"/>
       <closeWrite start="true"/>
       <moveFrom start="true"/>
       <moveTo start="true"/>
       <attrib start="false"/>
       <modify start="false"/>
    </inotify>
    
    重点说明:实现实时同步关键配置
    <sersync>
    <localpath watch="/data">
        <remote ip="127.16.1.41" name="backup"/>
        <!--<remote ip="192.168.8.39" name="tongbu"/>-->
        <!--<remote ip="192.168.8.40" name="tongbu"/>-->
    </localpath>
    <rsync>
        <commonParams params="-az"/>
        <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
        <userDefinedPort start="false" port="874"/><!-- port=874 -->
    

    sersync服务配置文件说明_看图王.png
    第五步:启动实时同步服务,并检查测试
    首先让程序文件有执行权限 x

    [root@nfs01 bin]# chmod +x /usr/local/sersync/bin/sersync

    让程序启动
    (1)在程序的bin目录启动:

    [root@nfs01 bin]# ./sersync -dro /usr/local/sersync/conf/confxml.xml

    (2)创建软链接启动

    [root@nfs01 bin]# ln -s /usr/local/sersync/bin/sersync /usr/local/sbin/sersync
    [root@nfs01 bin]# ll /usr/local/sbin/sersync 
    [root@nfs01 bin]# lrwxrwxrwx 1 root root 30 Jul 21 00:28 /usr/local/sbin/sersync -> /usr/local/sersync/bin/sersync

    (3)加入环境变量

    [root@nfs01 bin]# export PATH=$PATH:/usr/local/sersync/bin/     # 临时设置
    [root@nfs01 bin]# vi /etc/profile       # 永久设置
    export PATH=$PATH:/usr/local/sersync/bin/       #   添加在文件中
    # source /etc/profile 或者 . /etc/profile 让修改的配置文件生效

    然后sersync就可以使用了

    3.2 sersync命令参数

    -d 启用守护进程模式
    -r 在监控前,将监控目录与远程主机用rsync命令推送一遍
    -o 指定配置文件,默认使用confxml.xml文件
    -n 指定开启守护线程的数量,默认为10个
    -m 使用 -m refreshCDN 开启刷新CDN模块
    使用 -m socket 开启socket模块
    使用 -m http 开启http模块
    不加-m参数,则默认执行同步程序

    启动程序:

    sersync -dro /usr/local/sersync/conf/confxml.xml

    3.3 利用实时同步可以解决 nfs服务单点问题

    QQ图片20190720150943.png

    当用户存储数据时,存储到nfs服务器中,inotify监控到有新数据产生的时候,会同步给web01中的/data01,当nfs服务器坏掉的时候,web01中data挂载目录点会被卸载,挂载上data01,这样用户读取数据的时候,就会读取到data01的数据,data01的数据同nfs服务器中的数据一样。

    转载于:https://www.cnblogs.com/basa/p/11220209.html

    展开全文
  • rsync+inotify实时同步

    2018-10-23 15:27:14
    rsync+inotify实现数据实时同步,如MysSQL数据库的实时同步
  • sersync实时同步操作

    2019-01-18 09:51:19
    此文档为sersync实时同步,操作步骤,在两台linux系统下进行
  • CentOS 实时同步

    2018-12-19 10:25:43
    Centos rsync+inotify实现文件数据实时同步备份(一对多 单向实时同步) http://www.cnblogs.com/davidwang456/p/3684945.html Centos rsync+sersync实现文件实时同步 http://www.osyunwei.com/archives/7447.html ...
    展开全文
  • 来自公众号:小米云技术背景MySQL由于自身简单、高效、...为了解决sql查询慢,查不了的业务痛点,我们探索出一套完整的实时同步,即席查询的解决方案,本文主要从实时同步的角度介绍相关工作。早期业务借助Sqoop将My...
  • linux rsync及inotify实时同步,实现并确保文件及实时同步
  • mysql postgresql Greenplum 实时同步,步骤清晰,代码完整。
  • 1.1 什么是实时同步:如何实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 1.2 实现实时同步的方法 inotify+rsync 方式...
  • java数据实时同步系统

    2015-01-30 14:39:09
    java数据实时同步系统,把远程数据库数据实时同步到本地数据库
  • sersync实时同步软件,配合rsync软件实时同步文件夹/文件夹中的内容,利用intoify传输
  • 文件夹实时同步工具

    2013-06-25 20:36:49
    文件夹实时同步工具
  • 综合架构实时同步

    2019-08-31 22:01:22
    综合架构实时同步 1.网站实时同步原理 数据备份方法: 定时任务备份数据:备份数据最短周期1分钟(内部人员备份数据) 实时同步备份数据:没有同步等待时间(外部人员备份数据) 实时同步数据原理: 监视存储服务器上指定...
  • 达梦数据库实时同步软件用户手册
  • 虚拟键盘(实时同步),可用于实时展示键盘输入,或者演示键盘操作,简单实用,直观,一目了然。
  • 网页音乐播放器实时同步歌词
  • perl实时同步脚本

    2011-12-15 00:58:56
    perl实时同步脚本
  • rsync实时同步

    千次阅读 2019-05-27 09:37:00
    实现的目的就是保持这两个服务器某个文件目录保持实时同步 实现方式: 通过rsync+inotify-tools结合来实现 准备工作: 首先要给两台机器添加信任关系,具体方法已经在前面的文章介绍过了...
  • 做的很有意思的一个同步辅助工具库,可以做一些好玩儿的事情,比如本地配置和服务器配置同步,本地文件实时同步到服务器,或者可以本地书写长文实时同步到手机等等.zip,A micro-framework for observing file ...
  • 原标题:FileYee文件实时同步备份软件,再不怕数据丢失日常工作中你是如何保存您的数据文件?简单的保存在电脑或者硬盘吗,其实数据如果单纯的放在一个终端存储是一件危险系数非常高的事情,尤其是企业的重要数据。...
  • sersync,lsyncd实时同步

    2019-09-09 21:43:56
    文章目录实时同步概述实时同步实践nfs服务器web服务器backup服务器数据实时同步服务安装服务启动数据服务迁移backup服务器上需要运行和nfs服务器上一样的业务环境先实现实时的同步在web上实现切换,卸载nfs的/data...
  • MySQL 实时同步 解决方案

    千次阅读 2021-02-16 00:11:45
    目录 1 需求概述 2 技术原理 3 MySQL环境配置 ...将MySQL5.6生产库多张表的数据实时同步到Oracle11g数据仓库,MySQL历史数据700G,平均每天产生50G左右日志文件,MySQL日志空间50G,超过后滚动删除日志文件。
  • 数据实时同步思路

    2020-09-24 23:18:21
    https://www.cnblogs.com/laoqing/p/7360673.html 大数据时代,数据实时同步解决方案的思考—最全的数据同步总结
  • rsync与inotify实时同步

    2019-07-31 19:04:09
    目录数据的实时同步inotify和rsyncinotify和rsync实现实时同步示例:配置 rsync 服务器端的配置文件 数据的实时同步 实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据...
  • 实时同步inotify+rsync

    2019-10-06 09:52:05
    实时同步备份软件服务 1)inotify 实时同步软件 2)sersync 实时同步软件 实时同步原理过程 ①. 先看指定目录是否发生了数据信息变化 ②. 一旦产生变化,就利用rsync将变化的数据信息或者整个目录进行...
  • 共享文件的实时同步

    2019-10-21 12:06:36
    数据的实时同步 数据实时同步 实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 实现实时同步的方法 ...
  • 达梦数据实时同步软件用户 手

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,309
精华内容 7,723
关键字:

实时同步