数据库增量同步

数据库增量同步#

点击跳转GitHub

PyPI - WheelPyPI - ImplementationAUR licensePyPI - DownloadsPyPIAUR license

一、简单介绍#

本项目全程python,目前可以同步两台mysql之间的数据库,需要指定表,该脚本会长期维护,欢迎提交评论以及修改建议。

rluBxP.gif2.0版本将添加全库不指定表同步;

rluBxP.gif3.0版本将添加多个附属数据库同时增量同步;

二、支持环境#

操作系统 CentOS 7.2以上
python版本 3.6.5以上
mongo版本 4.4.2

三、部署环境#

  1. 安装Python解释器以及virtualenvwrapper
    安装python解释器和配置虚拟环境

  2. 安装mongoDB以及配置
    安装mongoDB服务器

  3. 安装python的依赖包
    pip install -r requirements.txt -i https://pypi.douban.com/simple

至此,所有的环境安装完毕,可以初始化项目

四、 初始化项目#

  1. 首先配置项目跟目录下的config.yaml文件,详细配置信息如下:

    # 脚本信息 (无需修改,项目信息而已)
    __apiVersion: v1.0
    __author: chancey
    __kind: Deployment
    
    # mongoDB的配置信息 (mongo的地址,建议配置上用户名以及密码,防止被黑,反正我是中招了)
    mongoDB:
      host: 
      port: 
      user: 
      password: 
    
    # 间隔时间 (同步间隔时间,单位为秒,建议不要太频繁,毕竟服务器资源有限)
    sleep: 20
    
  2. 打开init/init.py文件,尽量使用vim打开,避免出现不必要的编码问题,只需要配置程序配置的部分

    • serverConfig为列表,请注意中英文的切换,注意格式,其中有两台服务器的设置
    serverConfig = [
        # 主服务器
        {"host": "", "port": 3306, "user": "", "password": "", "database": "", "charset": "utf8mb4"},
        # 从服务器
        {"host": "", "port": 3306, "user": "", "password": "", "database": "", "charset": "utf8mb4"}
    ]
    
    • tableNames为列表,请注意中英文的切换,注意格式,需要同步哪些表就填哪些,暂时不支持自动识别表
    # 需要同步的表
    tableNames = [
        'user_number',
        'user_info',
        'user_umps',
        'tech_data'
    ]
    
  3. 运行初始化脚本init/init.py

    workon py3env # 进入虚拟环境
    python init/init.py # 运行项目的初始化脚本
    

    rlYxtf.png

注意:如果这里出现找不到config.yaml文件,请cd项目根目录下再次运行,如果还有问题,请携图Issues我rl1vD0.gif

五、运行项目#

- CD到项目根目录下
nohup /root/.virtualenvs/py3env/bin/python3 -u DBsync.py >> sprint.out 2>&1 &

- 通过PS查看是否正常运行
ps -aux | grep DBsync.py

- 即时日志
tail -f sprint.out

- 终止
ps -aux | grep DBsync.py
kill -9 上边查出来的pid号

六、觉得好用请给个star#

点击跳转GitHub

作者:ChanceySolo

出处:https://www.cnblogs.com/chancey/p/14149238.html

版权:本作品采用「ChanceySolo-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ChanceySolo  阅读(808)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示