环境要求:
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语句:
2 打开A机器的mysql安装目录下的my.ini文件,在文件最后添加:
3 在机器B中建立一个和机器A结构相同的数据库,sql语句:
注:机器A和B的数据库结构必须一致,否则无法构成同步
4 打开B机器的mysql安装目录下的my.ini文件,在文件最后添加:
#这句是为让从服务器有足够的权限从主服务器是哪个接收二进制日志文件
6 重启机器A和B的mysql数据库,
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数据库之间实现数据同步,以确保数据的一致性和冗余。本教程将详细介绍如何在两台运行相同系统(FreeBSD 5.4)和软件(Apache 2.0.55、PHP 4.4.0、MySQL 4.1.15)的服务器上配置...
【MySQL数据库同步】 在当前数字化时代,MySQL数据库的同步至关重要,因为它们承载着大量关键业务数据。MySQL是一个广泛应用的开源关系型数据库管理系统,尤其在中小型企业及网站中颇为流行,因其小巧、快速、成本...
【标题】:“从sqlserver同步数据到Mysql数据库”是一个典型的跨数据库系统数据迁移的案例。在信息技术领域,数据迁移是常见的操作,特别是在企业级应用中,可能由于业务需求、性能优化或者系统升级等原因,需要将...
以上就是使用Java实现两个MySQL数据库同步的主要步骤和涉及的技术点。在实际开发中,你可能还需要关注性能优化、安全性、可扩展性等问题。通过这种方式,你可以构建一个可靠的数据库同步系统,保证数据的一致性,...
在IT行业中,数据库同步是一个关键话题,特别是在分布式系统和企业级应用中,多个数据库的同步是确保数据一致性、完整性和高可用性的重要手段。本文将深入探讨如何使用Java来实现多个数据库之间的数据同步。 首先,...
还有复制工具,帮助用户在多个MySQL数据库间同步数据,实现数据备份和高可用性设置。 数据转换工具是另一个重要的类别,它们帮助用户将数据在不同格式之间转换,以适应MySQL或者从MySQL导出。例如,可以将.dbf文件...
两个MySQL数据库之间同步表结构及索引模式
MySQL数据库同步是指在多个 MySQL 服务器之间实现数据的实时同步,以确保数据的一致性和最新性。这种同步机制可以应用于多种场景,例如数据备份、负载均衡、数据分析等。 在本文中,我们将介绍如何在两台 MySQL ...
在MySQL数据库间进行增量同步,我们关注的是捕获和应用自上次同步以来新插入或更新的记录。 下面是一个使用Kettle进行MySQL增量同步的详细步骤教程: 1. **创建数据库连接**: - 在Kettle的Spoon界面中,创建新的...
MySQL 数据库同步复制是一种强大的技术,它允许两个或多个数据库实例之间保持数据一致性。这种功能在高可用性、灾难恢复和负载均衡场景中至关重要。在MySQL中,同步复制主要通过主从模式和双机互备模式来实现。 1. ...
本文档详细阐述了如何将SCADA系统的数据同步到MySQL这样的实时数据库中。数据同步工具的设计主要考虑了工业生产控制中不同数据库管理系统的需求,以及对数据管理和分析的重要性。该工具的核心功能是将SCADA系统的...
标题"同步两台mysql数据库"指的是在两个或多个MySQL服务器之间进行数据复制和同步,确保数据的一致性。传统的MySQL同步通常涉及主从复制,即一个主数据库负责写操作,多个从库进行读操作并接收主库的更新。然而,这...
2. 数据同步:实时同步 Mysql 数据库和 Oracle 数据库的数据。 3. 数据集成:集成 Mysql 数据库和 Oracle 数据库的数据,实现数据的一致性。 Informatica 连接 Mysql 数据库可以实现数据的实时同步和集成,提高数据...
在IT行业中,数据库同步是一项常见的需求,特别是在分布式系统或者多数据库环境里。Spring Boot作为Java领域的一个热门微服务框架,提供了强大的定时任务功能,能够帮助我们实现不同数据库间的数据同步,比如Oracle...
MySQL 数据库主从同步是指将主数据库的数据实时同步到从数据库中,以实现数据的高可用性和负载均衡。下面是 MySQL 数据库主从同步的配置步骤和相关知识点: 一、主数据库 master 配置 1. 检查 MySQL 版本:使用...
压缩包中的“同步数据文档”应该提供了详细的步骤指南和可能遇到的问题及解决方案。 总之,MSSQL到MySQL的跨数据库数据同步是一个涉及多个步骤和组件的复杂过程,需要对两种数据库系统有深入理解,并且能够妥善处理...
MySQL数据库同步和主主同步是数据库管理中的重要概念,尤其对于需要实时数据共享或高可用性的系统至关重要。这里我们详细探讨这两个主题,并介绍如何通过特定的脚本来简化这一过程。 首先,**数据库同步**指的是将...
在IT行业中,数据库同步是一个常见的需求,特别是在多数据库环境下的数据整合和迁移。本文将深入探讨MySQL到Oracle的数据同步过程,以及如何在同步过程中修改MySQL数据表的标识。 首先,我们要理解MySQL和Oracle是...
在IT行业中,数据库同步是一个常见的需求,特别是在分布式系统或者数据迁移场景下。本项目主要探讨了如何使用SpringBoot框架结合MySQL和Oracle两个不同的数据库系统,实现数据的实时或定时同步,尤其是在数据量庞大...