关于mysql主从的数据同步不一致的解决方法

对于已经做完mysql主从发现show slave status\G;查看mysql-bin-0000XX,slave等这些信息一致时候很开心,但当你在主上删除一个库里面一个表再到从上查看才发现信息不能同步一致的结果令人很郁闷...

我就是前晚经历了这一次的宝贵教训(两个从的库居然是多了一两个,还要都有不同的库存在),正苦恼于自己当时的忘记,我就唯有将主从重组,首先在从上stop slave后将和主的不一样的库删除掉,分别再进入主从里面确认两边的库信息一样(这个要对照清楚,不然你又再做好主从才发现有错漏时候又要将主从重组),确认无误后再做主从各自的操作,今天,我终于将主从重组成功后查看发现主从的数据库信息终于可以一致了(当时心里很紧张会不会成功重新同步了)
主:directory   从1:slave1     从2:slave2

[[email protected] ~]# mysql -S /tmp/mysql.sock -p123456
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.72-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db2                |
| discuz             |
| mysql              |
+--------------------+
4 rows in set (0.06 sec)

mysql> use db2;
Database changed

mysql> show tables;
+---------------------------+
| Tables_in_db2             |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| tb2                       |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.01 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000007 |      106 | db2          |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

mysql> show processlist;
+----+------+---------------------+------+-------------+------+-----------------                                             -----------------------------------------------+------------------+
| Id | User | Host                | db   | Command     | Time | State                                                                                                       | Info             |
+----+------+---------------------+------+-------------+------+-----------------                                             -----------------------------------------------+------------------+
|  1 | root | localhost           | db2  | Query       |    0 | NULL                                                                                                        | show processlist |
|  2 | repl | 192.168.0.141:54535 | NULL | Binlog Dump |  262 | Has sent all bin                                             log to slave; waiting for binlog to be updated | NULL             |
|  3 | repl | 192.168.0.140:34429 | NULL | Binlog Dump |  142 | Has sent all bin                                             log to slave; waiting for binlog to be updated | NULL             |
+----+------+---------------------+------+-------------+------+-----------------                                             -----------------------------------------------+------------------+
3 rows in set (0.00 sec)

mysql> show tables;
+---------------------------+
| Tables_in_db2             |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| tb2                       |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.01 sec)

mysql> drop table help_keyword;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+---------------------------+
| Tables_in_db2             |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| tb2                       |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
22 rows in set (0.01 sec)

mysql> drop table help_relation;
Query OK, 0 rows affected (0.00 sec)

[[email protected] ~]#  mysql -S /tmp/mysql.sock -p123456
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.51-log Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)

mysql> reset slave;
Query OK, 0 rows affected (0.04 sec)

mysql> change master to master_host=‘192.168.0.8‘,master_port=3306,master_user=‘repl‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000007‘,master_log_pos=106;
Query OK, 0 rows affected (0.03 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.8
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000007
          Read_Master_Log_Pos: 106
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000007
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 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: 106
              Relay_Log_Space: 400
              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
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.01 sec)

ERROR:
No query specified

mysql> use db2;
Database changed
mysql> show tables
    -> ;
+---------------------------+
| Tables_in_db2             |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| tb2                       |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.00 sec)

mysql> show tables;
+---------------------------+
| Tables_in_db2             |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| tb2                       |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
22 rows in set (0.00 sec)

PS:从库多出一个help_category 的表,是因为之前主从数据库不一致时候,在主删除了一个表来尝试导致的.现在其余的表再删除就可以同步了

时间: 2024-09-30 03:00:39

关于mysql主从的数据同步不一致的解决方法的相关文章

Mysql 主从服务器数据同步

安装2台windows Server 服务器,分别安装Mysql,配置环境变量,完成安装确认在CMD窗口可以使用Mysql命令 在Master服务器上创建同步账号,确保Slave服务器能访问Master服务器数据库Master DB Server IP:10.10.0.144Slave DB Server IP:10.10.0.145Mysql > grant replication slave on *.* to [email protected] identified by 'Passwor

mysql主从数据库不同步的3种解决方法

mysql主从数据库不同步的3种解决方法 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; 也正常. mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File | Position |

MySQL数据库异构数据同步–后端以tair为例

在实现levelDB挂载成MySQL引擎时,发现在实际存储是key-value格式时候,MySQL的异构数据同步,可以更简单和更通用. 以tair为例,简要描述一下以MySQL为基础的一种方案. 所谓异构数据同步,是指应用只更新MySQL,而由后端的某些机制将这些更新应用到其他数据存储服务上. 1. MySQL-Tair 引擎 a)       使用 b)       说明 这不是一个"存储引擎",实际上数据存储在tair服务器上.执行insert/update/delete时,只是将

利用rsync+inotify实现主从服务器数据同步的简单案例

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. rsync是Linux下一款非常强大的同步工具,其最大的劣势在于每次执行rsync命令都会遍历目标目录.想象一下这样一种情况:当目录下改动的文件数量并不多且目录下本身文件数量达到一定规模时,每次遍历都会消耗很多资源.那么有没有这样一种工具,当某文件改动后,主动触发rsync命令去同步修改过的文件呢?答案是肯定的,要不然就没有这篇文章了,这个工具就是:inotify. 接下来,本文就利用rsync

MYSQL拒绝访问:not allowed to connect解决方法

分享下MYSQL拒绝访问报错not allowed to connect的解决方法. 可以在其它任何的主机上以root身份登录 mysql报如下错误,截取部分, message from server: "Host '****' is not allowed to connect to this MySQL server1:在登录mysql服务器2:执行:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //赋予任何主机访问数

MySQL安装配置最后时未响应解决方法

安装MySQL出示未响应,一般显示在安装MySQL程序最后一步的2,3项就不动了. 这种情况一般是你以前安装过MySQL数据库服务项被占用了.解决方法:一种方法:你可以安装MySQL的时候在这一步时它默认的服务名是“MySQL” 只需要把这个名字改了就可以了. 二种方法:1.卸载MySQL   2.删除安装目录及数据存放目录   3.在注册表(regedit)查询mysql,全部删除   4.在c盘查询MySQL,全部删除   5.重新安装就好了注意的是注册表 cmd -> regedit1.H

MySQL mysqldump与source导入慢的解决方法

Jquery中文网 >  数据库  >  mysql  >  正文 MySQL mysqldump与source导入慢的解决方法 MySQL mysqldump与source导入慢的解决方法 发布时间:2017-02-26   编辑:www.jquerycn.cn jquery中文网为您提供MySQL mysqldump与source导入慢的解决方法等资源,欢迎您收藏本站,我们将为您提供最新的MySQL mysqldump与source导入慢的解决方法资源 mysqldump与sourc

php 表单提交错误后返回数据消失问题的解决方法

本文章向码农们介绍php 表单提交错误后返回数据消失问题的解决方法,感兴趣的码农可以参考一下. 表单提交错误后返回数据消失怎么办呐,今天就来分析解决一下这个问题. 状况概述: 做填写表单信息提交的时候会碰到一个问题就是当用户填写并提交表单后,程序判断不符合要求并返回,返回之后之前填写的表单信息会被清空了的情况.如果填写的信息量少还无所谓,如果填写的信息量比较多,这会直接打击到填写信息的人的良好心情.因此解决表单提交错误返回后填写的内容消失的问题是一个提高用户体验度的迫在眉睫的问题. 对于这种问题

关于MySQL错误 2005 - Unknown MySQL server host 'localhost' (0) 原因及解决方法

今天在外面开navicat for mysql的时候,怎么也连不上自己本机上的数据库,一直显示2005 - Unknown MySQL server host 'localhost' (0): 错误代码的意思即无法连接上主机localhost.可能是由于没有联网造成的:于是将连接属性里的 '主机名或IP地址' 改成127.0.0.1即回送地址后,就可以连接上了.上百度搜了下,navicat里的一些功能应该是要联网的,而localhost是需要DNS解析后才会是127.0.0.1的,所以才会导致这