精华内容
下载资源
问答
  • 服务器数据同步

    2017-10-16 16:00:39
    两台服务器之间的数据同步 两台服务器之间的数据同步 两台服务器之间的数据同步
  • MySQL数据库跨服务器数据同步

    千次阅读 2019-03-25 12:27:17
    不同mysql数据库之间的跨服务器数据同步

    1.背景介绍

    最近公司项目要求与开源项目Zentao做数据对接,因为改动开源项目风险较大,采用将Zentao数据库的相关表与本地数据库同步的方案。由我测试方案的可行性。
    mysql版本:5.7.20.
    本地数据库A(作为Zentao数据库),本地数据库B,本地程序C;本地为Windows环境。

    2.方案探索

    方案1

    项目经理的意思是在A中写触发器,表中数据变化时将ID发给C,由C在A中查询变化的数据,写入B。过程中需要安装mysql-udf-http插件(参考:https://www.2cto.com/database/201801/713571.html)。
    但是经过查询发现问题:该插件只支持到MySQL5.5X并且只能在Linux环境安装,冲突,放弃该方案。

    方案2

    问了技术经理的想法:

    在A中用触发器监控数据的变化,然后调用存储过程将数据推送给B ,用BDlink进行数据库跨库。

    查询资料,DBlink是oracle进行跨库访问的方法,SQL Server 可以用linkServer。在mysql5.0版本以上,可以采用FEDERATED引擎(默认引擎为InnoDB)。(参考:https://blog.csdn.net/langkeziju/article/details/50462943)
    使用:建表时指定引擎为FEDERATED 和远程数据库的表,即这条语句

    ENGINE=FEDERATED CONNECTION=‘mysql://user:password@ip:port/test1/test_table’;
    如下:

    CREATE TABLE federated_table (  
        id     int(20) NOT NULL auto_increment,  
        name   varchar(32) NOT NULL default '',  
        age  varchar(4) NOT NULL default '0',  
    		sts char(1)	NOT NULL default '0', 
    		office VARCHAR(64) NOT NULL default '0', 
    		telephone VARCHAR(15) NOT NULL default '0', 
        PRIMARY KEY  (id),  
        KEY name (name),  
        KEY age (age),  
    		KEY sts (sts), 
    		KEY telephone (telephone),  
    		KEY office (office)
    		
    ) ENGINE=FEDERATED CONNECTION='mysql://user:password@ip:port/test1/test_table';  
    

    前提条件是可以访问远程数据库,配置好读写权限,mysql开启FEDERATED 引擎。
    建完后本地数据与远程数据一样,进行curd操作都可同步。

    个人理解:建立的连接是把远程数据映射到本地的表里面,数据实际还是存储在远程数据库上,只是开了一个本地读写的“客户端”。我在federated_table 写了触发器,在B中修改时正常运行,在A中修改数据时,B中表数据变化但并未触发。

    既然通过FEDERATED 可以将数据同步过来,那么可以在B中建立A的映射。
    因为映射表在程序C中并没有实际意义,需要将映射表的某些字段与B实际业务表的数据进行同步,可以采用 程序进行操作 或者 利用触发器和存储过程。

    触发器示例:

    show TRIGGERS ;#查看所有触发器
    drop TRIGGER updateFromFed; #删除触发器,建立后需要删除才能修改
    
    delimiter $$ #修改语句结束标志为$$
    create TRIGGER insertFromFederated AFTER INSERT 
    	on federated_table for each ROW
    begin #状态=1执行插入操作
    				DECLARE de  VARCHAR(128);
    				set de = CONCAT(IFNULL(new.name,''),'-',IFNULL(new.age,''),'-',IFNULL(new.office,''));
    				if new.sts="1" THEN
    					INSERT into local1(id,name,description,sts) 
    										values (new.id,new.name,de,new.sts);
    					INSERT into local2(id,name,office,sts) 
    										values (new.id,de,new.office,new.sts);
    				END IF;
     END $$
    delimiter ;
    

    参考:https://blog.csdn.net/qq_33556185/article/details/77745449

    存储过程示例:

    #mysql 下面的例子在把select into 的ID写死的时候设置参数值为空,但是在使用传进来的ID作为参数时设置参数值不为空。
    show create procedure test;#查看
    CALL  test();#调用
    drop procedure  if exists test;#删除
    
    delimiter $$
    create PROCEDURE test()
    begin 
    	DECLARE id VARCHAR(32);
        SET id='8302';
    	DECLARE v_name VARCHAR(128)
    	SELECT local2.name INTO v_name from local2 where id = 5;
    	SELECT id,v_name;
    #INSERT into local2(id,name,office,sts) VALUES (id,des,'办公室','8');
    end $$
    delimiter ; 
    

    参考:http://www.shouce.ren/api/view/a/11695

    放弃方案2

    在初期确定的是使用方案2,但是在与用户及DBA讨论的实话发现了新的问题:

    1.FEDERATED 引擎可用,但是在目标服务器发生迁移的情况下需要重新修改服务器地址,重新建表,维护比较麻烦;
    2.Zentao数据库的修改不受控制,能同步它的状态但是不能控制与B数据库的修改冲突。

    3.最终确立

    为了解决上面的问题2,与用户约定在同一时间只有一方进行修改,通过状态位控制。
    为了解决问题1,决定采用kettle进行ETL操作,或者在本地程序C中直接写入A/B两个数据库,并通过定时器定时同步A中的数据。
    由于采用kettle涉及后期产品运维的问题,比较倾向于使用后一种方法。

    展开全文
  • 导读:最近有个项目要做多服务器数据同步,我设计的方案是使用RDS做主数据库,各服务器上mysql做从数据库,同步RDS上的数据。读写分离,所有数据写全部写到RDS里,数据读取从本地mysql中读,这样通过同步就能保证...
    导读:最近有个项目要做多服务器数据同步,我设计的方案是使用RDS做主数据库,各服务器上mysql做从数据库,同步RDS上的数据。读写分离,所有数据写全部写到RDS里,数据读取从本地mysql中读,这样通过同步就能保证各个服务器上读取的数据一致了。
    最近有个项目要做多服务器数据同步,我设计的方案是使用RDS做主数据库,各服务器上mysql做从数据库,同步RDS上的数据。读写分离,所有数据写全部写到RDS里,数据读取从本地mysql中读,这样通过同步就能保证各个服务器上读取的数据一致了。具体的配置步骤入下:

    1、进入本地服务器,先关闭mysql数据库

    service mysql stop

    2、修改/ect/my.cnf中的配置信息

    server-id = 10001 #保持id唯一

    #GTID:

    gtid_mode=on

    enforce_gtid_consistency=on

    #binlog

    log_bin= /alidata/log/mysql/slave-binlog.log

    log-slave-updates=1

    binlog_format=mixed

    #relay log

    skip_slave_start=1

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    expire_logs_days = 10

    max_binlog_size = 100M

    replicate-do-db = test #需要同步的数据库

    replicate-ignore-db = mysql #不需要同步的数据库

    replicate-ignore-db = information_schema #不需要同步的数据库

    replicate-ignore-db = performance_schema #不需要同步的数据库

    slave-skip-errors = 1032 #因为同步时有个1032错误导致同步终止,所以我就跳过了这个错误

    3、重启本地mysql数据库

    service mysql start

    4、链接RDS数据库,将RDS中的数据库导入到本地数据库中,

    (1)、先锁RDS表,禁止写入操作

    flush tables with read lock;

    (2)、从RDS导出:mysqldump -uroot -ptest -hmasterhost.mysql.rds.aliyuncs.com> /tmp/test.sql

    (3)、再导入到本地: mysql -uroot -p test < /tmp/test.sql ,记得需要先建库test

    5、进入本地数据库设定主库信息

    mysql>change master to master_host = 'masterhost.mysql.rds.aliyuncs.com', master_port = 3306, master_user = 'catest', master_password='masterpassword', master_auto_position = 1;

    6、start slave

    7、show slave status \G

    查看系统返回信息中 Slave_IO_Running 和 Slave_SQL_Running 的状态是否为 Yes,如下所示。

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    两个都是yes 表示成功

    8、 所有的服务器配置完毕后,将RDS上的表解锁

    unlock tables;

    展开全文
  • mysql多台服务器数据同步

    千次阅读 2010-09-15 09:51:00
    mysql多台服务器数据同步

    mysql多台服务器数据同步

     

    /**
    *@ Date         2010.09.13
    *@ Author       狼

    *@ Email        1317983530@qq.com
    *@ QQ           1317983530

    *@博客           http://hi.baidu.com/1317983530/home
    */

    这两天在搞mysql 数据同步问题,这配置很繁琐。我这里用了两台机子做测试, 都是我本地的机子.分别是
    主服务器 192.168.0.118
    从服务器 192.168.0.187


    1. 首先在 主从服务器分别创建数据库 backup_db和backup_table表作为测试
    CREATE TABLE `backup_table` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(20) character set utf8 NOT NULL,
      `sex` varchar(2) character set utf8 NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    注意主从服务器数据库结构必须一致。否则出错.

    2.在住服务器的mysql按照目录找到my.ini文件,打开这个文件在文件末尾加上如下代码
    #主机器的my.cnf(或my.ini)中应该配置:

    server-id=1 #表示主服务器
    log-bin=e:/mysqlback/ #同步事件的日志记录文件
    log-bin-index =e:/mysqlback/master-log-bin.index
    log-error =e:/mysqlback/master-error.log #错误日志
    binlog-do-db=backup_db #提供数据同步服务的数据库(这里是刚才创建的测试数据库)

    3. 配置完主服务器后 打开从服务器的my.cnf(或my.ini)文件 在文件末尾加入 如下代码

    server-id=2 #表示从服务器
    master-host=192.168.0.118 #主机A的地址
    master-user=testuser #主机A提供给B的用户,该用户中需要包括数据库backup_db的权限
    master-password=testpwd #访问密码
    master-port=3306 #端口,主机的MYSQL端口
    master-connect-retry=60 #重试间隔60秒
    replicate-do-db=backup_db #同步的数据库

    4. 完成后,然后在主从服务器的cmd 里面打开mysql控制台  授权从服务器的testuser用户来主服务器同步资源的权限
    主服务器执行 GRANT FILE ON *.* TO testuser@'192.168.0.187' IDENTIFIED BY 'testpwd'
    从服务器执行 GRANT FILE ON *.* TO testuser@'192.168.0.118' IDENTIFIED BY 'testpwd'

    5. 重启主从服务器的mysql
    从服务器 mysql>slave start ;

    主服务器执行 mysql>show master status;   结果如下
    mysql> show master status;
    +---------+----------+--------------+------------------+
    | File    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +---------+----------+--------------+------------------+
    | .000002 |      613 | backup_db    |                  |
    +---------+----------+--------------+------------------+
    1 row in set (0.00 sec)

    从服务器
    mysql>start slave;
    mysql> show slave status/G;
    执行结果
    *************************** 1. row ***************************
    Slave_IO_State:
    Master_Host: 192.168.0.118
    Master_User: testuser
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_ mysql-bin.000016
    Read_Master_Log_Pos: 173
    Relay_Log_ mysqld-relay-bin.000002
    Relay_Log_Pos: 98
    Relay_Master_Log_ mysql-bin.000016
    Slave_IO_Running: No
    Slave_SQL_Running:Yes
    ...

    执行结果 Slave_IO_Running 和 Slave_SQL_Running 必须为yes 如果你发现Slave_IO_Running: No 那么可能是权限问题
    解决步骤:
    mysql> show master status;
    +------------------+--------------------+----------------+------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+-------------------+-----------------+------------------+
    | mysql-bin.000001 | 98 | | |
    +------------------+--------------------+-----------------+------------------+
    mysql> slave stop;
    mysql> change master to Master_Log_File='mysql-bin.000001',Master_Log_Pos=98;
    mysql> slave start;

    或者打开主从服务器的 phpmyadmin 找到testuser 用户 设置它们的权限 然后再分别重启,再到从服务器中mysql> show slave status/G;
    发现
    Slave_IO_Running: Yes
    Slave_SQL_Running:Yes

    这时你在 主服务器的phpmyadmin 找到 backup_db 的 backup_table表 插入一条记录, 在到从服务器中看看这张表,发现多了一条记录 ,成功了!!!

    展开全文
  • 有什么作用1.2:rsync源服务器的关系二:Rsync 实验2.1:rsync命令集锦2.2:实验环境2.3: 实验拓扑图2.3: 实验过程2.3.1: 配置源服务器2.3.2: 客户机同步源服务的数据三: Rsync配合inotify工具实现触发式传输同步3.1...

    一:Rsync 理论

    1.1:什么是rsync?有什么作用

    • rsync,全称为:Remote Sync(远程同步),是一款开源的快速增量备份工具,可以在不同主机之间镜像同步整个目录树
    • 还支持本地复制,增量备份、保持连接和权限,或者与其他SSH,rsync主机同步
    • 采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用

    mark

    1.2:rsync源服务器的关系

    • mark

    二:Rsync 实验

    2.1:rsync命令集锦

    • 1、启动rsync服务:rsync --daemon

    • 2、关闭rsync服务:kill $(cat /var/run/rsyncd.pid)

    • 3、同步本地文件系统数据:rsync [选项] 原始位置 目标位置

      例如:
      rsync /etc/fstab /opt '//同步本机的fstab文件到opt目录'
      rsync -rl /boot/grub /opt	'//同步本机的grub目录到opt目录'
      '//如果想要在/opt目录下也创建一个boot目录,那么命令需要为:rsync -R rl /boot/grub /opt '
      常用选项:
      -a:归档模式,递归并保留对象属性,等同于 -rlptgoD
      -r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项
      -l 保留软链接
      -p 保持文件权限
      -v:显示同步过程的详细(verbose)信息
      -z:在传输文件时进行压缩(compress)
      -H:保留硬连接文件
      -A:保留ACL属性信息
      --delete:删除"目标""源"没有的文件
      --checksum:根据对象的校验和来决定是否跳过文件
      --progress 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等
      路径的格式可以是本地路径,也可以是使用user@host:path或user@host::path的远程路径,如果主机和path路径之间使用单个冒号隔开,表示使用的是远程shell通信方式,而使用双冒号隔开的则表示的是连接rsync daemon
      
    • 4、源下行同步—客户机"拉" (恢复数据)(使用客户端将rsync服务器下的wwwroot共享模块下的内容同步到本地的/opt目录下(共享模块下的真实共享路径需要对other用户具有 ‘r’ 权限))

      • (1):命令格式用户名@主机地址::共享模块名

        例如:[root@client ~]# rsync -avz lisi@192.168.100.140::wwwroot /opt

      • (2):命令格式:rsync://用户名@主机地址/共享模块名

        例如:[root@client ~]# rsync -avz rsync://lisi@192.168.100.140/wwwroot /opt

      5、客户端上行同步—客户机"推" (备份数据)

      • 命令格式

        [root@client ~ ]# rsync -avz /var/www/html lisi@192.168.100.140::wwwroot

        “把站点目录上行往源去备份,备份到wwwroot模块”

      6、rsync通过ssh的方式同步

      • 命令与平常的scp命令类似

      • 例如:将本地/opt/abc.txt上传到目标服务器/opt目录:

        rsync -avz /opt/abc.txt lisi@192.168.100.140:/opt

      • 例如:将目标服务器/opt/qwe.txt文件下载到本地/opt目录下:

        rsync -avz lisi@192.168.100.140:/opt/qwe.txt /opt

      7、/etcrsync.conf介绍

      • vim /etc/rsyncd.conf
         
        motd file = /etc/rsyncd.motd    #设置服务器信息提示文件,在该文件中编写提示信息
         
        transfer logging = yes    #开启rsync数据传输日志功能
         
        log file = /var/log/rsyncd.log    #设置日志文件名,可通过log format参数设置日志格式
         
        pid file = /var/run/rsyncd.log    #设置rsync进程号保存文件名称
         
        lock file = /var/run/rsync.lock    #设置锁文件名称
         
        port = 873    #设置服务器监听的端口号,默认是873
         
        address = 192.168.0.230    #设置本服务器所监听网卡接口的ip地址
         
        uid = nobody    #设置进行数据传输时所使用的帐户名或ID号,默认使用nobody
         
        gid = nobody    #设置进行数据传输时所使用的组名或GID号,默认使用nobody
         
        #若为yes, rsync会首先进行chroot设置,将根映射在下面的path参数路径下,对客户端而言,系统的根就是path参数指定的路径。但这样做需要root权限,并且在同步符号连接资料时只会同步名称,不会同步内容。
         
        use chroot = no 
         
        read only = yes    #是否允许客户端上传数据,yes表示不允许
         
        max connections =10    #设置并发连接数,0表示无限制
         
        [common]    #自定义模块名,rsync通过模块定义同步的目录,可定义多个
         
        comment = web content    #定义注释说明字串
         
        path = /common    #同步目录的真是路径通过path指定
         
        ignore errors    #忽略一些IO错误
         
        #exclude = test/    #exclude指定common目录下某个目录可以不同步数据
         
        auth users = tom, jerry    #设置允许连接服务器的账户,此账户可以是系统中不存在的用户
         
        secrets file = /etc/rysncd.secrets    #密码验证文件名,该文件权限要求为只读,建议为600,仅在设置auth users后有效
         
        hosts allow = 192.168.0.0/255.255.255.0   #设置哪些主机可以同步数据,多ip和网段之间使用空格分隔
         
        hosts deny=*    #除了hosts allow定义的主机外,拒绝其他所有
         
        list = false    #客户端请求显示模块列表时,本模块名称是否显示,默认为true
        
        

    2.2:实验环境

    • VMware软件
    主机名 IP地址 安装服务 系统版本
    source 192.168.100.140 rsync,httpd centos7.6
    client 192.168.100.150 rsync,inotify-tools

    2.3: 实验拓扑图

    • mark

    2.3: 实验过程

    2.3.1: 配置源服务器

    • 1.安装rsync服务
      [root@source ~]# rpm -qa | grep rsync
      rsync-3.1.2-4.el7.x86_64
      
      2.修改配置文件
      [root@source ~]# vim /etc/rsyncd.conf
      uid = nobody
      gid = nobody
      use chroot = yes				'//禁锢在源目录'
      address=192.168.100.140			'//监听地址,源地址'
      port 873						'//监听端口号'
      log file= /var/log/rsyncd.log	'//日志文件位置'
      pid file= /var/run/rsyncd.pid	'//存放进程ID的文件位置'
      hosts allow 192.168.100.0/24	'//允许访问的客户机地址'
      ......
      [wwwroot]						'//共享模块名称'
      path = /var/www/html			'//源目录的实际路径'
      comment = www.kgc.com
      read only = no					'//是否只读'					
      dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2	'//同步时不在压缩的文件类型'
      auth users = backuper			'//授权账户'
      secrets file = /etc/rsyncd_users.db							'//存放账户信息的数据文件'
      
      3.创建用户密码文件
      [root@source ~]# vim /etc/rsyncd_users.db					'//创建存放账户信息的数据文件'
      backuper:123456												'//采用“用户名:密码”的记录格式,每行一个用户记录独立的账号数据,不依赖于系统账号'
      [root@source ~]# chmod 600 /etc/rsyncd_users.db 			'//给数据文件设置权限'
      
      4.创建共享目录,这里选择apache的站点目录
      [root@source ~]# yum install -y httpd
      
      5.启动rsync服务并查看端口
      [root@source ~]# rsync --daemon
      [root@source ~]# netstat -ntap | grep rsync
      tcp        0      0 192.168.100.140:873     0.0.0.0:*               L 10413/rsync         
      [root@source ~]# kill 10413
      [root@source ~]# netstat -ntap | grep rsync
      [root@source ~]# rsync --daemon
      [root@source ~]# netstat -ntap | grep rsync
      tcp        0      0 192.168.100.140:873     0.0.0.0:*               L 10437/rsync         
      6.共享目录下创建文件,共享给客户机
      [root@source ~]# cd /var/www/html
      [root@source html]# vim index.html
      [root@source html]# cp index.html  web.html
      [root@source html]# iptables -F
      [root@source html]# setenforce 0
      

    2.3.2: 客户机同步源服务的数据

    • 1.关闭防火墙
      [root@client ~]# iptables -F
      [root@client ~]# setenforce 0
      
      2.同步数据
      '第一种方法把140的源下的wwwroot模块共享到客户机的/opt下'
      [root@client ~]# rsync -avz backuper@192.168.100.140::wwwroot /opt				
      Password:
      [root@client ~]# ls /opt
      index.html  web.html
      [root@client opt]# rm -ef *.html
      "第二种方法和上面语句功能一样,只是语句结构不同"
      [root@client opt]# rsync -avz rsync://backuper@192.168.100.140/wwwroot /opt		
      Password:
      
      3.创建免密同步且客户机同步的目录多余文件删除
      [root@client opt]# vim /etc/server.pass
      [root@client opt]# chmod 600 /etc/server.pass 
      [root@client opt]# rsync -avz --delete --password-file=/etc/server.pass backuper@192.168.100.140::wwwroot /opt/
      [root@client opt]# ls
      index.html  web.html
      

    三: Rsync配合inotify工具实现触发式传输同步

    3.1: rsync实现同步的优劣

    • rsync的缺点

    执行备份的时间固定,延迟明细,实时性差;

    当同步源长期不变化时,密集的定期任务是不必要的

    • rysnc的优点

    一旦同步源出现变化,立即启用备份;

    只要同步源不变化,则不执行备份

    3.2: Inotify的介绍

    • Inotify是一个Linux内核机制,它可以监控文件系统的操作,比如读取、写入、创建等。
    • Inotify反应灵敏,用法非常简单,并且比cron任务的繁忙轮询高效
    • 从版本 2.6.13 开始提供;
    • 可以监控文件系统的变化情况,并作出通知响应;
    • 辅助软件:inotify-tools

    3.3: 实时同步实验

    3.3.1: 源服务器配置

    • 1.修改rsync配置文件,添加
      [root@source html]# vi /etc/rsyncd.conf 
      read only = no '//改为no,确保客户机有可读写共享模块的权限'
      
      2.重启服务
      [root@source html]# kill `cat /var/run/rsyncd.pid`	'//关闭rsync服务'
      [root@source html]# netstat -ntap |grep rsync
      [root@source html]# rsync --daemon	'//开启rsync服务'
      [root@source html]# netstat -ntap |grep rsync
      tcp        0      0 192.168.233.131:873     0.0.0.0:*               LISTEN      88302/rsync         
      [root@source html]# chmod 777 /var/www/html		"给共享目录777的权限"
      

    3.3.2: 客户机服务器配置

    • 1.修改内核文件
      [root@client opt]# cat /proc/sys/fs/inotify/max_queued_events 	'//监控队列大小'
      16384	
      [root@client opt]# cat /proc/sys/fs/inotify/max_user_instances	'//最多监控实例数'
      128	
      [root@client opt]# cat /proc/sys/fs/inotify/max_user_watches 	'//每个实例最多监控文件数'
      8192
      [root@client opt]# vi /etc/sysctl.conf
      [root@client opt]# sysctl -p									"使内核文件,生效"
      fs.inotify.max_queued_events = 32768
      fs.inotify.max_user_instances = 1024
      fs.inotify.max_user_watches = 1048576
      
      2.上传压缩包finalshell压缩包
      [root@client opt]# mount.cifs //192.168.100.140/qq-Download  /mnt			"远程挂载的目录里有finalshell远程工具"
      [root@client opt]# cd /mnt
      
      3.客户端安装inotify-tools辅助工具
      [root@client mnt]# tar zxf inotify-tools-3.14.tar.gz -C /opt
      [root@client mnt]# cd /opt/inotify-tools-3.14/
      [root@client inotify-tools-3.14]# yum install gcc gcc-c++ -y
      [root@client inotify-tools-3.14]# ./configure 
      [root@client inotify-tools-3.14]# make && make install
      
      4.重新打开一个终端,执行监控
      [root@client ~]# inotifywait -mrq -e modify,create,move,delete  /var/www/html	'//运行持续监控监控'
      inotifywait:用于持续监控,实时输出结果		"一般用wait"
      inotifywatch:用于短期监控,任务完成后再出结果
      
      5.客户机编辑脚本监控共享目录变化并启动,方便管理
      [root@client ~]# vim /opt/inotify.sh 			"新开一个客户端创建"
      #!/bin/bash
      INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib,move,delete /var/www/html/"
      RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.100.140::wwwroot/"
      
      $INOTIFY_CMD | while read DIRECTORY EVENT FILE
      do
          if [ $(pgrep rsync | wc -l) -le 0 ] ; then
              $RSYNC_CMD
      #       echo "${FILE} was rsynced" >>/opt/inotify_rsync.log
      
          fi
      done
      
      [root@client ~]# chmod 755 /opt/inotify.sh 
      [root@client ~]# chmod 777 /var/www/html
      [root@client ~]# chmod +x /opt/inotify.sh 
      [root@client ~]# cd /opt
      [root@client opt]# ./inotify.sh 	'//执行脚本进行监控'
      
      6.重新打开终端,测试rsync上传同步
      [root@client html]# touch 456.txt
      [root@client html]# ls
      123.txt  456.txt
      [root@source html]# ls
      123.txt  456.txt
      [root@client html]# rm -rf 123.txt 
      [root@client html]# ls
      456.txt
      [root@source html]# ls
      456.txt
      
      '//查看刚刚运行的脚本监控'
      rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]
      '//发现会有这个报错,但是文件是正常传过去的,这里的这个报错我没有解决掉,如果有朋友解决了可以私信我或者评论告诉我,多谢!'
      
    展开全文
  • 1.手机客户端与远程服务器数据同步; 2.一个服务器多个客户端; 3.手机不联网可以修改新增本地数据,联网后把数据变动同步到服务器; 4.联网后可以把服务器的数据变动同步到客户端。 二、分析 1.因为是手机...
  • 游戏服务器 数据同步方案

    千次阅读 2016-12-26 15:26:59
    游戏数据同步方案   首先我们介绍实时对战手游中最难解决的技术问题——弱网络下的数据同步问题。  通过对玩家的游戏数据进行观察,发现玩家的游戏环境存在很大差异,不同玩家会使用不同的2G/3G/4G/...
  • 网站镜像服务器数据同步方法

    千次阅读 2010-01-20 09:26:00
    网站镜像服务器数据同步方法 1.介绍 现在的网站随着访问量的增加,单一服务器无法承担巨大的访问量,有没有什么方便快捷的方式解决这个问题呢,答案是”有”! 比如建立服务器群,进行均衡负载. 但是如果要解决像电信...
  • http://jingyan.baidu.com/article/fdffd1f83bc72bf3e88ca149.html Linux下rsync的安装与配置远程服务器数据同步
  • rsync实现服务器数据同步备份

    千次阅读 2018-08-10 11:26:51
    rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。 rsync 包括如下的一些特性: ...
  • 公司最近window服务器各种磁盘告警,都是老机器了,一时半会也没有新机器来扩容,于是我就想把MySQL的每日全量文件备份到Linux新机器上(别问为啥是...由于我要实现的是备份,代表着我不仅仅要把数据同步到Linux上...
  • 前端web服务器数据同步方案

    千次阅读 2015-11-24 13:49:01
    概述: 网站采用了web和mysql数据库...在web2的windows服务器上安装GoodSync软件,利用其双向同步特性进行数据同步 软件配置可参考下图: 每两小时同步一次,可修改成10分钟或更快的频率
  • 服务器数据同步问题

    千次阅读 2016-12-31 21:43:31
    服务器并发的操作同一个数据库的同一张表。 有如下一张表: /* Table: APP_TASK */ TASKNO VARCHAR2(22) not null, TASK_TYPE VARCHAR2(2) not null, EXECUTE_TIME DATE, PARMAS_XML VARCHAR2...
  • [root@master yum.repos.d]# yum install httpd rsync -y
  • 首先,保证两个服务器上的Mysql数据库的uuid不一样,可查看安装目录下的data/auto.conf. 在主从数据库中创建一样的数据库,如test。  在主服务器的配置文件my.ini下配置如下选项: log_bin=mysql-bin server_id...
  • 错误详情:svn: E155009: Failed to run the WC DB work queue associated with '/Users/mining/project/android', work item 9632 (file-install ruifeng_chcv/settings.gradle ...进入linux服务器下对应的项目文件夹
  • 使用bind实现主从DNS服务器数据同步

    千次阅读 2018-09-06 14:31:54
     Linux中通常使用bind来实现DNS服务器的架设,bind软件由isc(www.isc.org)维护。在yum仓库中可以找到软件,配置好yum源,直接使用命令yum install bind就可以安装。当前bind的稳定版本为bind9,bind的服务名称为...
  • 数据量比较大的时候,我们需要在本地存储数据,这样只要从服务器上获取最新的数据就可以了。 以前开发的过程中走了许多弯路,现在可以这么做。 1.数据库表中添加TimeStamp列(假设列名为ts) 2.客户端首次获取...
  • Oracle 快照及 dblink使用 (两台服务器数据同步) --名词说明:源——被同步的数据库-- 目的——要同步到的数据库/*一、创建dblink:*/--1、在目的数据库上,创建dblindrop database link dblink_anson;...
  • 服务器数据同步

    2005-07-22 17:05:00
    而当应用布署到多台集群的应用服务器上时,各个应用服务器都有可能同时修改更新数据,当某一台应用服务器修改了数据,此时,只废除了本应用服务器相应的缓存数据,而其它的集群服务器上相应缓存没有被废除。...
  • 【2008-03-05】昨天跟同事试验了mysql的数据同步,通过网上搜集资料,总算配置成功。留一总结方便自己查阅。 环境配置操作系统:linuxMySQL:5.14主服务器A IP:192.168.1.2(假设)从服务器B IP:192.168.1.3(假设...
  • Android端采用HTTP和服务器进行通信,请问下怎么保持Android端数据服务器同步呢?只能通过不断的定时请求吗?有没有其他方式?
  • 背景: ...3,服务器A处于内网,服务器B处于外网,网段不同能否实现数据同步? 4,可否只同步部分表的数据,比如只同步生产记录这张表? 之前没做过这方面的工作,望大家指点一二,不胜感激!
  • 需求来源: A服务器(centos 64):192....现在需要将A服务器上tools目录下的内容同步到B电脑。步骤如下; 一、安装服务器端rsync yum -y install rsync。安装成功后,通过rmp -ql rsync-3.0.6-4.el5_7.1,可查看安装到
  • 说明:server 2008系统 SQL SERVER 2008环境, 这个触发器运行了半个多月一直没有...链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "没有活动事务。"。 消息 7391,级别 16,状态 2,过程 Trigger_ToY
  • 源——被同步的数据库; 目的——要同步到的数据库; 一、创建dblink: 1、在目的数据库上,创建dblink: -- Drop existing database link drop database link DLINKMYTEST; -- Create database link create ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,047
精华内容 8,018
关键字:

服务器数据同步