您的位置:首页 > 运维架构 > Linux

linux mysql replication master to slave configuration 小记

2012-02-08 11:16 423 查看
首先讲一下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报错,需要重新设置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐