主从复制未在从服务器上添加read-only 导致从服务器数据和主服务器冲突

如手误在从节点上建立个数据库了,主节点上没有这个数据库,是不允许发生这种事情的,
如先在从节点上创建create database a1;,然后在主节点上创建create database a1;一模一样的库的时候
查询服务器状态:show slave statusG
 1 show slave statusG
 2 *************************** 1. row ***************************
 3                Slave_IO_State: Waiting for master to send event
 4                   Master_Host: 192.168.1.7
 5                   Master_User: alex
 6                   Master_Port: 3306
 7                 Connect_Retry: 60
 8               Master_Log_File: mysql-bin.000008
 9           Read_Master_Log_Pos: 671
10                Relay_Log_File: mariadb-relay-bin.000003
11                 Relay_Log_Pos: 876
12         Relay_Master_Log_File: mysql-bin.000008
13              Slave_IO_Running: Yes
14             Slave_SQL_Running: No
15               Replicate_Do_DB: 
16           Replicate_Ignore_DB: 
17            Replicate_Do_Table: 
18        Replicate_Ignore_Table: 
19       Replicate_Wild_Do_Table: 
20   Replicate_Wild_Ignore_Table: 
21                    Last_Errno: 1007
22                    Last_Error: Error 'Can't create database 'a1'; database exists' on query. Default database: 'a1'. Query: 'create database a1'
23                  Skip_Counter: 0
24           Exec_Master_Log_Pos: 592
25               Relay_Log_Space: 1535
26               Until_Condition: None
27                Until_Log_File: 
28                 Until_Log_Pos: 0
29            Master_SSL_Allowed: No
30            Master_SSL_CA_File: 
31            Master_SSL_CA_Path: 
32               Master_SSL_Cert: 
33             Master_SSL_Cipher: 
34                Master_SSL_Key: 
35         Seconds_Behind_Master: NULL
36 Master_SSL_Verify_Server_Cert: No
37                 Last_IO_Errno: 0
38                 Last_IO_Error: 
39                Last_SQL_Errno: 1007
40                Last_SQL_Error: Error 'Can't create database 'a1'; database exists' on query. Default database: 'a1'. Query: 'create database a1'
41   Replicate_Ignore_Server_Ids: 
42              Master_Server_Id: 1
会在从服务器上报错
而此时在主服务上在做如MariaDB [(none)]> create database f1;,在从服务上就开始不复制了,两边数据不成功同步了。
如果只是这么简单的错误的话,可以通过drop database a1 ,关闭线程,stop slave ,然后重新启动线程start slave
如果不知道是什么原因导致的,如是一条命令的冲突,可以直接把这条记录删掉,先忽悠掉这个数据
sql_slave_skip_counter = N 从服务器忽略几个主服务器的复制事件,global变量
先停止复制
stop slave;
忽略一个错误
set global sql_slave_skip_counter = 1;

启动线程

start slave;
临时跳过了这个问题,记录少的话,手工更改,记录多的话,在其他电脑上做从节点,重新来
也可以忽略故障号:如这个1007
show slave statusG
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.7
                  Master_User: alex
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000008
          Read_Master_Log_Pos: 1221
               Relay_Log_File: mariadb-relay-bin.000003
                Relay_Log_Pos: 876
        Relay_Master_Log_File: mysql-bin.000008
             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: 1007
                   Last_Error: Error 'Can't create database 'a1'; database exists' on query. Default database: 'a1'. Query: 'create database a1'

修改配置文件

vim /etc/my.cnf
slave-skip-errors=1007
----------多个可以用逗号隔开
slave-skip-errors=1007,1062

systemctl restart mariadb 重启服务器,重启服务器也会重启线程,除了第一次不会自动重启线程

原文地址:https://www.cnblogs.com/alexlv/p/14293725.html