1 Star 0 Fork 0

王乂 / 数据同步

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 7.27 KB
一键复制 编辑 原始数据 按行查看 历史
W-abinbin 提交于 2021-03-08 16:22 . update README.md.

数据同步

介绍

  1. 用于不同数据库之间的数据传输,数据库:MySQL,语言:Java
  2. 基于来源数据库同步表的最后更新时间同步,数据的最后更新时间被修改,则数据会被同步

软件架构

运行系统

后端运行
  1. 导入到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择工作目录,然后点击 Finish 按钮,即可成功导入。
  2. 创建数据库 syncdb并导入数据脚本syncdb_table_init.sqlsync_data_init.sql
  3. 打开项目运行com.sync.SyncApplication.java,出现如下图表示启动成功。
(♥◠‿◠)ノ゙  数据同步启动成功   ლ(´ڡ`ლ)゙  
______  ___ _____ ___         _______   ___   _ _____ 
|  _  \/ _ \_   _/ _ \       /  ___\ \ / / \ | /  __ \
| | | / /_\ \| |/ /_\ \______\ `--. \ V /|  \| | /  \/
| | | |  _  || ||  _  |______|`--. \ \ / | . ` | |    
| |/ /| | | || || | | |      /\__/ / | | | |\  | \__/\
|___/ \_| |_/\_/\_| |_/      \____/  \_/ \_| \_/\____/
前端运行
# 进入项目目录
cd sync-ui

# 安装依赖
npm install

# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。
npm install --registry=https://registry.npm.taobao.org

# 本地开发 启动项目
npm run dev
  • 打开浏览器,输入:(http://localhost:80) 默认账户/密码 admin/admin123)若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功

环境部署

  • 因为本项目是前后端完全分离的,所以需要前后端都单独部署好,才能进行访问,服务器防火墙需要开启70907091端口。访问地址:(http://ip:7090/login)。
后端部署
  • 打包工程文件
  1. 使用maven打包,会在sync-admin模块的target下生成sync-admin-prod.jar包,可以上传到服务器后使用jdk直接启动

打包配置

前端部署
# 使用命令打包
npm run build:prod
  • 构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 .js 、.css、index.html 等静态文件。

  • 通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。

  • 这是我的nginx.conf配置

#user  nobody;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       7090;
        server_name  localhost;

                location / {
                        root /data/appsvr/sync/dist_prod/;# 根目录,dist_prod是前端打的包
                        try_files $uri $uri/ /index.html;
                        index /data/appsvr/sync/dist_prod/index.html; # 默认首页
        }
                
                location /prod-api/{
                        proxy_set_header Host $http_host;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header REMOTE-HOST $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_pass http://localhost:7091/prod-api/;
                }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

使用说明

  1. 进入功能 数据同步 -> 数据源 ,配置来源库和目标库数据源,暂时只支持两种数据库(MySQLOracle)。

注意 :MySQL数据库需要指定连接时需要指定时区,不然记录到数据库的时间会有问题(&serverTimezone=GMT%2B8)

数据源配置

  1. 进入功能 数据同步 -> 同步定时任务,配置需要同步的表。

同步任务配置说明

配置字段说明:

  • 同步任务名称:字面意思,一般是表名,唯一
  • 任务描述:***
  • 来源数据源:会从和这个数据源读取数据(从前面配置的数据源里选择)
  • 目标数据源:会把数据写入这个数据源(从前面配置的数据源里选择)
  • 目标表: 需要写入数据的表
  • 跳过不更新字段:默认为空,如果配置了字段,则表示当目标库的数据在更新时是不会更新配置的这些字段。多个字段用英文逗号,隔开
  • 主键值:不能为空,目标表的主键,程序会通过该字段的值判断是插入数据还是更新数据。如果是联合主键则需要用英文逗号,隔开
  • 不更新数据条件:默认为空,如果配置的话,一般配置的是SQL条件,比如(一个条件的STATUS IN ('C','YDS'),多个条件都要满足的 STATUS IN ('C','YDS') AND FLAG = 'Y',多个条件只需要满足一个的(STATUS IN ('C','YDS') OR FLAG = 'Y')),如果目标库的数据满足配置的条件,则不会更新目标库的这条数据
  • 备注:***
  • 同步SQL:就是读取来源库数据的SQL,类似于mybatisxml里配置的SQL
SELECT TP_NUMBER,
       TP_TYPE_DESC,
       TP_TYPE,
       ORGANIZATION_ID,
       ORGANIZATION_NAME,
       ORGANIZATION_CODE,
       CREATED_BY,
       CREATION_DATE,
       LAST_UPDATE_DATE,
       LAST_UPDATED_BY
  FROM apps.cwms_tp_number_detail
 WHERE ORGANIZATION_ID IN (#ORGANIZATIONID#) 
   AND LAST_UPDATE_DATE >= to_date(#SYNC_TIME_BEGIN#, 'yyyy-MM-dd HH24:mi:ss') -- #SYNC_TIME_BEGIN# 固定写法,标识 同步开始时间
   AND LAST_UPDATE_DATE <= to_date(#SYNC_TIME_END#, 'yyyy-MM-dd HH24:mi:ss') -- #SYNC_TIME_END# 固定写法,标识 同步结束时间

-- #ORGANIZATIONID# :除了#SYNC_TIME_BEGIN##SYNC_TIME_END#之外的其他变量需要传值的话,需要在功能 同步程序 -> 全局变量 里配置 输入图片说明 -- #SYNC_TIME_BEGIN# 固定写法,标识 同步开始时间

-- #SYNC_TIME_END# 固定写法,标识 同步结束时间

说明:新增的同步任务默认五分钟执行一次,也可以在定时任务还没有开始执行的时候手动修改下次同步的开始时间和结束时间 同步时间修改 修改完同步时间后,可以点击启动按钮立即执行,或者等待定时任务自动执行

参与贡献

  1. W-abinbin
  2. hpp
  3. huanglan
  4. yss
1
https://gitee.com/hongye2010/data-synchronization.git
git@gitee.com:hongye2010/data-synchronization.git
hongye2010
data-synchronization
数据同步
master

搜索帮助