首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL从站与主站不同步

MySQL从站与主站不同步
EN

Server Fault用户
提问于 2009-11-13 15:14:25
回答 3查看 9K关注 0票数 1

我们的奴隶,只用于备份,是不同步的。它在关键的限制下崩溃了。

我想找到一种不让主人离线就重新复制奴隶的方法,我知道我可以这样做,但我相信这是不可能的。

我有“高性能MySQL”在我的前面,它指向我的方向,特别是mk表同步。

在我的生活中,我无法让mk表同步工作。

我在奴隶身上是这样运行的:

代码语言:javascript
复制
root@machine:~# mk-table-sync --sync-to-master --dry-run 127.0.0.1
# Syncing h=127.0.0.1
# DELETE REPLACE INSERT UPDATE ALGORITHM EXIT DATABASE.TABLE
#      0       0      0      0 Chunk     0    database.case_study_product
#      0       0      0      0 Chunk     0    database.case_study_region
#      0       0      0      0 Chunk     0    database.case_study_sector
#      0       0      0      0 Chunk     0    database.contact
#      0       0      0      0 Chunk     0    database.contact_issue
#      0       0      0      0 Chunk     0    database.feedback
#      0       0      0      0 Chunk     0    database.feedback_rating
#      0       0      0      0 Chunk     0    database.feedback_usefulness
#      0       0      0      0 Chunk     0    database.help
#      0       0      0      0 Chunk     0    database.help_issue
#      0       0      0      0 Chunk     0    database.search_weight
#      0       0      0      0 Chunk     0    database.contented_content
#      0       0      0      0 Nibble    0    database.contented_content_index
#      0       0      0      0 Chunk     0    database.contented_content_log

我知道一个事实,contented_content和contented_content_index是不同步的。但从我所知道的输出看来,maatkit认为一切都很好。

以下是从状态的输出:

代码语言:javascript
复制
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 10.0.40.12
                Master_User: rep1
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000023
        Read_Master_Log_Pos: 25832973
             Relay_Log_File: mysql-relay-bin.000002
              Relay_Log_Pos: 19098703
      Relay_Master_Log_File: mysql-bin.000001
           Slave_IO_Running: Yes
          Slave_SQL_Running: No
            Replicate_Do_DB: 
        Replicate_Ignore_DB: 
         Replicate_Do_Table: 
     Replicate_Ignore_Table: 
    Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
                 Last_Errno: 1452

任何帮助,pointers...ask获得更多的info..etc

EN

回答 3

Server Fault用户

回答已采纳

发布于 2009-11-17 12:34:08

在我的虚拟环境中进行了大量的绞尽脑汁和游戏之后,我就成功地将我的奴隶同步到了主人那里。

1)在主数据库(mydb)中,我要创建下表:

代码语言:javascript
复制
CREATE TABLE checksum (
     db         char(64)     NOT NULL,
     tbl        char(64)     NOT NULL,
     chunk      int          NOT NULL,
     boundaries char(100)    NOT NULL,
     this_crc   char(40)     NOT NULL,
     this_cnt   int          NOT NULL,
     master_crc char(40)         NULL,
     master_cnt int              NULL,
     ts         timestamp    NOT NULL,
     PRIMARY KEY (db, tbl, chunk)
);

2)在主服务器上运行以下命令:

代码语言:javascript
复制
mk-table-checksum -d mydb --replicate mydb.checksum 127.0.0.1

3)在奴隶上运行以下命令:

代码语言:javascript
复制
mk-table-sync -d mydb --replicate mydb.checksum  --sync-to-master --no-foreign-key-checks --execute 127.0.0.1

当我尝试在运行同步命令之前在从服务器上运行校验和复制命令时,没有做任何事情。

在我的示例中连接并工作的从服务器也禁用了外键检查,因为我们使用的是INNODB,并且在运行同步时会遇到外键约束问题。

票数 2
EN

Server Fault用户

发布于 2009-11-13 15:57:59

如果您安装了从服务器,可能会有所帮助:

代码语言:javascript
复制
mysql> STOP SLAVE;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
mysql> START SLAVE;
票数 1
EN

Server Fault用户

发布于 2009-11-13 18:50:38

在完成追赶之后,奴隶的数据将是不同的。运行mk表-校验和-首先在主服务器上复制,然后在从服务器上运行mk表同步-复制(在文档中有一个例子)。

我不清楚你对你的奴隶的状态有什么了解它只是告诉您它将检查哪些表以及使用什么同步算法。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/84433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档