Mysql 5.0 Replication 说明

   Mysql 5.0正式的版本,我是在11月1号下的,好象从他网站上看10月24号就公布了,目前下的是5.015. Replicatons配置目前中文资料不多,主要是基于 4和3的一些配置方法。开始我也是参照这些资料配置的,不过后来发现总是不能同步。开始以为是人家写错了,或者自己没准确按照步骤执行,可后来检查多次发现的确没错。那到底怎么会事儿? 想来想去,唯一可能就是Mysql 5.0的配置方法有所不同,其实最好的方法还是去看Mysql 5.0自己的手册。网上已经有多篇关于这个的说明,这里不具体描述。以下是一些我找到的中文资源,如果有兴趣最好先看看中文的内容。附注(1,2)都是一些中文资源。 当然最好还是看Mysql自己的5.0说明文档第六章(附注 3)有专门介绍。实际Mysql 自己说明上讲的非常清楚该怎么配置,唯一问题是你是不是有耐心看完着一堆洋文。
  如果你没耐性看完Mysql的手册,那么你就照着我下面列出的注意事项,参照中文步骤配置。我这里只记录一些5.0需要注意的内容,和我认为和以前版本有较大区别的地方。有些地方我也没完全搞明白,抱着能用就成的想法,也没具体深究,其实如果有工夫,真可以再自己看看。

1  最关键的,当然就是Slave的权限问题。 很多在3/4 上能配置起来可到了5以后怎么也配置不起来的主要问题,就是Slave的权限。 以前只  Grant  file  权限是不够的,必须有管理权限。否则你怎么配置也一样不能复制,这个就是关键。 在配置Salve端的时候 一定要给连接用户赋管理员权限,这个权限与数据库权限不同。
GRANT SUPER,REPLICATION CLIENT,REPLICATION SLAVE,RELOAD ON *.* TO repl@"%" IDENTIFIED BY 'repl_pass'; 如果你只为好玩,哪给你个建议不管哪端都 Grant all,这样应该最保险。不过这个只是自己开发测试用的偷懒方法,如果你真打算当作应用来使用。哪还是老老实实的一个个权限赋。

2  如果Master 和 Slave是在2个网段的机器,那么实际上Master的 remote user应该不止 Slave哪个ip的user。这个具体是为什么大家可以自己象,我举个列子 Master : 192.168.1.3 , Slave : 10.145.1.2
那么在Master上不光要配置一个 backup@ 10.145.1.2 还需要配置一个 backup@192.168.1.1 ,而且这个backup@192.168.1.1需要Slave client 的权限。具体为什么可以自己想,我只说明我在实际配置中遇到的情况。

3 关于双向Replications 的问题。 这里需要说明的server-id ,对于使用 Replications 功能,server-id 不能是<2的id,反正手册上说0是不可以的,我试验也的确不成,最好是设置大点。我的做法是master从99开始计数。slave都是连续-1。使用Replications必须 Master机my.ini/my.conf上添加 log-bin 这个参数。如果你要自己指定日志名称可以 log-bin= /user/xxxxx/longname 或者  log-bin= c: logname。这里要说明的是在windows上 文件路径是要写成 c:logname,不能有/。

4 另外需要注意的就是binlog产生后,如何设置同步点的问题。由于mysql 只会在第一次设置my.ini/my.conf文件的时候读取默认mysqld段中replications信息。因此一但产生了master.info信息,那么以后每次读取同步点信息都是从这个文件里读取,你怎么改mysqld里的配置信息都没有。所以才需要mysql 命令 master chang to +相应变量修改来修改同步点信息。 master.info信息在 data目录下,我没试过linux下mysql 的实际文件产生位置,应该差不多。如果需要修改同步配置信息。2个方法。最省事情的方法就是停掉mysql 的服务,然后删除master.info和log信息文件。这样mysql再下次启动的时候会重新读取mysqld里的信息。当然这有个前提,replication 动作已经是成功的。否则如故master_log_file和master_log_pos等等信息不对,那么就算重新配置了,你还是需要用change master to 来修改。 第二个方法就是用change master to 来修改。这个修改动作都是在slave 机器上进行的。首先你需要用 slave stop 停掉slave 服务,然后是change master to ,最后slave start.

5 replication 的数据库需要指定,在master 机器上用 binlog-do-db= dbname 来指定,这个参数可以重复多个,来指定多个数据库的replication  .在slave 上用replicate-do-db=dbname 来指定。

6 最后一个可能遇到的问题就是怎么把master 机器的数据库load 到slave上。据说最省事的方法是 load data from master。不过我实验N 次都以失败告终。当然我遇到的问题,可能不是配置问题,而是数据库本身的问题,因为根据报错信息,好象我原来用的数据库中表里字段存在没有设置默认信息的。总是导了一个表就over掉了。这里顺便说一下,mysql 推出了migration toolkit工具,不过我发现这个东西并不象他说的那么好。对于异构数据库要求比较严格,个别是表结构语法都要求比较严格。个人认为用处不大。 我load数据的方法很简单,使用mysql 自己的administrator 工具,直接备份,然后restore到slave上。这里需要注意的是,我发现mysql目前对他自己view支持的也不是非常完善,view 的确可以使用,但在restore的时候总会出些奇怪问题,如果用他的工具看view 的source 也是不完整的。我估计他的ddl还是不够完善,不过有总比没有强。

7 关于 mysql 的版本问题,mysql 5.0说明上指出,新版本并不完全兼容老版本的replication ,所以master/slave的 mysql版本选择,最好不要搞的不一样。少麻烦的方法就都装同一个版本。这样不需要考虑版本兼容问题。

   最后要说的是replication 配置能一次 ok的可能性不大,肯定要多试几次。出了问题注意多看mysql 自己的services log 。个人感觉mysql administraotr 这个工具很不错。如果配置不成功 slave  的log上总会有Error提示你为什么的。Mysql replication 配置目前我也只是知道一些皮毛,并不完全掌握。而且在使用中发现,曾经出现多次slave 不能正常停止,造成master整个replication库全都当掉,基本就是数据库被毁掉了。当然这个可能和我操作有很大关系,因为在配置的时候实验了很多方法。但个人感觉replication 功能虽然是可以用的,但用的时候一定要小心,特别是注意master机的备份工作,否则真要DB 嗖的一下不见了,后果...... 总之小心驶的万年船。


附注:
1. 
http://art.21e.cn/tec/server/database/3950.html
2. 
http://www.21ds.net/article/database/MySQL/2005-06/09/584_1.html
3.  http://dev.mysql.com/doc/refman/5.0/en/replication.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL Group ReplicationMySQL的一个高可用性和可扩展性解决方案,它提供了一种基于多主复制的方式来保证数据的一致性和高可用性。以下是MySQL Group Replication的搭建步骤: 1. 安装MySQL Group Replication插件 在MySQL安装完成后,需要在MySQL的配置文件中启用Group Replication插件。在配置文件中添加以下内容: ``` [mysqld] plugin-load=group_replication.so ``` 2. 配置MySQL Group ReplicationMySQL Group Replication中,需要配置每个节点的IP地址和端口号。可以通过以下命令在MySQL客户端中配置: ``` SET GLOBAL group_replication_local_address='IP:PORT'; ``` 其中,IP是当前节点的IP地址,PORT是当前节点的端口号。 3. 启动MySQL Group Replication 在配置完成后,需要启动MySQL Group Replication。可以通过以下命令在MySQL客户端中启动: ``` SET GLOBAL group_replication_bootstrap_group=ON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=OFF; ``` 其中,group_replication_bootstrap_group参数用于指定是否要启动新的Group Replication组。如果是第一次启动,则需要将该参数设置为ON,否则设置为OFF即可。 4. 加入其他节点 在第一个节点启动后,可以将其他节点加入到Group Replication组中。可以通过以下命令在MySQL客户端中加入其他节点: ``` SET GLOBAL group_replication_allow_local_disjoint_gtids_join=ON; START GROUP_REPLICATION; ``` 其中,group_replication_allow_local_disjoint_gtids_join参数用于指定是否允许本地节点加入到一个已经存在的Group Replication组中。如果是第一次加入,则需要将该参数设置为ON,否则设置为OFF即可。 5. 检查MySQL Group Replication状态 在完成以上步骤后,可以通过以下命令在MySQL客户端中检查MySQL Group Replication的状态: ``` SELECT * FROM performance_schema.replication_group_members; ``` 该命令可以查看Group Replication组中的所有节点,并检查节点的状态是否正常。 以上就是MySQL Group Replication的搭建步骤。需要注意的是,在配置和启动Group Replication时,需要保证节点的IP地址和端口号已经正确配置,并且所有节点的MySQL版本和Group Replication插件版本一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值