环境要求:

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语句:

  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文件,在文件最后添加:

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

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

  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文件,在文件最后添加:

  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 #同步的数据库
  8. p>5   完成以上配置之后,在机器A的mysql控制台中输入:</p>
  1. GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO ym@10.10.151.156 IDENTIFIED BY  'ym' ;

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

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

  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是同义词。

MySql 如何实现不同数据库同步【2个】的更多相关文章

  1. linux下mysql主从复制,实现数据库同步

    运行环境: 查看linux版本命令:lsb_release -a 主服务器:centos release 6.5 mysql 5.6.10-log  IP:172.17.200.25从服务器:cent ...

  2. MySQL中关于主从数据库同步延迟的问题解决

    MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以 ...

  3. MySQL主从数据库同步延迟问题解决(转)

    最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务 ...

  4. 数据库同步工具HKROnline SyncNavigator SQL Server互同步MySQL

    需要联系我QQ:786211180 HKROnline SyncNavigator 是一款专业的 SQL Server, MySQL 数据库同步软件.它为您提供一种简单智能的方式完成复杂的数据库数据同 ...

  5. mysql数据库同步

    mysql数据库同步  1.1. Master 设置步骤 配置 my.cnf 文件 确保主服务器主机上my.cnf文件的[mysqld]部分包括一个log-bin选项.该部分还应有一个server-i ...

  6. MySQL和MsSQL实时自动同步---SyncNavigator 数据库同步软件

    需要MySQL数据库支持的狐友们有福了,MySQL和MsSQL实时自动同步---SyncNavigator 数据库同步软件   使用SyncNavigator轻松实现数据库异地同步.断点续传.异构同步 ...

  7. 解决mysql 主从数据库同步不一致的方法

    接着上文 配置完Mysql 主从之后,在使用中可能会出现主从同步失败的情况. mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL ...

  8. 实现两个Mysql数据库同步

    一.     概述  MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步.主从模式.互相备份模式的功能.本文档主要阐述了如何在linux系 ...

  9. logstash-jdbc-input与mysql数据库同步

    大多数情况下我们的数据都存放在了数据库中,但是elasticsearch它有自己的索引库,那么如果我们在做搜索的是时候就需要将数据库中的数据同步到elasticsearch中,在这里我们使用logst ...

随机推荐

  1. jquery数据验证插件

    jquery数据验证插件(自制,简单,练手)   一:最近项目中js数据验证比较多,为了统一风格,移植复用,于是顺手封装了Jquery的插件. (function($) { var defaults ...

  2. C/C++基础知识总结——多态性

    1. 多态性的概述 1.1 多态是指同样的消息被不同类型的对象接收时导致不同的行为.所谓消息是指对垒的成员函数的调用,不同行为是指不同的实现. 1.2 多态的实现 (1) 实现角度讲多态可分为两类:编 ...

  3. C#做的颜色工具

    常常会用到绘制以及配色,每次看到 framework 里边的 KnowColor.xxx 我就一阵......到底啥颜色啊,干脆做一个一劳永逸的工具吧.功能包含: 可以实现枚举所有系统颜色 圆形.矩形 ...

  4. C++11标准后的C++阅读书目

    C++11标准后的C++阅读书目 投递人 itwriter 发布于 2013-09-25 19:44 评论(2) 有285人阅读  原文链接  [收藏]  « » 英文原文:C++ Reading L ...

  5. IOS7学习之路二(处理ios6到ios7后UITableView的两个显示问题)

    1.在ios6开发的项目,当用ios7的虚拟机显示的时候会出现UINavigationItem遮挡TableView的问题: 下面是对比显示效果: 我的处理方法是: 在UITableViewContr ...

  6. 激活phpstorm10.0.1

    注册时选择“License server”输入“http://idea.lanyus.com/”点击“OK”快速激活JetBrains系列产品

  7. Linux Wine with *.bat *.exe ( Photoshop and etc.. )

    Firtly all you need is to install wine on your computer. Mine is ubuntu 12.04 which is running KDE o ...

  8. DEV 打印gridcontrl

    private void PrintPreview(DevExpress.XtraPrinting.IPrintable gridControlPrint)         {             ...

  9. struts升级到最高版本后遇到的问题。关于actionmessage传递问题。

    Struts2升级到最新版本遇到的一些问题 首先是更换对应的jar,如asm.common.ongl.struts等等.更换后发现系统启动不了,按照网上的介绍,先后又更新了slf4j-log4j12- ...

  10. Linux:用at和crontab调度作业

    一.有2种作业调度方式 1.突发性的,就是只运行作业一次而不是定期运行,使用at命令. 例如在进程A运行一段时间后关闭该进程. 2.定期运行,就是每隔一定的周期运行一次,使用crontab命令. 如每 ...