zoukankan      html  css  js  c++  java
  • MYSQL不同数据库不同机器之间的同步——协议

    下载网站:www.SyncNavigator.CN 
     客服QQ1793040
    ----------------------------------------------------------


    关于HKROnline SyncNavigator 注册机价格的问题

     

    HKROnline SyncNavigator 8.4.1 非破解版 注册机 授权激活教程
     

     

    最近一直在研究数据库同步的问题,在网上查了很多资料,也请教了很多人,找到了一种通过快照复制的方法。研究了一番后发现之前就是用的这个方法,效果不是很好,果断放弃。经过了一番寻觅和他人指点,最后从一位热心网友那里得知一款很好用的软件—— SyncNavigator。

    好东西就要拿出来跟大家分享,所以今天向大家介绍一下这款软件,及其一些使用方法。下面先看看它有什么强大的功能吧!

    SyncNavigator的基本功能:

    自动同步数据/定时同步数据
    无论是实时同步/24小时不间断同步,还是根据计划任务(每小时/每日/每周/等)定时自动同步都能完全胜任。

    完整支持 Microsoft SQL Server
    完整支持 Microsoft SQL Server 2000 2005 2008 数据库类型。并能在不同数据库版本之间相互同步数据。

    支持 MySQL 4.1 以上版本
    支持 MySQL 4.1 5.0 5.1 5.4 5.5。并能在不同数据库版本之间相互同步数据。

    无人值守和故障自动恢复
    当数据库故障或网络故障以后,无需人工干预(或操作)自动恢复同步并确保数据完全准确,可靠。

    同构数据库同步/异构数据库同步
    SQL Server to SQL Server, MySQL to MySQL, SQL Server to MySQL 等都能轻松实现。

    断点续传和增量同步
    当同步完成(或中断)后,再次同步时能继续上一次的位置增量同步,避免每次都需要从头开始的问题。

    环境要求:

    Windows 操作系统

    需要Mysql 3.23.15以后的版本。

    假设数据库A为主机,数据库B为从机(A向B提供同步服务,即B中的数据来自A)

    A机器:IP=10.10.151.166

    B机器:IP=10.10.151.156

    下面看单向同步的配置步骤:

    1         在机器A中建立一个新的数据库,sql语句:

    [sql] view plain copy
    1. CREATE DATABASE backup_db;
    2. USE test;
    3. CREATE TABLE `backup_table` (
    4.  `id` int(11) NOT NULL auto_increment,
    5.  `name` varchar(20) character set utf8 NOT NULL,
    6.  `sex` varchar(2) character set utf8 NOT NULL,
    7.  PRIMARY KEY  (`id`)
    8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    2     打开A机器的mysql安装目录下的my.ini文件,在文件最后添加:

    [plain] view plain copy
    1. server-id=1
    2. log-bin=c:mysqlback #启动同步事件的日志记录文件
    3. binlog-do-db=test #提供数据同步服务的数据库

    3      在机器B中建立一个和机器A结构相同的数据库,sql语句:

    [plain] view plain copy
    1. CREATE DATABASE backup_db;
    2. USE test;
    3. CREATE TABLE `backup_table` (
    4.  `id` int(11) NOT NULL auto_increment,
    5.  `name` varchar(20) character set utf8 NOT NULL,
    6.  `sex` varchar(2) character set utf8 NOT NULL,
    7.  PRIMARY KEY  (`id`)
    8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    注:机器A和B的数据库结构必须一致,否则无法构成同步

    4       打开B机器的mysql安装目录下的my.ini文件,在文件最后添加:

    [plain] view plain copy
    1. server-id=2
    2. master-host=10.10.151.166 #主机A的地址
    3. master-user=ym #主机A提供给B的用户,该用户中需要包括数据库test的权限
    4. master-password=ym #访问密码
    5. master-port=3306 #端口,主机的MYSQL端口
    6. master-connect-retry=60 #重试间隔60秒,当主从服务器连接意外断开时数据库每隔60秒进行一个重新连接
    7. replicate-do-db=test #同步的数据库

    5 完成以上配置之后,在机器A的mysql控制台中输入:

    [plain] view plain copy
    1. GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO ym@10.10.151.156 IDENTIFIED BY  ‘ym’ ;

    #这句是为让从服务器有足够的权限从主服务器是哪个接收二进制日志文件

    6    重启机器A和B的mysql数据库,

    [plain] view plain copy
    1. 在机器B的mysql控制台:
    2.  Mysql>slave start;
    3. 如果想查看同步配置的情况,可以按如下输入:
    4. 机器A的mysql控制台:
    5. Mysql>show master status;
    6. 机器B的mysql控制台:
    7. Mysql>show slave status;

    7         在机器A中test数据库中的backup_table表中插入一些数据,查看机器B中test数据库中的backup_table表应该同步实现了数据的改动。

    下面是双向的数据同步配置步骤:

    1还是上面使用的机器A和机器B,这是B是主机,A是从机,保持上面的配置不要改在机器A 的mysql安装目录下的my.ini文件最后添加:
    master-host=10.10.151.156 #主机B的地址
    master-user=ym #主机B提供给A的用户,该用户中需要包括数据库test的权限
    master-password=ym #访问密码
    master-port=3306 #端口,主机的MYSQL端口
    master-connect-retry=60 #重试间隔60秒当主从服务器连接意外断开时数据库每隔60秒进行一个重新连接
    replicate-do-db=test #同步的数据库
    在机器B的mysql安装目录下的my.ini文件最后添加
    log-bin=c:mysqlback #启动同步事件的日志记录文件
    binlog-do-db=test #提供数据同步服务的数据库

    2 机器B的mysql控制台输入:
    GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO ym@10.10.151.166 IDENTIFIED BY  ‘ym’ ;
    3 重启机器A和机器B的mysql数据库
    在机器B中test数据库中的backup_table表中插入一些数据,查看机器A中test数据库中的backup_table表应该同步实现了数据的改动。但不会导致循环
    注:实现mysql数据库的数据同步,须将俩台windows操作系统的windows防火墙关闭
    Mysql 数据同步的原理:
    Mysql的数据同步,在Mysql官方网站文档上,叫replication字面意思是重作,这个很准确的表明了Mysql数据库操作的实质,是重作同样的操作,以保持主数 据库服务器没事master与从属数据库服务器slave之间的数据保持一致。
    从MySQL3.23.15以后,Mysql支持单向的异步复制。也就是说,1台Mysql服务器充当Master(主库),1台或多台Mysql服务器充当Slaves(从库),数据从 Master向Slaves进行异步复制。注意,这种复制是异步的,有别于Mysql的同步复制实现(这种实现称做Mysql集群,Mysql Cluster)。
    当主库有更新的时候,主库会把更新操作的SQL写入二进制日志(Bin log它记录了所有更新了数据或者已经潜在更新了数据的所有语句),并维护一个二进制日志 文件的索引,以便于日志文件轮回(Rotate)。在从库启动异步复制的时候,从库会开启两个I/O线程,其中一个线程连接主库,要求主库把二进制日志的变化部 分传给从库,并把传回的日志写入本地磁盘。另一个线程则负责读取本地写入的二进制日志,并在本地执行,以反映出这种变化保证主从数据库之间的数据同步。 较老的版本在复制的时候只启用一个I/O线程,实现这两部分的功能。这种方法是利用了Mysql数据库主(master)和从(slave)异步复制功能,来实现数据库 之间的同步。
    Windows系统中,Mysql安装目录下my.ini文件中:
    log-bin=c:mysqlback;
    这一句表示数据库的二进制日志文件都存放在C盘根目录下,并且以mysqlback为文件名,以.000001这样的序号为为文件的扩展名,每一个binlog文件默认是 1GB,超过了会自动换到以.000002为文件扩展名的的文件,索引文件mysqlback.index文件记录了所有mysqlback的文件名。当然也可以删除这些二进制日志 文件:
    使用下面的两个命令
    PURGE {MASTER | BINARY} LOGS TO ‘log_name’ //log_name不会被清除,删除这个序号以//前的
    PURGE {MASTER | BINARY} LOGS BEFORE ‘date’ //date不会被清除,删除这个日期以前的
    删除之前所有的二进制日志文件,并重新生成新的二进制日志文件后缀从.000001开始。
    但是,当如果有一个正在运行的从属服务器,该服务器当前正在读取正在试图删除的日志文件时则该删除语句不会起作用,而是会失败,并伴随一个错误。不过, 如果从属服务器是停止的,并且碰巧清理了其想要读取的日志文件,则从属服务器启动后便不能复制。当从属服务器正在复制时,删除语句可以安全运行,不需要 停止它们。
    在完成了主服务器A的my.ini文件的配置之后,重启主服务器A,从现在起对主服务器A数据库的增加、删除和修改操作都会记录在二进制日志文件中(查询操作不 做记录)。但也可以指定从服务器从哪里开始和主服务器进行同步,在从服务器上执行下面sql操作:
    首先输入命令:slave stop;
    然后输入:Mysql > change master to
    —>master_host=’master_host_name’,#主机IP地址
    —>master_user=’replication_user_name’,
    —>master_password=’replication_password’,
    —>master_log_file=’recorded_log_file_name’,
    —>master_log_pos=’recorded_log_position’;
    最后输入命令:slave start;
    这里,把上面的recorded_log_file_name改为想从哪个二进制日志文件开始同步的文件名,而recorded_log_position改为从该文件的第几条记录开始同 步。
    先输入slave stop;指令,再输入上述指令,最后输入slave start;指令
    当数据同步产生错误时,会在mysql安装目录下生成*.err日志文件,同时同步线程会退出。
    purge binary logs to ‘mysql-bin.000003′;
    PURGE {MASTER | BINARY} LOGS TO ‘log_name’
    PURGE {MASTER | BINARY} LOGS BEFORE ‘date’
    用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。
    例如:
    PURGE MASTER LOGS TO ‘mysql-bin.010’;
    PURGE MASTER LOGS BEFORE ‘2008-06-22 13:00:00’;
    清除3天前的 binlog
    PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
    BEFORE变量的date自变量可以为’YYYY-MM-DD hh:mm:ss’格式。MASTER和BINARY是同义词。

  • 相关阅读:
    Cobalt Strike使用的一些技巧
    中小团队选择一款合适的测试用例管理工具
    Angular 富文本编辑之路的探索
    一个研发团队是如何坚持7年技术分享的?
    Ubuntu远程连接显示错误Network error Connection refused解决方法
    一篇文章教会你使用HTML5加载音频和视频
    一篇文章带你了解CSS3按钮知识
    一篇文章带你了解HTML格式化元素
    一篇文章带你了解CSS3 3D 转换知识
    一篇文章带你了解SVG 蒙版(Mask)
  • 原文地址:https://www.cnblogs.com/syncnavigator/p/10193528.html
Copyright © 2011-2022 走看看