linux mysql replication master to slave configuration 小记

本文探讨MySQL主从复制的基本原理,并针对配置过程中的常见问题给出解决方案,包括binlog-do-db与replication-do-db的区别、远程登录问题及其它注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先讲一下replication的原理:对数据库进行操作时,会产生相应的二进制log文件,其中记载了对数据库所有操作的sql,slave通过指定master二进制log和相应偏移,将二进制log复制过来,从而和master具有相同二进制log,从而执行了完全一模一样的的操作,达到replication。

从原理可以看出,master配置的时候一定要打开bin-log,网上关于master-slave的配置比比皆是,我在此只记录我在配置过程中遇到的问题。

1.关于binlog-do-db :该选项表面上是指,指定对哪个数据库的操作才会产生bin-log,其实不然,该选项是检查在执行sql操作时,当前数据库——即use 的数据库是否为指定值,若是则产生bin-log,否则不产生。举个例子:若binlog-do-db=mytest,若use mytest;则将产生bin-log,若use 其他数据库,即使操作的是mytest,也不会产生bin-log。这就是为什么我在使用时,在mysql command新建一张表会产生bin-log,而转用mysql work bench或用程序建表,而不会产生bin-log的原因。当然也可以设置该用户的默认数据库

2.关于replication-do-db:该选项所产生的问题和上一条一模一样,当bin-log中不use数据库或者use其他数据库,同步也不会被执行,解决方法很简单,改为replication-wild-do-table=database.%就ok了。

3.关于mysql远程登录:这个网上的做法也有很多.1:更改user 表中Host字段为指定ip或ip段或%.2:grant all privileges on *.* to 'username'@'指定ip或ip段或%' identified by 'password' with grant option. 实际上一般的操作错误网上都有解答:我在这碰见的错误是113,实际上是iptable开启,无法访问3306端口,但是已经设置了iptable开机不自动启动,但是每次使用时,都要先service iptable stop 然后重启mysql 服务才可以,这个问题至今没有解决,我会在解决后,更新这部分内容。

4.切记,在刚安装好系统后,要先至少启动一次mysql服务后,再进行修改配置文件,否则会启动不起来,我猜测是因为mysql第一次启动会初始化一些东西,whatever,没时间去深究。

5.若master中存在一张未产生bin-log的表,此后对该表的插入删除操作开启了bin-log,会导致slave报错,需要重新设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值