`
gaopenghigh
  • 浏览: 245769 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL双向同步热备设置以及同步错误的处理

    博客分类:
  • DB
阅读更多
MySQL双向同步热备设置以及同步错误的处理


环境

A: 192.168.0.1
B: 192.168.0.2

其中A上已经有数据库在服务,需要在B上搭建一个备库,并且和A实现双向同步。


设置
授权复制用户
即分别在A,B上增加一个用户让彼此访问
A:
grant replication slave,file on *.* to 'backup'@'192.168.0.2' identified by '123456';

B:
grant replication slave,file on *.* to 'backup'@'192.168.0.1' identified by '123456';

检测通过backup这个用户能够访问彼此的MySQL。

配置文件设置
B:
[mysqld]
# 省略...
# replication settings
# A 192.168.0.1
# B 192.168.0.2
server-id=2
log-bin=/home/mysql/log/mysql-bin
# 因为是双向,自动增加的id会有冲突,把步长改为2 初始设为2
auto_increment_increment=2
auto_increment_offset=2
# master设置
master-host=192.168.0.1
master-user=backup
master-pass=123456
master-port=3306
master-connect-retry=30
# 设置需要复制的库
replicate-do-db=your_db1
replicate-do-db=your_db2

# 省略...


A:
[mysqld]
# 省略...
# replication settings
# A 192.168.0.1
# B 192.168.0.2
server-id=1
log-bin=/home/mysql/log/mysql-bin
# 因为是双向,自动增加的id会有冲突,把步长改为2 初始设为1
auto_increment_increment=2
auto_increment_offset=1
# master设置
master-host=192.168.0.2
master-user=backup
master-pass=123456
master-port=3306
master-connect-retry=30
# 设置需要复制的库
replicate-do-db=your_db1
replicate-do-db=your_db2

# 省略...


同步现有数据
停止A数据库的操作,把A中的数据用mysqldump或者直接拷贝文件的方法复制到B,确保B正常。

设置并检查同步
启动A和B上的的MySQL
  • 检查master status:

  • A:
    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000004 |  8937501 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    

    B:
    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000019 |      597 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    


  • 检查slave status:

  • A:
    mysql> show slave status\G
    *************************** 1. row ***************************
                 Slave_IO_State: Waiting for master to send event
                    Master_Host: 192.168.0.2
                    Master_User: backup
                    Master_Port: 3306
                  Connect_Retry: 60
                Master_Log_File: mysql-bin.000019
            Read_Master_Log_Pos: 597
                 Relay_Log_File: mysqld-relay-bin.000005
                  Relay_Log_Pos: 429
          Relay_Master_Log_File: mysql-bin.000019
               Slave_IO_Running: Yes
              Slave_SQL_Running: Yes
                Replicate_Do_DB: your_db1,your_db2
            Replicate_Ignore_DB:
             Replicate_Do_Table:
         Replicate_Ignore_Table:
        Replicate_Wild_Do_Table:
    Replicate_Wild_Ignore_Table:
                     Last_Errno: 0
                     Last_Error:
                   Skip_Counter: 0
            Exec_Master_Log_Pos: 597
                Relay_Log_Space: 429
                Until_Condition: None
                 Until_Log_File:
                  Until_Log_Pos: 0
             Master_SSL_Allowed: No
             Master_SSL_CA_File:
             Master_SSL_CA_Path:
                Master_SSL_Cert:
              Master_SSL_Cipher:
                 Master_SSL_Key:
          Seconds_Behind_Master: 0
    1 row in set (0.00 sec)
    

    B:
    mysql> show slave status\G
    *************************** 1. row ***************************
                 Slave_IO_State: Waiting for master to send event
                    Master_Host: 192.168.0.1
                    Master_User: backup
                    Master_Port: 3306
                  Connect_Retry: 30
                Master_Log_File: mysql-bin.000004
            Read_Master_Log_Pos: 9914005
                 Relay_Log_File: mysqld-relay-bin.000008
                  Relay_Log_Pos: 9914142
          Relay_Master_Log_File: mysql-bin.000004
               Slave_IO_Running: Yes
              Slave_SQL_Running: Yes
                Replicate_Do_DB: your_db1,your_db2
            Replicate_Ignore_DB:
             Replicate_Do_Table:
         Replicate_Ignore_Table:
        Replicate_Wild_Do_Table:
    Replicate_Wild_Ignore_Table:
                     Last_Errno: 0
                     Last_Error:
                   Skip_Counter: 0
            Exec_Master_Log_Pos: 9914005
                Relay_Log_Space: 9914142
                Until_Condition: None
                 Until_Log_File:
                  Until_Log_Pos: 0
             Master_SSL_Allowed: No
             Master_SSL_CA_File:
             Master_SSL_CA_Path:
                Master_SSL_Cert:
              Master_SSL_Cipher:
                 Master_SSL_Key:
          Seconds_Behind_Master: 0
    1 row in set (0.00 sec)
    

    需要特别注意的是这两行:
               Slave_IO_Running: Yes
              Slave_SQL_Running: Yes
    

    必须都是Yes,否则同步不成功。

    分别在A和B上做操作,看同步是否生效;

    复制不成功的解决方法
    一开始我设置从A复制到B时出现了错误
               Slave_IO_Running: No
              Slave_SQL_Running: Yes
    

    mysqld.log里面:
    121217 17:43:39 [ERROR] Error reading packet from server: error reading log entry ( server_errno=1236)
    121217 17:43:39 [ERROR] Got fatal error 1236: 'error reading log entry' from master when reading data from binary log
    

    这时我用CHANGE MASTER命令重新指定master:

  • 停止A的MySQL操作,查看master状态:

  • A:
    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 |    98    |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    

    记住上面的File和Position数值

  • 在B上用CHANGE MASTER命令重新指定master:
  • mysql> slave stop;
    mysql> change master to master_host='192.168.0.1',master_user='backup',master_password='123456', master_log_file='mysql-bin.000003',master_log_pos=98;
    mysql> slave start;
    



    此时检查B上的slave status, 发现已经OK:
               Slave_IO_Running: Yes
              Slave_SQL_Running: Yes
    

    分享到:
    评论

    相关推荐

      mysql双机热备同步

      MySQL 双机热备同步是指两个 MySQL 服务器之间的实时数据同步,通过配置主从关系和双向同步机制,实现数据的实时备份和热备。下面将详细介绍 MySQL 双机热备同步的配置步骤和原理。 主从关系同步 在 MySQL 中,...

      mysql双向同步终极秘籍

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

      MySQL双机热备

      **MySQL双机热备**是一种通过配置使得两台MySQL服务器之间能够实时同步数据的技术方案,从而实现高可用性和故障转移的能力。该技术可以确保在一台服务器发生故障时,另一台服务器能够立即接管服务,以减少数据丢失和...

      MySQL数据同步【双主热备】.docx

      MySQL 数据同步【双主热备】是指在一个MySQL集群中,两台服务器互相作为主服务器,彼此之间进行数据的实时同步,以确保数据的一致性和高可用性。这种配置常用于构建高可用性的数据库系统,避免单点故障,提高业务...

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

      双向同步,即主从服务器之间的双向复制,是一种更复杂的情况。在这种设置中,主服务器和从服务器互相作为对方的从服务器,每个服务器都接收并应用来自另一个服务器的更改。这需要更精细的配置和管理,以防止循环复制...

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

      MySQL 数据库的同步问题主要涉及的是双机热备(High Availability)方案,即在一个主数据库服务器(Master)和一个或多个从属服务器(Slave)之间实现数据的实时复制。这通常是为了确保数据的安全性、提高服务的可用...

      mysql热备详细说明.txt

      ### MySQL热备详解 #### 一、MySQL主备与热备概述 在现代数据库系统中,为了确保数据的安全性及系统的高可用性,通常会采用主备架构来部署MySQL服务。这种架构不仅可以实现数据的实时备份,还可以在主服务器发生...

      mysql+keepalived双主热备部署手册.docx

      - 在两个MySQL节点上分别配置`my.cnf`文件,实现数据的双向同步。 - 设置`server-id`来区分不同的服务器节点。 - 开启二进制日志(`log-bin`)并指定日志文件名(`mysql-bin`)。 - 忽略写入binlog的日志库(`binlog-...

      LINUX +MYSQL双机配置

      对于主主同步,过程类似,但需要在备服务器上重复上述步骤,将主服务器的IP和设置应用到备服务器,确保数据在两台服务器间双向同步。 总结,MySQL双机配置涉及的主要知识点包括: 1. MySQL二进制日志(Binary Log...

      unbuntu 10.04 LTS上配置简单双机热备方案

      MySQL 的 Master-Master Replication 是一种双主复制机制,即两个数据库节点相互作为对方的 Master 和 Slave,实现了数据的双向同步。这种方式可以确保在任何一台服务器发生故障时,另一台服务器能够立即接管其工作...

      mysql双机热备份的实现步骤

      * 在双机热备份模式下,需要在两个服务器上都设置同步用户帐号和同步数据库,以实现双向的热备。 * 在出现错误时,需要查看 *.err 日志文件,以便诊断错误原因。 通过以上步骤,可以实现 MySQL 双机热备份,确保...

      主从同步架构设计方案PPT学习教案.pptx

      同步方案是主从架构的关键,MySQL提供了master-slave双向热备功能。主服务器的所有变更都会实时地复制到从服务器,以保证数据的一致性。配置文件/etc/my.cnf用于设置同步参数,确保实时同步。 备份方案是为了防止...

      mysql 数据库热备份1

      MySQL 数据库热备份是...总的来说,MySQL数据库热备份是通过复制技术实现的,包括配置参数、权限设置、主从关系建立以及错误处理等多个环节,它为企业的数据库系统提供了强大的容灾能力,提高了服务的稳定性和可靠性。

      MySQL技能测试题目

      MySQL AB复制允许两个服务器互为主从,实现双向复制。具体步骤包括: - 在每个服务器上配置***f文件,设置server-id、auto-increment设置,并开启二进制日志。 - 在每个服务器上创建复制账户,并授予REPLICATION ...

      mysql面试题.docx

      2. 典型产品如 MySQL、Oracle、SQL Server,适用于需要事务处理、复杂查询的场景。 3. 非关系型数据库(NoSQL)强调灵活性、可扩展性,如 MongoDB、Redis,适用于大数据、高并发场景。 4. NoSQL 产品如 Cassandra、...

      MySQL 主从复制原理与实践详解

      MySQL 主从复制是一种常见的数据库高可用性和数据冗余策略,它允许数据在多个服务器之间进行同步,以确保数据的一致性、提供读写分离、负载均衡以及灾难恢复能力。以下是对MySQL主从复制原理、作用、实现方式以及...

      网络游戏-网络服务基础设施系统和方法.zip

      3. **实时通信技术**:网络游戏需要实时同步玩家的动作和状态,这就需要高效的实时通信技术,如TCP/IP协议、UDP协议以及WebSocket等。TCP保证数据传输的可靠性,UDP则更注重速度,WebSocket为双向通信提供了低延迟的...

    Global site tag (gtag.js) - Google Analytics