• 内网后台同步到线上(灵机一动篇)


    内网后台同步到线上(灵机一动篇) 

      写这篇文档其实我是有点不好意思的,此刻应该是附一张狗图 

      今天,我发现一个惊天大秘密,感谢开发的醍醐灌顶。话说我去复检之前做的:公司内网后台同步到线上的运行情况,登陆到同步到线上的后台,进去之后,发现内容页上的文章发布没有今天的,但公司内网的后台(这个才是正式版,线上做的是应对停电备用版),如下图

     

       我就问开发,这个菜单的数据是存到哪里的,他说是内网数据库。我想想这个数据库同步到线上是每天两次(凌晨和中午各一次),因为导出太慢了,如下

     他说为啥慢,问我不是从内网数据库的机器执行的么,导完再传到线上。我说是内网那机器用ngrok反向代理数据库端口到公网,再用定时脚本在线上服务器上运行,同步到线上的:

     (1)导出mysql数据(ngrok公网代理内网数据库端口,用域名的形式连接)

     (2)导入线上数据库(线上天翼云内网ip+端口)

    突然我也发现他说的有道理,在内网做定时同步会快很多。

    原因如下:

    (1)反向代理ngrok,用的是5M固定带宽阿里云的机器;这个反向代理开发演示也用到,还有别的项目,例如爬虫抓取数据也用到,是ngrok的泛域名,但是带宽应该都会影响到。所以慢就是因为导出数据的时候,带宽不太够。而线上数据库虽然是借助一台公网服务器做的端口转发,公网服务器出口带宽用的是共享100M,而且只有另一台机器一起用这条线路,怎么说,100M的共享带宽 >> 5M固定带宽

    数据库有2G大小,内网导出来很快,因为我们公司宽带买的是200M,服务器出口测过也有100M 

    (2)线上天翼的数据库早就开了公网连接,因为开发经常要连查数据;所以不存在说要额外开端口,增加被攻击的风险。

    改成去内网数据库服务器跑的定时任务脚本,确实快了很多,从半个小时缩减到10分钟不到,同步速度提升70%

    #!/bin/bash
    ## 内网数据库同步到线上天翼数据库
    ## 线上脚本改到内网运行,提升速度
    ## update on 20210525 by ljy
    
    Dump='/usr/local/mysql/bin/mysqldump'
    
    local_ip='127.0.0.1'
    local_port=3306
    local_bak='/root/data_bakup/mysql_131'
    [ ! -d ${local_bak} ] && mkdir -p ${local_bak}
    
    LogFile='/root/data_bakup/mysql_131/bak.log'
    Begin=`date +"%Y年%m月%d日_%H:%M:%S"`
    
    echo "$Begin xxx正式数据库开始备份。。。" >> ${LogFile}
    
    local_user=
    local_pwd='xxx'
    db='数据库名'
    
    ## 换成公网天翼云 ip
    remote_ip=公网天翼云数据库ip
    remote_port=公网天翼云数据库端口
    remote_user=
    remote_pwd='xxx'
    
    export LANG=en_US.UTF-8
    Date=`date +%Y%m%d_%H%M`
    DumpFile=$Date.sql
    
    
    ### 1、备份内网数据库
    ${Dump} -u${local_user} -p${local_pwd} -h${local_ip} -P${local_port} ${db} > ${local_bak}/${db}_${DumpFile}
    
    ### 2、导入到线上mysql
    mysql -u${remote_user} -p${remote_pwd} -h${remote_ip} -P${remote_port} ${db} < ${local_bak}/${db}_${DumpFile}
    
    
    ### 3、写入到日志
    End=`date +"%Y年%m月%d日_%H:%M:%S"`
    echo "$End xx正式数据库同步完成。。。" >> ${LogFile}
    echo "############" >> ${LogFile}
    
    
    ### 4、定时删除备份的数据库
    find ${local_bak} -type f -mtime +1 -exec rm -f {} ;

     另外因为这个速度也快了,所以改成1天同步3次都不成问题。同步完之后,后台内容页当天发布的文章果然出来了。

  • 相关阅读:
    linux常用命令
    mysql 开发基础系列20 事务控制和锁定语句(上)
    sql server 性能调优之 资源等待 CXPACKET
    mysql 开发基础系列19 触发器
    mysql 开发基础系列18 存储过程和函数(下)
    mysql 开发基础系列17 存储过程和函数(上)
    sql server 性能调优之 资源等待PAGEIOLATCH
    mysql 开发基础系列16 视图
    mysql 开发基础系列15 索引的设计和使用
    sql server 性能调优之 当前用户请求分析 (1)
  • 原文地址:https://www.cnblogs.com/windysai/p/14811327.html
Copyright © 2020-2023  润新知