```[mysqld]
log_timestamps=system
sql_mode=NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
datadir=/home/data/mysql/data
socket=/var/lib/mysql/mysql.sock
log-error=/home/data/mysql/logs/mysqld.log
pid-file=/home/data/mysql/mysqld.pid
max_connections=3000
max_allowed_packet=64M
auto_increment_increment=1
auto_increment_offset=2
slave_skip_errors=1032,1062
######mgr配置######
server_id=1
gtid-mode=on
enforce-gtid-consistency=ON
binlog_checksum = NONE
lower-case-table-names = 1
log_bin=binlog
binlog-ignore-db=user_info
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="a876d35e-9110-11e6-a365-842b2b5909d6"
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address= "192.168.30.2:33061"
loose-group_replication_group_seeds= "192.168.30.2:33061,192.168.30.3:33061,192.168.30.4:33061"
loose-group_replication_bootstrap_group=OFF
loose-group-replication-ip-whitelist="192.168.30.2,192.168.30.3,192.168.30.4"
sql_generate_invisible_primary_key=ON
loose-group_replication_single_primary_mode=OFF
loose-group_replication_enforce_update_everywhere_checks = ON
report_host=192.168.30.2
report_port=3306
MySQL配置文件,现在是用了集群同步数据,binlog-ignore-db=user_info 设置了不同步,但是别的服务器库中发生了变化,还是会同步
基于new bing部分指引作答:
根据您提供的 MySQL 配置文件,该配置已经设置了集群同步数据并且正确地将 binlog-ignore-db 设置为了 user_info 数据库,从而在主库上忽略了该数据库的同步操作。但是如果其他服务器上 user_info 这个数据库发生了变化,这些变化都被记录到该服务器的 binlog 中,那么在同步过程中,集群仍然会将这些变化同步到其他服务器上。因此,即使在一个服务器上忽略了某个数据库的同步,但只要在任何一个其他服务器上进行的更改都仍将被记录并同步到其他服务器。
如果您希望不同步其他服务器对于该数据库的变化,建议在所有涉及到该数据库的服务器上都正确地设置 binlog-ignore-db=user_info,并且同时要确保服务器上的 binlog 没有记录到 user_info 数据库的变化,这样才能真正达到“不同步”的效果。另外,需要注意的是,如果在服务器运行过程中修改了 MySQL 配置文件,必须重启 MySQL 服务以使配置文件生效。
真是情况不建议这么做,集群就是为了同步数据的,不同步的情况下建议分库
两个服务器都是使用mysql 5.7,使用宝塔修改数据库配置即可,然后登录终端操作
针对问题: 如何在MySQL集群中指定某个数据库不进行同步?
首先需要确认使用的MySQL集群版本,以及需要指定不进行同步的是主从同步还是其他类型的同步。
对于MySQL主从同步,可以通过在从库上进行的一些配置来指定不进行同步的数据库。
步骤如下: 1. 登录从库MySQL,进入MySQL命令行。 2. 执行以下命令,指定不需要同步的数据库名,使用“;"分隔多个数据库。 SET @@GLOBAL.SQL_SLAVE_SKIP_COUNTER = 1; SET @@GLOBAL.REPLICA_IGNORE_DB = "db1;db2";
其中,“db1;db2”需要替换成实际需要指定的不同步的数据库名,多个数据库名用“;"分隔。 3. 验证是否成功,可以在从库上执行以下命令: SHOW SLAVE STATUS\G;
查看输出的结果中,是否存在“Replicate Ignore DB”的设置。
如果是其他类型的同步,可以通过改变同步规则的配置来实现。具体如何配置需要根据不同的同步规则而定,需要结合具体的情况进行处理。
需要注意的是,如果已经存在同步任务,则需要在修改配置之后,重新启动从库的同步任务。
虽然提供了数据库名,但同步过程中并没有真正过滤对应的变更事件。这可能是一个MySQL的Bug,或者配置没有完全生效。
解决Mysql集群数据不同步得方法
可以借鉴下
https://blog.csdn.net/weixin_43464964/article/details/121828490
根据您提供的MySQL配置文件,您设置了binlog-ignore-db=user_info
以防止user_info
数据库的变更被同步到集群中。然而,您表示即使其他服务器的库发生变化,仍然会进行同步。这可能是由于以下原因导致的:
配置文件未正确加载:请确保您所做的更改已经保存,并且MySQL服务器已经重新加载了该配置文件。您可以通过重新启动MySQL服务或执行FLUSH PRIVILEGES
语句来重新加载配置。
复制过滤规则冲突:可能存在其他复制过滤规则或复制通道设置,导致即使设置了binlog-ignore-db
,仍然会同步指定数据库。请检查其他配置文件或MySQL变量,确保没有其他规则干扰您的设置。
复制线程未正确配置:请确保在所有服务器上都正确配置了复制线程。可能存在某些服务器未正确配置复制线程,导致忽略规则无效。
请仔细检查上述情况,并确保配置文件正确加载、没有冲突的过滤规则,并且所有服务器上的复制线程都正确配置。如果问题仍然存在,请提供更多关于集群架构和配置的信息,以便更详细地诊断问题。
如果你需要取消mysql 数据库同步功能,你可以在slave机器上执行:
mysql> reset slave all;
或者,既然你不需要使用同步功能,那么也没有必须要使用集群,直接把数据库迁移或分库。
配置没有生效,如果并发量不是很大的话,其实没有必要用集群