• 奇葩的同步


    数据库同步与检测,3个HA节点和2个MS节点间进行部分库中的部分表同步

    • 奇葩点:
      • 不同节点上A库中的a表同步给B库中的b表
    • 姿势:
      • 建立目录来确定循环变量,目录代表库名,下面的文件代表名,同步不用MMM或MS自身带的功能实现,用脚本方式实现
      • 每天情况格式化后发送邮件
    • 目录结构
      • [root@zhengaonet-db03 chuanqihome_web]# tree /script/
        /script/
        |-- CheckSync.sh
        |-- chuanqihome_web
        |   |-- tb_ad_click_ex_info.sh
        |   |-- tb_ad_view_ex_info.sh
        |   |-- tb_game_download_detail_info.sh
        |   |-- tb_news_click_comments_report.sh
        |   |-- tb_news_frontpagead.sh
        |   |-- tb_news_lists.sh
        |   |-- tb_room_info.sh
        |   |-- tb_services_info.sh
        |   `-- tb_user_login_info.sh
        |-- etl.sh
        |-- pay_order
        |   |-- order_info.sh
        |   |-- order_state.sh
        |   |-- pay_order.sh
        |   |-- tb_gm_appid_area_info.sh
        |   `-- tb_gm_detail_info.sh
        `-- union_operate
            |-- tb_gm_appid_area_info.sh
            |-- tb_gm_detail_info.sh
            `-- tb_user_account.sh
        
        3 directories, 19 files
    • 实现:
      • 同步脚本,N多个,方法相同
        •  1 [root@zhengaonet-db03 union_operate]# vim tb_gm_detail_info.sh 
           2 #!/bin/bash
           3 # sync for full table data
           4 
           5 gettime=`date +%Y%m%d%H%M%S`
           6 logfile='/etllog/tb_gm_detail_info.log'
           7 filename1=`echo "/etl25/chuanqihome_web/${gettime}_tb_gm_detail_info.txt"`
           8 
           9 Get_data(){
          10         mysql  -h192.168.1.25 -uroot -p'xxxxxxxxxxx' -Dunion_operate -e "select * from tb_gm_detail_info  into outfile '${filename1}' FIELDS TERMINATED BY '###$$$' LINE
          11 S TERMINATED BY '$$$###';" &> $logfile
          12 }
          13 Clean_data(){
          14         mysql -h192.168.1.26 -uroot -p'xxxxxxxxxx' -Dunion_operate  -e "delete  from  tb_gm_detail_info " &> $logfile
          15 }
          16 Sync_data(){
          17         mysql -h192.168.1.26 -uroot -p'xxxxxxxxxx' -e "load data local infile '"${filename1}"' replace  into table union_operate.tb_gm_detail_info FIELDS TERMINATED BY
          18  '###$$$' LINES TERMINATED BY '$$$###';"  &> $logfile
          19 }
          20 
          21 Get_data
          22 if [ -e $filename1 ];then
          23         Clean_data
          24         sleep 1
          25         Sync_data || echo "clean error" >> $logfile
          26 fi
      • 监测脚本
        •  1 [root@zhengaonet-db03 script]# cat CheckSync.sh 
           2 #!/bin/bash
           3 # description: check syncing
           4 # Author: qiaogy
           5 
           6 check_sync(){
           7     HOST=('192.168.1.25' '192.168.1.26')
           8     for host in ${HOST[*]};do
           9         echo "============================================================================================"
          10         DATABASE=`find /script/ -mindepth 1 -maxdepth 1 -type d | awk -F"/" '{print $3}'`
          11         for database in $DATABASE;do
          12             TABLE=`find /script/$database -mindepth 1 -maxdepth 1 -name "*.sh" -exec basename {} ;|cut -d. -f1`
          13             for table in $TABLE;do
          14                 number=`mysql  -h$host -uroot -p'xxxxxxxxxxx' -D$database -Ne "SELECT COUNT(*) FROM $table" 2>/dev/null`
          15                 if [ $? -eq 0 ];then
          16                     printf "%-60s:%30s
          " "$host:$database.$table" "$number"
          17                 else
          18                     echo "$database $table are not same in all host"
          19                 fi
          20             done
          21         done
          22     done    
          23 }
          24 send_mail(){
          25     mail -s "check sync" xionghanqing01@zhenaonet.com < "/tmp/qiao.txt"
          26     mail -s "check sync" qiaoguanyu@zhenaonet.com < "/tmp/qiao.txt"
          27     mail -s "check sync" guanyu.qiao@qq.com < "/tmp/qiao.txt"
          28 }
          29 
          30 # main
          31 route add default gw 192.168.1.1 &> /dev/null
          32 check_sync > /tmp/qiao.txt
          33 send_mail
  • 相关阅读:
    阿里云centos7.2自己安装mysql5.7远程不能访问解决方案
    Delphi中的线程类
    简单说说Delphi中线程的释放
    delphi杀进程的两种方式
    delphi备份恢复剪切板(使用了GlobalLock API函数和CopyMemory)
    Delphi 7下使用Log4Delphi 0.8日志组件
    Demo+在Linux下运行(CentOS7+dotnetcore sdk)
    反射
    解析表达式树
    JS面向对象编程之:封装、继承、多态
  • 原文地址:https://www.cnblogs.com/qiaogy/p/5841432.html
Copyright © 2020-2023  润新知