`
yangzb
  • 浏览: 3502660 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL数据库双向同步

阅读更多

1. 主从关系的同步
master端 192.168.5.10
    slave端  192.168.5.4
 
修改master端的/etc/my.cnf文件
[mysqld]:
log-bin
server-id = 1

进入mysql

创建一个要同步的数据库abc
 create database abc;

创建一个用来同步的用户,指定只能在192.168.5.4登录
grant file on *.* to bak@'192.168.5.4 identified by '123456';
grant all privileges on backup.* to bak@’192.168.5.4’ identified by ‘123456’;
flush privileges;

重启mysql

修改slave端的/etc/my.cnf文件
[mysqld]:
server_id = 2
log-bin = mysql-bin
master-host = 192.168.5.10
master-user = bak
master-password = '123456' (如果为空也要打上两个单引号)
master-port = 3306 (根据具体设置的端口号填)
master-connect-retry = 10 连接重试次数
replicate-do-db = abc 要接收的数据库名,如果有多个数据库,每个数据库一行
replicate-ignore-db= mysql   设置不要接收的数据库,每个数据库一行   (一般这条可以不写)

重启mysql
slave start;

配置成功后会在mysql目录下生成master.info,如果要更改slave设置,要先将master.info删除,才会起作用。
然后进入mysql用show slave status 或show master status 查看同步情况

3、 双向同步

 master端的设置
[mysqld]:
log-bin
server-id = 1
sql-bin-update-same 同步模式 ,在mysql5以上的版本都不需要这句,否则会启动不了

mysql服务
binlog-do-db= abc    设置同步数据库,如果有多个数据库,每个数据库一行
 binlog-ignore-db = mysql 设置不要同步的数据库,如有多个数据库,每个数据库一行
master-host=192.168.5.4
master-user=bak
master-password='123456'
master-port=3306
master-connect-retry=10
replicate-do-db=abc   设置要接收的数据库,如有多个数据库,每个数据库一行
replicate-ignore-db= mysql   设置不要接收的数据库,每个数据库一行   (一般这条可以不写)
log-slave-updates    在mysql5以上的版本都不需要这句

进入mysql
创建一个数据库abc
create database abc;
创建一个用来同步的用户,指定只能在192.168.5.4登录
grant file on *.* to bak@'192.168.5.4 identified by '123456';
重启mysql服务
slave start;
 
slave设置
log-bin
server-id = 2
binlog-do-db= abc    设置同步数据库,如果有多个数据库,每个数据库一行
binlog-ignore-db = mysql 设置不要同步的数据库,如有多个数据库,每个数据库一行
sql-bin-update-same   同步模式 ,在mysql5以上的版本都不需要这句,否则会启动不了mysql服务
master-host=192.168.5.10
master-user= bak
master-password='123456'
master-port=3306
master-connect-retry=10
replicate-do-db=abc   设置要接收的数据库,如有多个数据库,每个数据库一行
replicate-ignore-db= mysql   设置不要接收的数据库,每个数据库一行   (一般这条可以不写)
log-slave-updates   在mysql5以上的版本都不需要这句

进入mysql
 创建一个数据库abc
create database abc;

创建一个用来同步的用户,指定只能在192.168.5.10登录
grant file on *.* to bak@'192.168.5.10 identified by '123456';
重启mysql服务
 slave start;
 
注意,如果有一端修改了数据后,另一端接收不到,手工执行命令load data from master;就可以了
 
如果因为误删了二进制日志文件导致无法同步,则执行
reset slave;
stop slave;
start slave;

三、可能遇到的问题
    1、my.ini是WINDOWS系统下的mysql配置文件,而在linux系统下该文件会命名为my.cnf。此文件修改后mysql必须重启才能生 效。在用PDM方式安装mysql的时候,在系统的默认位置/etc/my,cnf会找不到my.cnf文件,此时mysql则会去读mysql /support-files/my-medium.cnf这个位置的文件来进行初始化设置,因此可以直接把后一个文件拷到前面的默认位置。

    2、配置完后,可以用“mysql –u root -p”命令进行sql环境,用“show master status”及”show slave status”命令查看主用和备用进程的运行情况,可以发现问题。同时可以用”show variables”来查看系统设置的变量。Slave进程有两个线程非常重要,分别是“Slave_IO_Running和          Slave_SQL_Running”。必须都启动。

   3、如果配置完了但没有同步,可以查/var/lib/mysql/localhost.localdomain.err下的这个错误日志。日志以主机名 命名,不同的机器可能不一样,不同的安装路径也会导致前面的路径不同。在此日志里会详细提示发生的错误,根据错误在网上查询或者分析配置,基本上就能解决 大部分问题了。

   4、如果修改了主服务器的配置,记得删除从服务器上的master.info文件。否则从服务器使用的还是老配置,可能会导致错误。这是因为从服务器会直接把master.info文件中的内容去替代my.cnf中的配置。

   5、单向同步的时候,有可能报“[ERROR] Slave: Error 'Duplicate entry '589' for key 1' on query. Default database: plication_master'. Query: 'insert into as_card_type values ('589','sdddddsd',25,'dfsdfd')', Error_code: 1062”错,这时到数据库里去把该条数据删除即可。因为导致报此错的原因是数据库内已有此条数据,而二进制文件又要求再插入一条此数据。发生此错误后一 般会终止slave进程。

   6、错误“[ERROR] Failed to open the relay log './localhost-relay-bin.000609' (relay_log_pos 288)”,此错误的解决方法为:

 -> stop mysql on the slave server
 -> find the directory that contains the relay logs (usually /var/lib/mysql)
 -> delete all relay logs called hostname-relay-bin.XXX, hostname-relay-bin.index and relay-log.info
 -> restart mysql

 我觉得发生此错误的原因是读本地二进制日志出问题,那么就把本地日志删除,强制去读主机的日志信息。 

  7、有时候数据库同步自己会停下来,原因是发生了错误。那么用下面的语句可以避免这个问题。

 #出现错误后忽略,如果不加这个,出现任何错误,同步进程会终止
 slave-skip-errors=all

 8、有人说此选项重要,我觉得此选项不过是让从机日志记载了所有的操作,将来便于恢复或者回滚。我觉得可以不用。

 log-slave-updates //当Slave从Master数据库读取日志时将跟新写入日志中
  log-bin 用于启动数据库的跟新日记,当针对启动这个选项的数据库本身进行数据跟新时更新操作将被记录。log-slave-updates 告诉Slave在二进制记录中记录从主数据库同步到的更新数据。如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新。

  9、今天又碰到一个错误:前段时间还同步的很正常的系统今天四台全部失效,重启后报“Warning: World-writable config file '/etc/my.cnf ' is ignored ”。我估计是我以前把my.cnf文件权限全设成了666,所以系统认为危险,跳过去没有读,于是我用chmod 660重设了一下,果然没有再报此错,一切正常了。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jiahehao/archive/2008/11/27/3390838.aspx

分享到:
评论

相关推荐

    Mysql5.5数据库双向同步

    根据给定的文件信息,“Mysql5.5数据库双向同步”这一主题深入探讨了如何在两个MySQL 5.5服务器之间建立稳定的数据同步机制,确保数据的一致性和高可用性。以下是对该知识点的详细解析: ### 一、理解MySQL双向同步...

    Mysql数据库单双向同步

    MySQL数据库的单双向同步是数据库高可用性和容灾恢复策略中的一个重要组成部分,它允许数据在多个服务器之间实时或近实时地复制,确保数据的一致性和可用性。在Linux环境下,MySQL 5的复制功能提供了这一可能性,...

    mysql同步,双向同步

    MySQL双向同步配置详解 MySQL同步是指将多个数据库服务器之间的数据保持实时同步的过程。这种技术可以应用于分布式系统、数据备份、灾难恢复等场景。在这个资源中,我们将详细介绍如何配置 MySQL 双向同步。 MySQL...

    mysql5.7双向实时同步

    在配置MySQL 5.7的双向同步之前,需要注意以下关键点: 1. **版本匹配**:确保所有参与同步的MySQL服务器都运行相同版本的MySQL,以减少因版本差异导致的兼容性问题。 2. **初始数据一致性**:在开始同步前,确保...

    Mysql异地多活数据双向同步-CloudCanal实战.doc

    Mysql 异地多活数据双向同步-CloudCanal 实战 本文主要介绍了使用 CloudCanal 实现 Mysql 异地多活数据双向同步的实战方案。异地多活是一项系统性工作,包含 web 层、应用服务层、数据层的流量分配和同步。数据层的...

    sqlserver与mysql数据库同步

    本主题将深入探讨如何实现SQL Server与MySQL数据库之间的数据同步,这对于确保数据一致性、实时性以及跨平台的数据交换具有重大意义。 首先,我们需要了解SQL Server和MySQL是两种不同类型的数据库管理系统。SQL ...

    两台服务器实现mysql的双向同步

    为了提高系统的可靠性和容错能力,很多企业选择使用MySQL数据库的双向同步机制来构建主备服务器架构。本文将详细介绍如何在两台服务器之间实现MySQL的双向同步,并通过具体步骤来帮助读者理解这一过程。 #### 核心...

    Mysql两个数据库表之间双向数据同步方案.docx

    假设我们有两个MySQL数据库实例,分别位于两台不同的服务器上(A机与B机)。为了方便说明,这里使用相同的数据库名称和表名,但实际上在实际应用中可以根据具体需求进行调整。 - A机:MySQL数据库名为`test`,表名...

    mysql 数据库的同步问题(双机热备).docx

    总之,MySQL数据库的同步和双机热备是保证高可用性和数据安全的重要手段,理解其工作原理和配置过程对于维护大型数据库系统至关重要。通过正确配置和管理复制,可以构建强大的数据库集群,提供可靠的服务。

    sqlserver、mysql数据库同步备份工具

    2. **双向同步**:不仅支持从 `SQL Server` 到 `MySQL` 的数据迁移,也支持反向操作,确保双数据库系统的数据都能及时更新。 3. **冲突解决**:在同步过程中可能出现的冲突,工具会提供策略来自动或手动解决。 4. **...

    MySQL数据库双活同步复制方案详解.docx

    MySQL数据库双活同步复制方案是为了实现数据库的高可用性和数据一致性,主要分为几种常见的方法,包括MySQL原生复制主主同步、Galera replication、Group Replication以及第三方工具如canal。 1. MySQL原生复制主主...

    mysql数据库的同步问题(双机热备)文.pdf

    MySQL数据库的同步问题,尤其是双机热备,是确保数据高可用性和连续性的关键策略。在MySQL中,这种同步被称为复制(Replication),而非同步(Sync),这是因为复制涉及到主服务器(Master)上的所有更改被重新执行...

    MySQL数据库双活同步复制方案详解.pdf

    它与otter配合,可以实现MySQL数据库间的双向同步。Canal模拟MySQL slave的行为,与master进行交互,接收并解析二进制日志事件,然后将这些事件应用到目标数据库。MySQL的主从复制过程包括master记录改变到二进制...

    windows下mysql双向同步

    在Windows环境下,MySQL数据库的双向同步配置是一项关键任务,它确保了两台服务器上的数据库能够实时更新对方的改动,维持数据一致性。以下是如何在Windows下的MySQL服务器A和B之间设置双向同步的详细步骤: 首先,...

    mysql双向同步终极秘籍

    ### MySQL双向主主同步终极秘籍 在当前的IT环境中,数据的一致性和可靠性变得尤为重要。MySQL作为一种广泛使用的开源关系型数据库系统,在企业级应用中扮演着重要角色。本文将详细介绍如何实现MySQL的双向主主同步...

    剖析MySQL数据库间实现同步.pdf

    如果需要双向同步,可能需要更复杂的设置,如多主复制或多级复制。 在实际应用中,数据库同步可能会涉及到性能影响,因此需要合理调整参数,如`master-connect-retry`(重试连接间隔)、`replicate-do-db`(只同步...

    数据库双向同步复制

    数据库双向同步复制是一种确保数据在两个数据库之间保持一致性的技术,尤其在分布式系统中非常关键。这种场景的主要目标是保证数据完整性、一致性和避免冲突。当两个数据库都可以进行读写操作,即双主双写模式时,...

    mysql数据库同步

    2. **多主复制**:在某些情况下,可能需要双向同步,即多个数据库都可以进行写操作,然后相互复制更改。这通常需要更复杂的配置和冲突解决策略。 3. **组复制**:MySQL Group Replication是一种高级同步技术,它...

    MySQL主主双向同步测试报告.pdf

    MySQL主主双向同步是一种高可用性和高冗余性的数据库部署模式,它允许两台MySQL服务器互相作为主服务器和从服务器,实现数据的实时双向同步。这样,任何一台服务器上的数据更改都会被复制到另一台服务器上,提高了...

Global site tag (gtag.js) - Google Analytics