奇葩的同步

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

  • 奇葩点:

    • 不同节点上A库中的a表同步给B库中的b表
  • 姿势:
    • 建立目录来确定循环变量,目录代表库名,下面的文件代表名,同步不用MMM或MS自身带的功能实现,用脚本方式实现
    • 每天情况格式化后发送邮件
  • 目录结构

    • [[email protected] 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 [[email protected] 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 [[email protected] 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\n" "$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" [email protected] < "/tmp/qiao.txt"
        26     mail -s "check sync" [email protected] < "/tmp/qiao.txt"
        27     mail -s "check sync" [email protected] < "/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
时间: 2024-11-09 02:54:00

奇葩的同步的相关文章

ASP.NET WebAPi(selfhost)之文件同步或异步上传

前言 前面我们讲过利用AngularJs上传到WebAPi中进行处理,同时我们在MVC系列中讲过文件上传,本文结合MVC+WebAPi来进行文件的同步或者异步上传,顺便回顾下css和js,MVC作为客户端,而WebAPi利用不依赖于IIS的selfhost模式作为服务端来接收客户端的文件且其过程用Ajax来实现,下面我们一起来看看. 同步上传 多余的话不用讲,我们直接看页面. <div class="container"> <div> @if (ViewBag.

阻塞非阻塞,同步异步四种I/O方式

举一个去书店买书的例子吧: 阻塞: 你去书店买书,到柜台告诉店员,需要买一本APUE,然后一直在柜台等.(阻塞) 店员拿到书以后交给你. 非阻塞: 你去书店买书,到柜台告诉店员A,需要买一本APUE.但是你不在柜台等了,而是出去遛弯.(非阻塞) 隔几分钟回去柜台问一次:“我的书来了没有?”“我的书来了没有?” 终于有一次书来了,你就拿着书走了 I/O多路复用(poll/select/epoll): 去书店买书,告诉店员自己要买APUE,然后拿到一个号.每个顾客都是这样. 店员每拿一本书出来就叫号

haproxy+nginx+tomcat+memcache实现动静分离、会话同步集群

一.实验说明 haproxy在前端做负载均衡调度,后端实现动静分离 静态资源server为nginx 动态内容使用nginx&tomcat做app server,集成于单机,两台 使用两台memcache服务器做高可用session缓存,实现app server宕机时会话不中断 以上组合使用实现业务.session.session缓存均为高可用的集群. 二.实验准备 haproxy server:192.168.0.168 nginx server(静态):192.168.0.68 nginx+

mysql半同步复制问题排查

1.问题背景      默认情况下,线上的mysql复制都是异步复制,因此在极端情况下,主备切换时,会有一定的概率备库比主库数据少,因此切换后,我们会通过工具进行回滚回补,确保数据不丢失.半同步复制则要求主库执行每一个事务,都要求至少一个备库成功接收后,才真正执行完成,因此可以保持主备库的强一致性.为了确保主备库数据强一致,减少数据丢失,尝试在生产环境中开启mysql的复制的半同步(semi-sync)特性.实际操作过程中,发现大部分实例半同步都可以正常运行,但有少部分实例始终开不起来(只能以普

MySQL的诡异同步问题-重复执行一条relay-log

MySQL的诡异同步问题 近期遇到一个诡异的MySQL同步问题,经过多方分析和定位后发现居然是由于备份引发的,非常的奇葩,特此记录一下整个问题的分析和定位过程. 现象 同事扩容的一台slave死活追不上同步,具体的现象是SBM=0,但是Exec_Master_Log_Pos执行的位置和Read_Master_Log_Pos完全对不上,且服务器本身CPU和IO都消耗的非常厉害. ——total-cpu-usage---- -dsk/total- -net/total- ---paging-- --

linux 下同步异步,阻塞非阻塞的一些想法

同步异步 阻塞非阻塞 今天和小伙伴讨论了这个问题,网上的说法有很多种,我按照自己的思路总结一边. 一句话总结区别: 同步异步关注的是事件发生时你的行为. 阻塞非阻塞关注的是的等待事件的状态. 下面看具体的分析 同步异步 同步: 在事件发生前,你的状态是时刻关注此事件,等待此事件给你返回结果. 例子: 烧水,同步就是你时刻关注着它,一段时间后,烧水壶冒烟了,你看见了,你知道水已经烧好. 那么在这段时间内你需要一直看着它是否冒烟. 异步: 在事件发生前,你并不关心此事件,而是自己去忙自己的,事件完成

“一键”搞定用户同步,LDAP在永洪BI中的应用

前情提要 公司有很多IT系统,例如:企业邮箱.github.jenkins.grafna.zabbix.***.HR系统.用友.金蝶.文件系统.aws.aliyun.cmdb.jira.confluence-- 在新员工入职时,要做的事情有这些: 要根据员工的职位,确认开通IT系统的权限:在对应的IT系统中添加账户,设置密码:各种渠道通知到新员工,IT系统权限和IT系统访问地址.在老员工离职时,上面的事又要做一遍. 在正常工作时,很多员工因各种奇葩原因忘记密码,来找你重置.修改.在员工升职.调换

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia

rsync+inotify-tools实时同步

rsync概述: rsync是类unix系统下的数据镜像备份工具--remote sync.一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH.rsync主机同步 Rsync(remote sync)是UNIX及类UNIX平台下一款神奇的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率.你可以使用它进行本地数据或远程数据的复制,Rsync可以使用SSH安全隧道进行加密数