精华内容
下载资源
问答
  • Mysql两个数据库表之间双向数据同步方案.docx
  • mysql,两个数据库,实现实时数据同步
  • 同步两mysql数据库

    2018-08-14 09:22:42
    在原始同步某一个数据库的基础上做了改动,变成同步个数据库,并且可以通过配置文件来选择同步数据库。
  • 做开发的时候要做Mysql数据库同步台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,Mysql的版本是4.1.15,都是目前最新的版本。
  • 本文将介绍mysql 触发器实现两个表的数据同步,需要学习MySQL的童鞋可以参考。
  • 做开发的时候要做MySQL数据库同步台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,MySQL的版本是4.1.15,都是目前最新的版本。本文将为大家介绍如何在MySQL数据库间实现同步
  • 本文将介绍mysql 触发器实现两个表的数据同步,需要的朋友可以参考
  • 两个mysql数据库之间实现同步,通过定时任务实现从主库到从库的同步,java代码实现,所有java项目包括配置都有,数据结构可以跟据自己的特定情况去改
  • 实现两个Mysql数据库同步

    千次阅读 2017-11-28 13:48:00
     MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。 ...
    一、     概述
      MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。
    二、     环境
    操作系统:Linux 2.6.23.1-42.fc8 # SMP(不安装XEN)
    Mysql版本:5.0.45-4.fc8
    设备环境:PC(或者虚拟机)两台
    三、     配置
    数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是my.cnf):在本环境下为/etc/my.cnf 。
    3.1 设置环境:
     IP 的设置:
    A主机 IP:10.10.0.119
           Mask:255.255.0.0
    B主机 IP:10.10.8.112
           Mask:255.255.0.0
    在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status 查看防火墙状态。如果防火墙状态为仍在运行。使用service iptables stop 来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。
    最终以两台主机可以相互ping通为佳。
    3.2 配置A主(master) B从(slave)模式
    3.2.1 配置A 为master
        1、增加一个用户同步使用的帐号:
       GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
    GRANT REPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
    赋予10.10.8.112也就是Slave 机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。
    2、增加一个数据库作为同步数据库:
    create database test;
    3、创建一个表结构:
           create table mytest (username varchar(20),password varchar(20));
    4、修改配置文件:
                  修改A的/etc/my.cnf 文件,在my.cnf 配置项中加入下面配置:
    server-id = 1      #Server 标识
    log-bin
    binlog-do-db=test  #指定需要日志的数据库
                 
    5、重起数据库服务:
     service mysqld restart
     查看server-id:
     show variable like ‘server_id’;
    实例:
    mysql> show variables like 'server_id';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | server_id     | 1     |
    +---------------+-------+
    1 row in set (0.00 sec)
     
    6、用show master status/G 命令看日志情况。
           正常为:
    mysql> show master status/G
    *************************** 1. row ***************************
    File: mysqld-bin.000002
    Position: 198
    Binlog_Do_DB: test,test
    Binlog_Ignore_DB:
    1 row in set (0.08 sec)
    3.2.2 配置B 为slave
    1、增加一个数据库作为同步数据库:
    create database test;
    2、创建一个表结构:
    create table mytest (username varchar(20),password varchar(20));
    3、修改配置文件:
                  修改B的/etc/my.cnf 文件,在my.cnf 配置项中加入下面配置:
    server-id=2
    master-host=10.10. 0.119
    master-user=backup    #同步用户帐号
    master-password=1234
    master-port=3306
    master-connect-retry=60 #预设重试间隔60秒
    replicate-do-db=test    #告诉slave只做backup数据库的更新
                 
    5、重起数据库服务:
     service mysqld restart
     查看server-id:
     show variables like ‘server_id’;
    实例:
    mysql> show variables like 'server_id';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | server_id     | 2     |
    +---------------+-------+
    1 row in set (0.00 sec)
     
    6、用show slave status/G 命令看日志情况。
           正常为:
    mysql> show slave status/G
    *************************** 1. row ***************************
                 Slave_IO_State: Waiting for master to send event
                    Master_Host: 10.10.0.119
                    Master_User: backup
                    Master_Port: 3306
                  Connect_Retry: 60
                Master_Log_File: mysqld-bin.000001
            Read_Master_Log_Pos: 98
                 Relay_Log_File: mysqld-relay-bin.000003
                  Relay_Log_Pos: 236
          Relay_Master_Log_File: mysqld-bin.000001
               Slave_IO_Running: Yes
              Slave_SQL_Running: Yes
                Replicate_Do_DB: test,test
            Replicate_Ignore_DB:
             Replicate_Do_Table:
         Replicate_Ignore_Table:
        Replicate_Wild_Do_Table:
    Replicate_Wild_Ignore_Table:
                     Last_Errno: 0
                     Last_Error:
                   Skip_Counter: 0
            Exec_Master_Log_Pos: 98
                Relay_Log_Space: 236
                Until_Condition: None
                 Until_Log_File:
                  Until_Log_Pos: 0
             Master_SSL_Allowed: No
             Master_SSL_CA_File:
             Master_SSL_CA_Path:
                Master_SSL_Cert:
              Master_SSL_Cipher:
                 Master_SSL_Key:
          Seconds_Behind_Master: 0
    1 row in set (0.01 sec)
     
     
    3.2.3 验证配置
    分别使用insert, delete , update 在A 主机进行增删改查数据库;查看B主机的数据库是否与A主机一致;若一致,则配置成功。
    3.3双机互备模式
    如果在A主机加入slave设置,在B主机加入master设置,则可以做B->A的同步。
    1、在A主机的配置文件中 mysqld 配置项加入以下设置:
    master-host=10.10.8.112
    master-user=backup
    master-password=1234
    replicate-do-db=test
    master-connect-retry=10
     
    2、在B的配置文件中 mysqld 配置项加入以下设置:
    log-bin
    binlog-do-db=test
     
      注意:当有错误产生时,*.err日志文件同步的线程退出,当纠正错误后,要让同步机制进行工作,运行slave start。
     
    重起A、B机器,则可以实现双向的热备份。
    四、     常见问题及解决
    1、Slave机器的权限问题,不但要给slave机器File权限,还要给它REPLICATION SLAVE的权限。
    2、在修改完Slave机器/etc/my.cnf之后,slave机器的mysql服务启动之前,记得要删除掉master.info
    3、在show master status 或着show slave status 不正常时,看看.err是怎样说的。
    4、Slave上Mysql的Replication工作有两个线程, I/O thread和SQL thread 。I/O 的作用是从master 3306端口上把它的binlog取过来(master在被修改了任何内容之后,就会把修改了什么写到自己的binlog等待slave更新),然后写到本地的relay-log,而SQL thread则是去读本地的relay-log,再把它转换成本Mysql所能理解的语句,于是同步就这样一步一步的完成.决定I/O thread的是/var/lib/mysql/master.info,而决定SQL thread的是/var/lib/mysql/relay-log.info.
       5、启动slave,命令用start slave;重新启动用restart slave
      
    展开全文
  • MySQL支持单向、异步复制,复制过程中一服务器充当主服务器,而一或多其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一索引以跟踪日志循环。
  • mysql主从同步配置详解、一台服务器两个mysql,本地安装两个mysql实现主从同步
  • 在第一参数中传递模式-put:将本地数据库复制到远程服务器-get:将远程数据库复制到本地服务器 使用config.ini文件指定数据库凭据时,格式为: [远程] ssh = 用户名= remoteDbUsername密码= remoteDbPassword...
  • - load-mysql.php 获取从 phpmyadmin 导出的 import.sql 文件并将其导入 mysql 数据库(已测试,二进制安全) - sync-mysql.php 连接到两个 mysql 数据库并复制每个从第一个数据库到第二个数据库(复制前删除)...
  • SyncNavigator是一款功能强大的数据库同步软件,适用于SQLSERVER, MySQL,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据库同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用...

    SyncNavigator是一款功能强大的数据库同步软件,适用于SQL SERVER, MySQL,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据库同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用于大容量数据库快速同步。

    安装包下载地址:https://www.syncnavigator.cn/Setup.zip

    帮助文档地址:https://www.syncnavigator.cn/Help_zh-CN.chm

    Web文档地址:https://www.syncnavigator.cn/chm/index.htm


    1、如果RDS上的数据没有发生增删改的操作的话,可以生成物理备份或者逻辑备份,然后将物理备份和逻辑备份通过Xtrabackup或者mysqldump将数据导入到自建库。

    2、如果在物理备份已经生成后对于数据库仍然有增删改的操作的话,则需要您在恢复物理备份后还需要追加后续的binlog文件,可以通过API/控制台获取binlog文件去追加增量数据。

    这里有一个非常需要注意的一点是在解压出来物理备份文件后除了数据和索引文件外还有得到如下图中的一些文件。

    由于在物理备份上应用binlog是需要记录binlog的pos点的,所有的RDS都是采用主备架构保证高可用性的,为保证主库正常对外提供服务,备份操作是在从库上执行的,但是生成出来的binlog文件却既有可能是主库或者从库上生成(两个binlog文件的pos点是不一致的)。提供给用户的也可能是这里面的任意一份,因此在物理备份文件中给用户提供了两个binlog文件的pos点,如下图:

    用户在应用binlog的时候需要两个pos点都测试一下,哪个pos点可以在binlog中找到从这个pos点开始应用binlog。 

    3、用户想要将RDS上的增量数据同步在自建库的binlog上可以使用DTS的数据订阅功能,可以通过SDK消费增量数据即可再自己应用该数据。

    展开全文
  • 脚本实现了跨服务器增量同步mysql数据的功能,可以同步多个表。 在使用这脚本的时候需要注意有修改的地方就是源配置、目标配置需要修改成自己的服务器和登录mysql数据库的用户名和密码。基础配置中需要...
  • 两个电脑 把A电脑的数据库的表C数据变动 同步至B电脑的数据库表C 其中 A电脑的表C数据 和B电脑的表C数据内容不一样 结构一样 例:A电脑表C 只有本机数据 B电脑表C 有A电脑表C的数据和B电脑表C的数据
  • 两个Mysql数据库主从库单向同步

    千次阅读 2016-02-15 12:09:50
    两个Mysql数据库主从库单向同步,相信有朋友用的着

    鄙人一个技术菜鸟,但是也有一个渴望成功梦想,所以想在新的一年里,在技术方面有所提升,闲暇之余,我将写点博客,对自己学到的东东加以巩固,但技术功底有限,内容可能比较肤浅……
    

    很久之前安排给我同一个战壕的同事让搞一个mysql主从库备份的,但是遗憾的是都2016年了,这么一个东东都没有落实,汗呐!!!你如果看到我的这篇博客的话,没错,我就是在说你呐。言归正传……
    一、使用的环境(只是做了测试)
    window10-64位+mysql5.6.24

    二、具体步骤:
    1.互相通信
    2.创建同步账户
    3.修改主my.ini;
    4.修改从库my.ini;
    5.从库上启动同步功能

    1.设置两台机器能够互相通信
    我是在同一局域网测试的,如果亲是要在两台外网服务中测试,具体的网络配置请自行查阅,比如开放端口,防火墙等等,以下内容,为个人所在局域网的设置进行……
    主库机器ip:192.168.1.118
    从库机器ip:192.168.1.116
    2.在主、从机器上各添加同步账户,操作如下:

    • 主库机器

    //已命令行的形式登录mysql
    开始-Mysql
    //Enter password:(输入的Mysql密码)
    看到这么界面,说明Mysql以命令行的形式登录成功
    //创建账户并授权
    create user ‘新账户名’@’host’ identified by ‘密码’;
    grant all privileges on 数据库名.表名 to ‘账户名’@’%’
    说明:新账户名为创建的用户名,我用backAdmin;密码你懂得;host是指定该账户可以在那个主机上登录,如果是本地用户可以localhost,如果是想让该用户可以在任意远程主机登录,可以使用通配符%;

    参考语句如下:create user ‘backAdmin’@’%’ identified by ‘123456’;

    数据库名.表名是指将该数据中的某个表的某个权限,授权给某个用户,此处为了测试方便,我将该数据库的所有表的所有的操作权限授予新建的账户,gzante.*表示数据库gzante的所有表,如果表示多有库的所有表,则用*.*,这里的gzante也是要同步的库;

    参考语句如下:grant all privileges on gzante.* to ‘backAdmin’@’%’

    • 从库机器

    //已命令行的形式登录mysql
    开始-Mysql
    //Enter password:(输入的Mysql密码)
    看到这么界面,说明Mysql以命令行的形式登录成功
    //创建账户并授权
    create user ‘新账户名’@’host’ identified by ‘密码’;

    在从库机器上,先不要提前创建与要备份的主库同名数据库,我是提前在从库机器上创建了一个同名的DBante数据,导致从库的相关设置好了之后,执行start slave的时候,会出现错误,

    3.在主库机器修改mysql配置文件(my.ini)我的mysql是安装到D盘的

    首先关于my.ini配置文件简单说下,在mysql5.6之前的版本中,my.ini文件在mysql的安装D:\MySQL\MySQL Server 5.6\my.ini目录下,而mysql5.6的my.ini文件被放到了“D:\ProgramData\MySQL\MySQL Server 5.6\my.ini”中,ProgramData文件夹是存放程序数据的文件夹,如果在安装的时候没有修改的话,具体根据自己的配置情况。切记并非有些网友提到的D:\MySQL\MySQL\my-default.ini
    本人是安装到D盘下面
    在[mysqld]下添加配置文件:
    server-id = 1921680118 #必须明确指定一个唯一的服务器Id,我是用了ip地址192.168.0.118,没有加点
    log-bin=mysql-bin #是指定二进制日志文件的名称
    relay-log=relay-bin #带研究确认
    relay-log-index=relay-bin-index #带研究确认
    binlog-do-db=gzante #指定要同步的数据库
    另外需说明,关于配置my.ini文件中使用的key,如server-id,log-bin等等,连接符到底是下划线_,还是短横线-,需要亲们自己去查阅资料,有的网友用的是server_id,log_in。并且my.ini原始文件中也在混用,一会下划线,一会短横线。
    保存文件,重新启动mysql服务,用命令查看配置是否成功,show master status;

    4.在从库机器修改mysql配置文件my.ini

    在[mysqld]下添加配置文件:
    server-id = 1921680116 #必须明确指定一个唯一的服务器Id,我是用了ip地址192.168.0.116,没有加点
    log-bin=mysql-bin #是指定二进制日志文件的名称
    log_slave_updates = 1 #日志可以更新
    read_only=1 #只读
    replicate-do-db=gzante #指定要复制的数据库
    保存文件,重新启动mysql服务,用命令查看配置是否成功,show slave status\G;

    5.在备份服务器上启动同步功能
    mysql>
    change master to master_host=’192.168.0.118’,master_user=’backAdmin’,
    master_password=’123456’, master_log_file=’mysql-bin.000001’,master_log_pos=0;

    执行后,可以通过show slave status\G;命令行检查同步功能是否正在执行我们可以看到slave_io_state 为空,slave_io_running、slave_sql_running都显示为NO,说明备份服务器配置成功,但是没有启动。
    没有执行启动slave之前
    mysql>start slave;
    这里写图片描述
    执行后,可以通过再通过show slave status\G;命令行检查同步功能是否正在执行我们可以看到slave_io_state:Waiting for master to send event
    slave_io_running:yes
    slave_sql_running:yes
    说明备份服务器配置成功,并且同步功能已启动。这时你可以修改主库,刷新从库就会发现奇迹出现。

    前面我还提到了一个可能出现的错误,这里我再说下,有时候你可能会发现slave_io_running:yes
    slave_sql_running:no的情况,如下图
    这里写图片描述
    这个错误很明显,备份库名称已存在,很简单,删除你从库机器上的同名数据,再次执行这句命令,将会自动创建备份库。
    mysql>
    change master to master_host=’192.168.0.118’,master_user=’backAdmin’,
    master_password=’123456’, master_log_file=’mysql-bin.000001’,master_log_pos=0;

    展开全文
  • 主要是数据同步从oracle同步mysql,数据量为好几十万,采用了流处理的方式同步进行处理,防止出现oom
  • logstash实现mysql数据库表实时同步

    千次阅读 2019-09-23 11:05:22
    logstash使用最多的场景是收集日志、文件、或jdbc等常用的数据源,将数据同步到ElasticSearch中,其实logstash功能跟强大,可以在很多数据源之间进行同步,本文就是利用logstash实现mysql数据库表之间的数据。...

    logstash可以将不同数据源,例如日志、文件、或jdbc等,同步到ElasticSearch中,本文利用logstash实现mysql数据库表之间的数据。(实例:数据库DB1中的表A有添加或者修改,数据库DB2中的表B也会自动同步)

    一、准备:

    数据源输入使用logstash中自带的logstash-input-jdbc,无需额外安装,官网使用说明地址
    数据源输出需要使用logstash-output-jdbc,但是在loastash官网中output plugins列表中并没有相关插件,需要额外安装,使用说明在Github地址

    安装logstash

    将logstash下载后,放到/opt/elastic/目录下,并将logstash目录重命名为logstash-test

    安装logstash-output-jdbc,在/opt/elastic/logstash-test目录下执行:

    	bin/logstash-plugin install logstash-output-jdbc
    

    安装成功:在这里插入图片描述

    二、数据库表

    在数据库DB1中创建表A,并添加数据如下:
    在这里插入图片描述
    在数据库DB2中创建表B,表结构与A一致,暂不添加数据:
    在这里插入图片描述

    三、logstash配置文件

    logstash配置文件中必须包含两个元素inputoutput,分别是数据来源的配置和数据输出的配置。还有一个可选项filter,用来处理数据源和数据输出的之间的适配,例如,需要将某个字段的值10以后再输出,这个10的动作就应该写在filter模块;还有数据源和数据输出字段的编码不同,日期类型不同等情况的处理。(由于本文中A表和B表中数据结构都是一样的,只是实现简单的数据同步,暂时用不到filter

    同步配置文件如下:后面对每个部分进行解释。

    input {
        jdbc {
            jdbc_connection_string => "jdbc:mysql://IP:3306/DB1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true"
            jdbc_user => "expert"
            jdbc_password => "123456"
            jdbc_driver_library => "/opt/elastic/logstash-test/mysql-connector-java-5.1.6.jar"
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            statement => "SELECT title,description FROM A"
       }
    }
    
    filter {}
    
    output {
        jdbc {
            connection_string => "jdbc:mysql://IP:3306/DB2?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true"
            username => "root"
            password => "root123"
            driver_jar_path => "/opt/elastic/logstash-test/mysql-connector-java-5.1.6.jar"
            driver_class => "com.mysql.jdbc.Driver"
            statement => ["insert into B (title,description) values (?,?)","[title]","[description]"]
        }
        stdout {
            codec => json_lines
        }
    }
    

    input配置

    input的配置中有很多强大的功能,详细使用见官网地址,此处只介绍上面涉及到的参数:

    • jdbc_connection_string :数据库连接配置
    • jdbc_user :用户名(连接DB1的用户名)
    • jdbc_password:密码(连接DB1的密码)
    • jdbc_driver_library:数据驱动的jar位置
    • jdbc_driver_class :数据库驱动类名(类似jdbc中的Class.forName(“com.mysql.jdbc.Driver”))
    • statement :查询数据源的sql语句(output中就是将此处的查询结果insert到数据库DB2中)

    output配置

    由于logstash-output-jdbc是额外扩展的output插件,在配置参数的写法上也略有不同,比如:所有的参数前面都没有jdbc_前缀

    • connection_string :数据库连接配置
    • username :用户名(连接DB2的用户名
    • password :密码(连接DB2的密码)
    • driver_jar_path :与input参数中的jdbc_driver_library一致
    • driver_class :与input参数中的jdbc_driver_class一致
    • statement :向DB2中添加数据的insert语句。

    四、执行启动命令

    将上述的配置文件命令为logstash_default.conf,放在logstash-test/conf文件夹下,在logstash-test下执行:

    logstash启动命令

    ./bin/logstash -f /opt/elastic/logstash-test/config/logstash_default.conf --path.data=/opt/elastic/logstash-test/test
    

    启动后发现报如下异常:

    java.lang.IllegalAccessError: tried to access class com.mysql.jdbc.EscapeProcessor from class com.mysql.jdbc.ConnectionImpl
    在这里插入图片描述
    java.lang.IllegalAccessError: com/mysql/jdbc/EscapeProcessor在这里插入图片描述

    遗憾的是目前没有找到为什么会报这个异常,不过换了一种驱动的配置方式,这个异常就消失了。另外一种指定驱动jar包的方式也是官网给出的方式如下:
    在这里插入图片描述
    下面结合本例中给出解决办法。

    启动异常处理方式:

    在logstash目录下,创建目录vendor/jar/jdbc(/opt/elastic/logstash-test/vendor/jar/jdbc),将驱动jar包放入该路径下。
    在这里插入图片描述
    将配置文件中的driver_jar_path注释掉,
    在这里插入图片描述

    重新执行logstash启动命令

    ./bin/logstash -f /opt/elastic/logstash-test/config/logstash_default.conf --path.data=/opt/elastic/logstash-test/test
    

    执行结果:
    在这里插入图片描述
    检查DB2中的表B:数据已经全部同步过去了。
    在这里插入图片描述

    五、定时自动同步数据

    按照上面的过程,能实现执行logstash命令以后,DB1中的表A和DB2中的表B数据同步,但是如果后续表A中的数据有新增或者修改,还需要再去启动logstash。logstash提供了一种定时任务的方式,定期去检查表A中的数据是否有变化,根据表A的最后修改时间(LastUpdateDate)将表A中新增和修改的数据修改新增到表B中。

    将配置文件做如下修改:

    input {
        jdbc {
            jdbc_connection_string => "jdbc:mysql://IP:3306/DB1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true"
            jdbc_user => "expert"
            jdbc_password => "123456"
            jdbc_driver_library => "/opt/elastic/logstash-test/mysql-connector-java-5.1.6.jar"
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            statement => "SELECT title,description FROM A"
            schedule => "* * * * *"
            record_last_run => true
            use_column_value => true
            tracking_column => "LastUpdateDate"
            tracking_column_type => "timestamp"
            last_run_metadata_path => "/opt/elastic/logstash-test/last_record/logstash_default_last_time"
            clean_run => false
            lowercase_column_names => false
       }
    }
    
    filter {}
    
    output {
        jdbc {
            connection_string => "jdbc:mysql://IP:3306/DB2?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true"
            username => "root"
            password => "root123"
            driver_class => "com.mysql.jdbc.Driver"
            statement => ["insert into B (title,description) values(?,?) on duplicate key update title=values(title),description=values(description)","[title]","[description]"]
        }
        stdout {
            codec => json_lines
        }
    }
    
    

    input中新增的参数:

    • schedule => "* * * * *":每分钟检查一次
    • ` record_last_run => true``:是否记录上一下执行的时间
    • ` use_column_value => true``:是否使用数据源的字段
    • `tracking_column => “LastUpdateDate”``:数据源的最后修改时间字段
    • `tracking_column_type => “timestamp”``:字段类型
    • ` last_run_metadata_path => “/opt/elastic/logstash-test/last_record/logstash_default_last_time”``:存放最后修改时间的文件位置
    • ` clean_run => false``:这个参数表示你在开启Logstash同步数据时需不需要clean掉上次的记录
    • lowercase_column_names => false读取字段时是否区分大小写

    output新增的参数:

    stdout {
        codec => json_lines
    }
    

    stdout为可选字段,将输出数据的方式加一种,stdout可以把input中statement 的select结果转为json字符串打印到logstash的log中,便于追踪检查哪些数据被更新了。

    六、补充

    output中的statement修改:

    将表B中的title字段设置为唯一约束,将statement改为如下。即可实现如果title相同的时候,只修改记录,而不是新增。唯一约束可以根据实际需求去设置。

    ["insert into B (title,description) values(?,?) on duplicate key update title=values(title),description=values(description)","[title]","[description]"]
    

    表A修改完只有需要1分钟以后才能在表B中看到同步效果,因为定时任务设置的每分钟执行一次。

    展开全文
  • SyncNavigator 数据酷同步工具 做数据同步时所支持的数据库类型: 支持sqlserver 2000-2014所有版本,全兼容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。 来源数据库和目标数据库可以版本不同,比如:来源数据库...
  • 首先建立要用于测试 数据库 create database a; create database b; use a create table table1(id int, val int); use b create table table2(id int, val int); 建触发器 use a DELIMITER // CREATE ...
  • 两个版本的数据库对比,同时支持sqlserver,oracle,MySql ,代码差异高亮显示 具体功能 介绍博客有图片 :https://blog.csdn.net/wwja_chen/article/details/89336728 如开发库和正式库之间的结构和数据同步,此工具可以...
  • 本文主要讲述两个数据之间如何进行数据同步,或者叫数据迁移、数据割接。 一、需求:在oracle数据库上有一个sys_org,要在mysql数据库上创建一个sys_org_new作为该的备份。sys_org大概10000条记录。 二、...
  • 备注:这两个数据库不同,数据名字也不同,但数据的结构相同。不同结构导入原理是一致的,在【另注】有介绍。如下图所示: teaching数据库area结构: study数据库zone结构: 下面演示:给teaching...
  • mysql同一实例多个数据库数据同步

    千次阅读 2020-07-20 16:18:39
    mysql同一实例不同数据库数据同步 方案一:使用触发器同步 优点: 工作效率和开发效率上有很大的提高 缺点: 增加数据库服务器的开销 具体实现 使用三不同数据库做测试: 1、sakila库中的user_test 2、test库中...
  • 由于两个服务器上使用的是Linux系统,并且对此系统不是很熟悉,解决起来很是艰难,下面将我想到的其中一个办法写下来,跟大家分享一下: 第一步:在oracle服务器上,创建一个目录。以后就是在此目录下进行操作: 1...
  • navicate for mysql同步两个数据库实例

    千次阅读 2017-10-21 09:02:40
    1.打开navicate for mysql 如图 2.选择结构同步,如图 3.将你要同步数据库放在左边,同步后的数据库放在右边。点击对比同步到右边。 4.点击部署后,讲左边的结构部署到右边的数据库里。部署...
  • MySQL数据库是现在常用的数据库,由于一些业务的需求,多不同服务器上的数据库需要数据同步或者部分数据同步。如何同步?怎么同步才简单? 方案 目前有以下几种方案(参考): 通过逻辑代码层面去实现,定时去...
  • 首先建立两个库并创建两个表,一个备份库用于原始库,用于存储数据,一个备份库用于同步数据。 备份库 原始库 我们在test库中的t_user中创建触发器: 开始建立触发器同步数据 -- 插入操作 DELIMITER $ CREATE ...
  • 实现两个数据库之间的数据同步

    千次阅读 2018-11-08 18:23:05
    不同服务器数据库之间的数据操作   --创建链接服务器  exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '  exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 160,591
精华内容 64,236
关键字:

同步mysql两个数据库的表

mysql 订阅