详细描述:mysql中有两个数据库A和B,现需要实现A和B的同步,如A中的一个表插入一组Values,B中的对应的表也实现同步插入更新,update,delet类似用触发器能实现吗,或者有更好的解决方案 希望有相关经验的朋友给予指点,感谢不尽

解决方案 »

  1.   

    把相应代码改成MYSQL的>>>>>>soft_wsx>>>>>>
    --数据备份与还原>>同步备用服务器
    --1、完全备份主数据库
    --2、使用带SANDBY子句的RESTORE DATABASE语句从主数据库的完全备份中还原生成备用数据库
    --3、创建作业,使用BACKUP LOG定时对主数据库时行日志备份
    --4、创建作业,使用带STANDBY子句的RESTORE LOG语句定时从主数据库的日志备份中恢复数据到备用数据库
    --5、主数据库不可用时,使用带RECOVERY子句的RESTORE LOG语句使备用数据库升级为主数据库
    ----具体代码及说明如下
    ---->>首先、创建一个淙用的数据库(主数据库)
    create database db_test_primary
    on
    (
       name=db_test_primary_data,
       filename='d:\db_test_primary_data.mdf')
    log on
    (
        name='db_test_primary_log',
        filename='d:\db_test_primary_log.ldf'
    )
    go--在主数据库上创建表
    create TABLE db_test_primary.dbo.db_test_primary1(id int)
    insert db_test_primary.dbo.db_test_primary1 select top 1000 ID from dbo.sysobjects
    go
    --对主数据库进行备份
    backup database db_test_primary
      to disk='d:\db_test_primary_data.bak'
      with format
    go--通过主数据库备份文件创建备用数据库(演示主数据库与这个备用数据库之间的同步)
    restore database db_test_second
      from disk='d:\db_test_primary_data.bak'
      with replace,
      standby='d:\db_test_primary_bak.ldf',
      move 'db_test_primary_data' to 'd:\db_test_second_data.mdf',
      move 'db_test_primary_log' to 'd:\db_test_second_log.ldf'
      
    --启动SQL AGENT服务(需要通过作业定时将主数据库同步到备用数据库)
    exec master.dbo.xp_cmdshell 'net start sqlserveragent',no_output
    go--创建主服务数据库与备用服务器数据库之间同步的作业
    declare @jobid uniqueidentifier
    exec msdb.dbo.sp_add_job
          @job_id=@jobid output,
          @job_name=N'数据同步'
          
    --创建同步处理步骤
    exec msdb.dbo.sp_add_jobstep
         @job_id=@jobid,
         @step_name=N'数据同步',
         @subsystem='TSQL',
         @command=N'
              --主数据库中进行日志备份
              backup log db_test_primary
                to disk=''d:\test_log_primary.bak''
                with format
                
                --备用数据中还原主数据库的日志备份(应用主数据库中的最新变化)
                --注:实际应该对主数据库备份与备用数据库的还原作业应该分别在主服务器和备用服务器上建立,
                    --并且备份文件应该放在主服务器和备用服务器都能访问的共享目录中
               restore log db_test_second
                from disk=''d:\test_log_primary.bak''
                with standby=''d:\test_log.ldf''',
          @retry_attempts=5,
          @retry_interval=5
    --创建调度
    exec msdb.dbo.sp_add_jobschedule
      @job_id=@jobid,
      @name='时间安排',
      @freq_TYPE=4,
      @freq_interval=1,
      @freq_subday_type=0x4,
      @freq_subday_interval=1
          
    --添加目录服务器
    exec msdb.dbo.sp_add_jobserver
      @job_ID=@jobid,
      @server_name=N'(local)'
    go
    --通过上述处理,主数据库与备用数据库之间的同步关系已经设置完成
    --下面开始测试是否能实现同步
    create table db_test_primary.dbo.db_test_primary3(id int)
    go
    insert db_test_primary.dbo.db_test_primary3 select top 5000 id from dbo.sysobjects
    waitfor delay '00:01:30'
    go--查询一下备用数据库,看看同步是否成功select * from db_test_second.dbo.db_test_primary3
    drop table db_test_primary.dbo.db_test_primary3
    --最后删除测试环境
    drop database msdb.dbo.sp_delete_job
      @job_name=N'数据同步'