MYSQL数据库间同步数据
http://blog.csdn.net/swandy45/article/details/6982421
环境要求:
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语句:
- CREATE DATABASE backup_db;
- USE test;
- 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 打开A机器的mysql安装目录下的my.ini文件,在文件最后添加:
- server-id=1
- log-bin=c:\mysqlback #启动同步事件的日志记录文件
- binlog-do-db=test #提供数据同步服务的数据库
3 在机器B中建立一个和机器A结构相同的数据库,sql语句:
- CREATE DATABASE backup_db;
- USE test;
- 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;
注:机器A和B的数据库结构必须一致,否则无法构成同步
4 打开B机器的mysql安装目录下的my.ini文件,在文件最后添加:
- server-id=2
- master-host=10.10.151.166 #主机A的地址
- master-user=ym #主机A提供给B的用户,该用户中需要包括数据库test的权限
- master-password=ym #访问密码
- master-port=3306 #端口,主机的MYSQL端口
- master-connect-retry=60 #重试间隔60秒,当主从服务器连接意外断开时数据库每隔60秒进行一个重新连接
- replicate-do-db=test #同步的数据库
- p>5 完成以上配置之后,在机器A的mysql控制台中输入:</p>
- GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO ym@10.10.151.156 IDENTIFIED BY 'ym' ;
#这句是为让从服务器有足够的权限从主服务器是哪个接收二进制日志文件
6 重启机器A和B的mysql数据库,
- 在机器B的mysql控制台:
- Mysql>slave start;
- 如果想查看同步配置的情况,可以按如下输入:
- 机器A的mysql控制台:
- Mysql>show master status;
- 机器B的mysql控制台:
- 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数据库间同步数据的更多相关文章
- mysql数据库主从同步
环境: Mater: CentOS7.1 5.5.52-MariaDB 192.168.108.133 Slave: CentOS7.1 5.5.52-MariaDB 192.168. ...
- mysql数据库主从同步读写分离(一)主从同步
1.mysql数据库主从同步读写分离 1.1.主要解决的生产问题 1.2.原理 a.为什么需要读写分离? 一台服务器满足不了访问需要.数据的访问基本都是2-8原则. b.怎么做? 不往从服务器去写了 ...
- 使用sqoop将MySQL数据库中的数据导入Hbase
使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-con ...
- MySQL数据库主从同步延迟分析及解决方案
一.MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog: 2. 主库生成一个 lo ...
- Linux下MySQL数据库主从同步配置
说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...
- MySQL数据库主从同步实战过程
Linux系统MySQL数据库主从同步实战过程 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...
- OpenLayers添加点【php请求MySQL数据库返回GeoJSON数据】
php请求MySQL数据库返回GeoJSON数据的实现方法请参见: http://www.cnblogs.com/marost/p/6234514.html OpenLayers[v3.19.1-di ...
- EF 连接MySQL 数据库 保存中文数据后乱码问题
EF 连接MySQL 数据库 保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...
- mysql数据库千万级别数据的查询优化和分页测试
原文地址:原创 mysql数据库千万级别数据的查询优化和分页测试作者:于堡舰 本文为本人最近利用几个小时才分析总结出的原创文章,希望大家转载,但是要注明出处 http://blog.sina.com. ...
随机推荐
- Java 的集合框架
Java集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的. 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一 ...
- [C++]VS与第三方工具下载
名称:Qt 5.1.1 (商业版与开放源码许可GPL/LGPL) 说明:Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架 下载:http://www.qt.io/downl ...
- python 使用__slots__
正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: >>> class Studen ...
- hdu 5533 Dancing Stars on Me
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5533 Dancing Stars on Me Time Limit: 2000/1000 MS (Ja ...
- (二)Bootstrap CSS 概览
在这一章中,我们将讲解 Bootstrap 底层结构的关键部分,包括我们让 web 开发变得更好.更快.更强壮的最佳实践. HTML 5 文档类型(Doctype) Bootstrap 使用了一些 H ...
- Java NIO 备忘
$.backlog:可以把它简单理解为一个 listening socket 的请求连接队列的限制.当队列中的连接请求达到队列限制时,kernel 会拒绝信的连接请求.只有当应用程序通过 accept ...
- 分布式模式之broker模式
转自:http://blog.chinaunix.net/uid-23093301-id-90459.html 问题来源: 创建一个游戏系统,其将运行在互联网的环境中.客户端通过WWW服务或特定的客户 ...
- java 学习基础学习单词及java关键词
在JAVA学习中我们难免会犯一些逻辑错误,语法错误,和一些运行错误,对于英语不好的人,就的记下下面的2常用单词,有助于我们提高在使用软件编写代码的速度和代码调试,能更便捷的找出错误,知道1中的保溜关键 ...
- http://oncenote.com/2015/09/16/Security-2-HTTPS2/ (轉載)
上一篇<iOS安全系列之一:HTTPS>被CocoaChina转载,还顺便上了下头条: 打造安全的App!iOS安全系列之 HTTPS,但那篇文章只是介绍了比较偏应用的初级知识,对于想要深 ...
- java System 常用方法
一.System.currentTimeMillis() 获取系统当前时间,毫秒 二.System.getProperty Java.version Java 运行时环境版本 java.vendor ...