两台数据库服务器 如何进行数据同步操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两台数据库服务器 如何进行数据同步操作相关的知识,希望对你有一定的参考价值。

有两台SQL SERVER 服务器 如何能实现数据的同步更新
求每种方法的详细步骤

这个要根据不同情况具体分析,有几种方案参考:

    数据库A和数据库B是建立在两台独立的数据库服务器上,那么采用dblink方式是一种可行的方式,存在两个数据同步过程:

    一、数据库A正常运行的时候需要将数据同步到备用库即数据库B;

    二、数据库A不正常的时候启用数据库B,在数据库A恢复正常之前的数据更新都发生在数据库B,那么需要将数据库B的数据同步给数据库A。

    第一种方式:前提是数据库A和数据库B本地网是24小时互通的同时对数据同步实时性有比较高的要求,那么可以建立DBLINK,在两个库都建触发器,不管当前在哪个库发生数据更新的时候实时同步数据到目标数据库;

    第二种方式:如果数据同步的实时性要求不高,则可以通过定制存储过程的方式(给两个库的数据表加时间戳或者更新标志,)定时同步数据;

    第三种方式:通过给两个数据库的数据表加更新标志字段,以第一种方式为主以满足实时性的要求,以第二种方式为辅弥补可能存在的触发器执行更新未成功的情况。

    以上的方案都是从数据层面所做的处理,对于数据实时同步还是会存在一定的风险,那么双机热备应该说是最好的选择了。

参考技术A 利用SQLServer的同步复制技术,可以实现

---------------

以下转一些文章
http://hi.baidu.com/bluelight68/blog/item/37b99b59777a2cd69d820410.html
http://www.zicn.net/rizhi/rizhiny.asp?bid=157&id=16本回答被提问者采纳

使用两台服务器实现数据库的主从同步与分离

使用背景:在网联网不断发展的时代,人们对数据的使用也不断的增加,对于用户的请求不断的增加,数据库的读写操作就特别大,就会导致服务器受不了那么多用户的请求和对数据的操作,导致服务器负荷,相应的用户的等待时间就会特别长,给用户的体验特别差,而主从同步就很好的解决的这种并发的问题。


主从同步:简单来说就是使用两台服务器,分别处理用户的读和写的操作,从而实现了读写分离。由于从服务器同步的主服务器上的数据,所以主从同步极大的保证了数据的安全。


基本原理:主从同步,分为两台服务器

         如图:Master为主服务器,Slave为从服务器



                   1. 主服务器(Master)对数据的操作,对事务更新完成之前,mysql将以串行的形式将日志以2进制的形式写入到Binary log日志中(即二进制日志事件),在事务写完以后,Master通知存储引擎,提交事务.

         

                 2.提交事务后,Slave服务器,将Master的Binary log日志拷贝到自己的Relay log中(即Slave开启I/O thread 读取Master中的Binary log,然后写入到Slave中的Relay log 中)

        

              3.SOL thread线程将Relay log中的日志读取,重做数据,达到将Master中的数据改变同步到Slave中.


所以:两台服务器,Master提供给用户写(增,删,该)的操作,Slave供公户读(查询)的操作,从而大大的减轻了服务器的负荷,解决了高并发的问题。

                 

 



那么接下来让我们看看如何使用两台服务器搭建mysql的主从同步吧(ps:今天只介绍如何在服务器上搭建主从同步的实现).


在开始之前,需要两台服务器,安装好linux系统,并且安装好mysql 5.1以上的版本.(最好安装有vim编辑器)


那么这些环境准备好了,就开始搭建吧


1.使用SSH连接你的两台服务器(这里我用的两台为Master和Slave的服务器)



使用两台服务器实现数据库的主从同步与分离(一)


2.修改Master和Slave上的mysql的配置文件


   a.修改主服务器(Master)的配置文件

       输入命令:vim /etc/my.cnf  (mysql的默认安装位置)

     会出现以下提示:

     

使用两台服务器实现数据库的主从同步与分离(一)


选择e,进行编辑.


按i键

在mysqld下添加以下配置:

   server-id=1

   log-bin=master-bin

   log-bin-index=master-bin.index


使用两台服务器实现数据库的主从同步与分离(一)


如图(看图上具体细节),wq保存并退出,这里主服务器(Master)的配置就好了。


然后重载mysql配置

输入:service mysqld restart

使用两台服务器实现数据库的主从同步与分离(一)


接下来我们看看是否成功配置

在Master中登录mysql

命令:mysql -uroot -p


输入密码后进入mysql界面,输入show master status,如图:


使用两台服务器实现数据库的主从同步与分离(一)

 





b.修改从服务器的配置(Slave)

  连接Slave服务器,vim打开mysql的配置文件

  原理一样,在mysqld添加下配置


 server-id=2

 relay-log=slave-relay-bin

 relay-log-index=slave-relay-bin.index


如图:

使用两台服务器实现数据库的主从同步与分离(一)

保存退出


然后重启mysql,这里介绍另一种重启mysql的方法

输入命令:/etc/init.d/mysql stop 停止

                   /etc/init.d/mysql start  启动



登录mysql验证配置是否有误


使用两台服务器实现数据库的主从同步与分离(一)


说明,配置没啥问题。


3.开始主从连接  

  a.在主服务器中添加从服务器连接所用到的用户


  在master中创建用户mengxin(ps:这是笔者用的名字)

  create user mengxin



 再授予mengxin 主从访问权限

grant replication slave on *.* to 'mengxin'@'从服务器的ip' identified by '连接时需要的用户密码(自己设置)';


然后输入:flush privileges

刷新更新权限信息


 b.来到从服务器(Slave)进行连接


   登录到从服务器的mysql

   输入命令:

 change master to master_host='主机ip',master_port=3306,master_user='mengxin',master_password='mengxin',master_log_file='master-bin.000001',master_log_pos=0


进行连接,

命令说明:master_host为Master服务器的ip,master_port为Master服务器的端口(默认为3306),master_user为刚刚在Master服务器上设置的user名,master_password为刚刚设置的密码,master_log_file为刚刚上面说到的要用的那个参数(ps:可以在master服务器上输入命令:show master status进行查看)

使用两台服务器实现数据库的主从同步与分离(一)



执行该命令后,表示连接已完成,

开启主从同步:start slave

然后输入:show slave status  \G;

查看运行状态:(如图,没有报错,表示主从同步成功配置)


使用两台服务器实现数据库的主从同步与分离(一)



最后让我们来验证一下,主从同步的效果:


在Master中创建mengxin_shop数据库

使用两台服务器实现数据库的主从同步与分离(一)



在Slave服务器中,查看数据库,可以看到在master中添加的数据库更新到Slave中了

使用两台服务器实现数据库的主从同步与分离(一)




呼,终于写完了,遇到了各种各样的错误,还是一点点的解决了


这里列举出配置过程中遇到的集中常见的错误吧


  1. 如果配置中,最后一步查看Slave的状态出现如图所示错误



  这表明,mysql.user中没有plugin这个字段,这是因为你mysql的版本为5.1,没有这个字段,授权会出现问题

解决办法:将两台服务器的mysql版本保持到5.5以上,尽量相同版本


2.有时会出现Slave连接Master连接不上的错误,请检查服务器上的mysql数据库端口3306是否关闭防火墙。


3.有时会出现slave和master id相同的错误,请确保slave配置中的server-id是否值只存在一个,并且为2


以上是我遇到的问题,有什么问题也可以向我反映,有什么好的见解,一起交流.



接下来我会更新关于主从同步实现读写分离,实际的运用到项目中,今天就先写到这
















以上是关于两台数据库服务器 如何进行数据同步操作的主要内容,如果未能解决你的问题,请参考以下文章

怎么将两个数据库同步

使用两台服务器实现数据库的主从同步与分离

[2台服务器如何同步数据库]触发器 实现两台服务器的数据同步

两台服务器的数据同步如何实现?

如何使用两台服务器实现主从同步与数据读写分离

EXCHANGE2010邮件数据在两台服务器之间如何部署?