mysql怎么同步的简单介绍

MYSQL怎么同步数据到ElasticSearch

先假设有主机 A 和 B ( Linux 系统),主机 A 的 IP 分别是 1.2.3.4 (当然,也可以是动态的),主机 B 的 IP 是 5.6.7.8 。两个主机都装上了 PHP+Mysql ,现在操作的是主机 A 上的资料,如果另外一个主机 B 想跟 A 的资料进行同步,应该怎么做呢?

创新互联专注于南华网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供南华营销型网站建设,南华网站制作、南华网页设计、南华网站官网定制、小程序定制开发服务,打造南华网络公司原创品牌,更为您提供南华网站排名全网营销落地服务。

OK,我们现在就动手。

首先,如果要想两个主机间的资料同步,一种方法就是主机 A 往主机 B 送资料,另外一种主法就是主机 B 到主机 A 上拿资料,因为 A 的 IP 是动态的(假设),所以我们就得从主机 A 往主机 B 送资料。

在主机 B 上创建一个 Mysql 账户。

# GRANT ALL ON test.* TO user@% IDENTIFIED BY "password"; //创建用户 user,可以从任何机器访问到主机 B 上的 test 数据库。

如果这里显示错误,先把 % 改为一个 IP ,然后再利用 phpMyAdmin 把 IP 改为 % ,测试无误后就可以写 php 程序。

?

$link=mysql_pconnect("localhost","user","password");

mysql_pconnect("localhost","user","password"); //连接本机(主机A)的数据库

mysql_select_db("test"); //选择数据库test

$re=mysql_query("select * from table order by id desc");

$num=mysql_numrows($re);

if (!empty($num)) {

$id=mysql_result($re,0,"id"); //获得本机table表的最大ID

}

mysql_close($link); //关闭与本机数据库的连接

$link=mysql_pconnect("5.6.7.8","test","test");

mysql_pconnect("5.6.7.8","test","test"); //连接主机B的数据库

mysql_select_db("test"); //选择数据库test,此数据库应该与主机A上test数据库的结构一样。

$re=mysql_query("select * from table order by id desc");

$num=mysql_numrows($re);

if (!empty($num)) {

$remote_id=mysql_result($re,0,"id"); //获得主机Btable表的最大ID

}

if ($id$remote_id) {

$result_id=$id-$remote_id; //如果主机A中table的最大ID大于主机B中table表的最大ID,说明两个

} 的资料不同

mysql_close($link); //关闭主机B的数据库连接

$link=mysql_pconnect("localhost","user","password");

mysql_pconnect("localhost","user","password");

mysql_select_db("test");

if (empty($result_id)) $result_id=0;

if (empty($remote_id)) $remote_id=0; //如果主机B中的table的最大ID为空(里面没有资料),那么就等0

$re=mysql_query("select * from table limit $remote_id,$result_id"); //取出主机A中table表与主机B中table表里不同的资料

$num=mysql_numrows($re);

if (!empty($num)) {

for ($i=0;$i$num;$i++) {

$test[$i]=mysql_result($re,$i,"test"); //把不同的资料放入一个数组里

}

}

mysql_close($link); //关闭主机A的数据库连接

$link=mysql_pconnect("5.6.7.8","user","password");

mysql_pconnect("5.6.7.8","user","pasword");

mysql_select_db("test");

for ($j=0;$j$i;$j++) { //这里的i等于在比较主机A与主机B上table表不同资料的数量

mysql_query("insert into table (test) values(\'$test[$j]\')");

}

mysql_close($link); //关闭主机B的数据库连接

?

这时就初步实现了 A 主机和 B 主机数据的同步,但现在还需要人手动每次去激活这个程序,有没有办法把它作为一个脚本一样的,放在 crontab 里面指定时间自动执行呢?

在安装 php 时会自动生一个叫 php 的可执行文件,一般在/你安装的 php 目录 /bin 下面,不过较底的版本好像没有,如果没有这个文件,你就得升级你的 php 。

#php -q test.php

php 原本是应用在网页应用的﹐因此它会送出 HTML 的 Header﹐但是在此我们是要将 php 用作 Shell Script﹐"-q" 就是表示不要送出 Header 的意思.

最后编辑 /etc/crontab 里的文件,加上下面这一句。

0 0 * * * root /home/httpd/html/test //每天晚上零点执/home/httpd/html/test文件(具体使用方法请查看cron的相关资料)

OK,到这里差不多就已完成 Mysql 数据的同步了,如果各位还有兴趣的话,可以想一个连编辑、删除都能同步的更好的办法。

MySQL同步工具如何使用

一、安装好MYSQL,建立所需数据库,停止所有的MYSQL服务器。

二、请把下面六行加入到每一个需要同步的MYSQL的my.ini文件中,其中backup_db填写你真实的需要同步的数据库,server-id代表服务器编号,要求每个服务器的编号不能相同,以1,2,3....等数字顺序排列:

server-id=1 #服务器编号.

log-bin=c:\mysqlback #同步事件的日志记录文件名.

binlog-do-db=backup_db #提供数据同步服务的数据库,多数据库用逗号分隔,最后不要用逗号结尾.

log-slave-updates

log-warnings

skip-name-resolve

三、如果是刚建立的空数据库可以忽略这个步骤,如果数据库已经使用过了且有数据了,请执行这个步骤:(手工拷贝主服务器的数据库到所有的辅服务器上覆盖backuk_db,也可以直接压缩mysql的DATA目录下的backup_db目录,然后更新到辅服务器上。以保证初始的数据库状态完全一致。)

四、打开MySQLSync.exe程序,每一台MYSQL服务器添加一条记录,把他们的root帐号密码添加进去。

五、启动所有的MYSQL服务器。

六、点开始监控按扭,看是否可以链接上所有的MYSQL服务器。

七、转到自动设置窗口,根据自已的需要设置MYSQL同步方式。

八、返回监控窗口,看同步是否正常。

一般slave监控正常时IO描述显示是的Waiting for...,有写入数据时显示Q........并且最后错误信息那里没有任何错误信息显示。

九、把MySQLSync_Agent考到每一台的mysql服务器上,运行安装服务.bat,会安装一个MySQLSync_Agent的服务。

十、配置MySQLSync_Agent\config.ini文件。设置MySQLSync_Agent的基本参数,设置后重启MySQLSync_Agent服务:

server: mysql服务器

user: mysql用户名

password: mysql密码

port: mysql端口号

agentport: 受控端工作端口号

backup_db: 需要备份的数据库名

backup_time: 备份间隔(以秒为单位)

backup_path: 备份相对路径

backup_delete: 删除多少天之前的备份文件

如何配置两个MySQL数据库之间的主从同步功能?

IP的设置:A主机 IP:10.10.0.119;Mask:255.255.0.0;B主机 IP:10.10.8.112;Mask:255.255.0.0

在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态。如果防火墙状态。

为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。最终以两台主机可以相互ping通为佳。

3.2 配置A主(master) B从(slave)模式;3.2.1 配置A 为master。

增加一个用户同步使用的帐号:

GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;

GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’。

赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。

增加一个数据库作为同步数据库:create database test;

创建一个表结构:create table mytest (username varchar(20),password varchar(20));

修改配置文件:修改A的/etc/my.cnf文件。

在my.cnf配置项中加入下面配置:

server-id = 1 #Server标识

log-bin

binlog-do-db=test #指定需要日志的数据库

重起数据库服务:

service mysqld restart

查看server-id:

show variable like ‘server_id’。

如何设置MySQL同步

 MySQL 提供了数据库的同步功能,这对我们实现数据库的冗灾、备份、恢复、负载均衡等都是有极大帮助的。本文描述了常见的同步设置方法。

一、准备服务器

由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。

本文中,我们假设主服务器(以下简称Master)和从服务器(以下简称Slave)的版本都是5.0.15,操作系统是Linux Ubuntu 5.0.x。

假设同步Master的主机名为:rep1,Slave主机名为:rep2,2个MySQL的basedir目录都是/usr/local/mysql,datadir都是:/usr/local/mysql/data。

二、设置同步服务器

1、设置同步Master

每个同步服务器都必须设定一个唯一的编号,否则同步就不能正常运行了。接下来开始修改 my.cnf,增加以下几行:

server-id = 1

log-bin

set-variable=binlog-ignore-db=mysql

然后在Master上增加一个账号专门用于同步,如下:

怎么实现两台服务器的mysql数据同步

这种架构一般用在以下三类场景

1. 备份多台 Server 的数据到一台如果按照数据切分方向来讲,那就是垂直切分。比如图 2,业务 A、B、C、D 是之前拆分好的业务,现在需要把这些拆分好的业务汇总起来备份,那这种需求也很适用于多源复制架构。实现方法我大概描述下:业务 A、B、C、D 分别位于 4 台 Server,每台 Server 分别有一个数据库来隔离前端的业务数据,那这样,在从库就能把四台业务的数据全部汇总起来,而不需要做额外的操作。那没有多源复制之前,要实现这类需求,只能在汇总机器上搭建多个 MySQL 实例,那这样势必会涉及到跨库关联的问题,不但性能急剧下降,管理多个实例也没有单台来的容易。

2. 用来聚合前端多个 Server 的分片数据。

同样,按照数据切分方向来讲,属于水平切分。比如图 3,按照年份拆分好的数据,要做一个汇总数据展现,那这种架构也非常合适。实现方法稍微复杂些:比如所有 Server 共享同一数据库和表,一般为了开发极端透明,前端配置有分库分表的中间件,比如爱可生的 DBLE。

3. 汇总并合并多个 Server 的数据

第三类和第一种场景类似。不一样的是不仅仅是数据需要汇总到目标端,还得合并这些数据,这就比第一种来的相对复杂些。比如图 4,那这样的需求,是不是也适合多源复制呢?答案是 YES。那具体怎么做呢?

当前名称:mysql怎么同步的简单介绍
路径分享:https://www.cdcxhl.com/article2/hjjpic.html

成都网站建设公司_创新互联,为您提供手机网站建设标签优化网页设计公司移动网站建设网站内链网站维护

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化