2025年mysql replicate_do_db_关于replicate_do_db和replicate_ignore_db的坑

mysql replicate_do_db_关于replicate_do_db和replicate_ignore_db的坑在 5 7 版本支持动态修改 之前的版本需要重启数据库 STOP SLAVE SQL THREAD CHANGE REPLICATION FILTER REPLICATE IGNORE DB demo START SLAVE SQL THREAD 问题描述 在主库执行语句 如果不使用 use db

大家好,我是讯享网,很高兴认识大家。

在5.7版本支持动态修改,之前的版本需要重启数据库:

STOP SLAVE SQL_THREAD;

CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB=(demo);

START SLAVE SQL_THREAD;

问题描述

在主库执行语句,如果不使用use db;

创建新表的语句不会在从库执行,进而导致主从错误

场景复现

从库配置:

replicate-ignore-db = test

replicate-do-db = abc

主库操作:

22:29:04test>use test;

Database changed

22:30:26test>create table abc.t0417(id int,name varchar(20));

Query OK, 0 rows affected (0.08 sec)

22:31:37abc>use test;

Database changed

22:32:05test>insert into abc.t0417 values(1,‘a‘);

Query OK, 1 row affected (0.02 sec)

从库状态,SQL线程出现报错:

22:31:07abc>show slave status \G

* 1. row *

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.136.128

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000015

Read_Master_Log_Pos: 8478

Relay_Log_File: cptest-relay-bin.000007

Relay_Log_Pos: 1292

Relay_Master_Log_File: mysql-bin.000015

Slave_IO_Running: Yes

Slave_SQL_Running: No

Replicate_Do_DB: abc

Replicate_Ignore_DB: test

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 1146

Last_Error: Error executing row event: ‘Table ‘abc.t0417‘ doesn‘t exist‘

Skip_Counter: 0

Exec_Master_Log_Pos: 8235

Relay_Log_Space: 1709

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 executing row event: ‘Table ‘abc.t0417‘ doesn‘t exist‘

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_UUID: 4ac80f6d-8063-11e7-9d63-000c291d913c

Master_Info_File: /data/mysql/mysql3309/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State:

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp: 22:32:20

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 4ac80f6d-8063-11e7-9d63-000c291d913c:3609-3630

Executed_Gtid_Set: 4ac80f6d-8063-11e7-9d63-000c291d913c:1:3609-3629,

a1c747e9-4170-11e8-883f-000c29c6b279:1

Auto_Position: 0

1 row in set (0.00 sec)

解决问题

更改从库配置:

#replicate-ignore-db = test

#replicate-do-db = abc

replicate_wild_do_table = abc.%

replicate_wild_ignore_table = test.%


讯享网

主库操作:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 65

Server version: 5.6.35-log Source distribution

Copyright (c) 2000, 2016, 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.

caopeng@192.168.136.128 00:39:16(none)>use test;

Database changed

caopeng@192.168.136.128 00:39:32test>create table abc.test0417(id int,name varchar(20));

Query OK, 0 rows affected (0.17 sec)

caopeng@192.168.136.128 00:40:25test>insert into abc.test0417 values(1,‘b‘);

Query OK, 1 row affected (0.11 sec)

从库状态:

root@localhost 00:39:06(none)>show slave status \G

* 1. row *

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.136.128

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000015

Read_Master_Log_Pos: 9644

Relay_Log_File: cptest-relay-bin.000010

Relay_Log_Pos: 771

Relay_Master_Log_File: mysql-bin.000015

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table: abc.%

Replicate_Wild_Ignore_Table: test.%

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 9644

Relay_Log_Space: 945

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:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_UUID: 4ac80f6d-8063-11e7-9d63-000c291d913c

Master_Info_File: /data/mysql/mysql3309/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 4ac80f6d-8063-11e7-9d63-000c291d913c:3609-3635

Executed_Gtid_Set: 4ac80f6d-8063-11e7-9d63-000c291d913c:1:3609-3635,

a1c747e9-4170-11e8-883f-000c29c6b279:1-6

Auto_Position: 0

1 row in set (0.00 sec)

root@localhost 00:40:54(none)>select * from abc.test0417;

+------+------+

| id | name |

+------+------+

| 1 | b |

+------+------+

1 row in set (0.00 sec)

总结

使用replicate_do_db和replicate_ignore_db两个参数时在主库操作需要使用use db;然后再进行其他操作

推荐使用replicate_wild_do_table,

replicate_wild_ignore_table

小讯
上一篇 2025-02-06 21:37
下一篇 2025-03-27 21:53

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/49507.html