【问题标题】:MYsql replication issues. "Error Table xxx.xxx doesnt exist.. Cant even start replicationMYsql 复制问题。 “错误表 xxx.xxx 不存在.. 甚至无法启动复制
【发布时间】:2014-11-18 16:49:32
【问题描述】:

到目前为止,我花了两天时间查看堆栈溢出答案和谷歌,但我无法让它工作..

我正在尝试在 mysql/mariadb 中设置主/从复制。但是当我开始复制时。它只是奴隶说表不存在的错误。

  • 我需要先创建数据库和表吗?
  • 如果是这样,如果在 master 上创建一个新表会发生什么?这会打破吗 复制?

这是从机的当前状态:

MariaDB [(none)]> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: somedomain.com
                  Master_User: someuser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 63687969
               Relay_Log_File: mariadb-relay-bin.000002
                Relay_Log_Pos: 382
        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: 1146
                   Last_Error: Error 'Table 'xxxxx.xxxx' doesn't exist' on query. Default database: 'xxxxxxxxxxxx'. Query: 'UPDATE xxxx SET lastused = NOW(), lingertime = 7 WHERE siteid = 'xxxxxxxxxxx''
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 98
              Relay_Log_Space: 63763807
              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: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 1146
               Last_SQL_Error: Error 'Table 'xxxxxxxx.xxxxx' doesn't exist' on query. Default database: 'xxxxxxx'. Query: 'UPDATE xxxxx SET lastused = NOW(), lingertime = 7 WHERE siteid = 'xxxxxxxxxx''
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1

【问题讨论】:

    标签: mysql database replication


    【解决方案1】:

    我需要先创建数据库和表吗?

    是的,您必须先这样做。您必须拥有与 master 上相同的架构和表。

    如果是这样,如果在 master 上创建了一个新表会发生什么?这会破坏复制吗?

    您在 master 上执行的每个命令也将在 slave 上复制。这包括表和模式的 CREATE 语句。所以,你不会有任何问题。

    【讨论】:

    • 谢谢.. 如果我先创建布局,它会开始用 master 上的内容填充表格,还是仅在复制开始后发生的内容?另外,如果我是这种情况,如果奴隶在某个时候离线,这会不会导致问题?我想我要问的是,主从“同步”并检查它们是否同步?
    • 当您在 master 上执行命令时,它会将其信息写入名为“binlog”的文件中。从站读取并从起点执行其中的所有命令。
    • 再次感谢。最后一个问题.. 是否可以告诉主服务器发送所有内容.. 或者我是否需要在离线时获取整个服务器数据,将其传输到从服务器,然后启动复制,这样我就不会丢失行/数据?只希望有某种“发送所有内容并同步”命令。再次感谢您的帮助!
    • 当你在slave服务器上输入show slave status\G时,它会显示master bin log的状态以及你的slave在什么时候。 Exec_Master_Log_Pos: 651575542 Relay_Log_Space: 651578351。这将显示您是否落后。但我建议你从 master 转储数据并在 slave 上恢复。然后开始复制。
    • 一件重要的事情:当你转储master,并在slave上恢复,然后开始复制时,你有很多主键和唯一键的重复输入错误。复制开始时,您必须跳过这些错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多