经验分享-mysql主从/双主热备的配置与常规错误排查

双主热备

其实就是把前面建立数据库连接这里的步骤重新做一遍,只是有的原来有的不需要增加而已。为了更直观,下面给出两套配置文件的样本。

下面是主机器的[涉及热备]部分配置文件信息

  1. # Replication Master Server (default)
  2. # binary logging is required for replication
  3. log-bin=mysql-bin
  4. # binary logging format - mixed recommended
  5. binlog_format=mixed
  6. # required unique id between 1 and 2^32 - 1
  7. # defaults to 1 if master-host is not set
  8. # but will not function as a master if omitted
  9. server-id       = 1
  10. # 上面是自带的内容,下面是增加的内容。
  11. read-only = 0
  12. binlog-do-db = text #text是假设的数据库名
  13. # 如果用排除的形式,do 改为 ignore ,一行一条,如果不懂返回前面看哈。
  14. auto-increment-increment = 2
  15. auto-increment-offset = 1
  16. replicate-do-db = text
  17. # 如果用排除的形式,do 改为 ignore ,一行一条,如果不懂返回前面看哈。
  18. relay_log = mysqld-relay-bin
  19. log-slave-updates = ON

下面是备份机[涉及热备]部分配置文件信息

  1. # Replication Master Server (default)
  2. # binary logging is required for replication
  3. log-bin=mysql-bin  
  4. # binary logging format - mixed recommended
  5. binlog_format=mixed
  6. # required unique id between 1 and 2^32 - 1
  7. # defaults to 1 if master-host is not set
  8. # but will not function as a master if omitted
  9. server-id       = 2
  10. # 上面除了这个server-id = 1 改为2,其他不变,下面是增加的内容。
  11. replicate-do-db = text
  12. relay_log = mysqld-relay-bin  
  13. log-slave-updates = ON
  14. read-only = 0
  15. binlog-do-db = text
  16. auto-increment-increment = 2
  17. auto-increment-offset = 2

只要细心从前面看一遍,下面最后这里给出的配置文件大家都不难看出的。然后步骤都一样。注意server-idauto-increment-offset 两个文件的值必须不一样哈!!!

经验分享-mysql主从/双主热备的配置与常规错误排查

首先:把A机器当主机器,B机器当备份机,从上面做一遍步骤。

然后:把B机器当主机器,把A机器当备份机,继续做一遍。配置文件和上面这样一样。增加的内容顺序没有要求。自己看懂即可。

常见问题

如果在测试连接的时候,就提示错误无法登陆。那么首先请确保在主机器上设置的账户、密码、权限是否有误。如果没记录错,那么防火墙是否通顺。在主机器上设置的账户可以登陆的IP是写备用机的,切记!!还有在主机器上设置的账户在主机器上是无法登陆的,因为设置的IP地址指定了从哪个IP地址登陆。切记切记哦!还有检查防火墙是否通顺,实在不行关闭防火墙试试。

还有每次修改mysql配置文件都记得重启一次mysql服务哦!不然配置不生效肯定错误。

如果测试连接没错误,在后面正式连接的时候操作提示错误。一般看日志,由于系统和环境的差异日志所处文件也可能不同。

linux:/usr/local/mysql/var/xxx.err

windows下wamp:E:\wamp\bin\mysql\mysql5.6.17\data\xxx.err

名字一般是机器的名字,所以我这里用xxx来代表,同时也有一个 xxx.pid 文件哈。

打开文件,linux用vim或者vi,打开搜索日期或者时间,注意环境不同日期写的格式有点不同,先看看他们的日期格式,然后搜索,然后找到时间和你操作时间一样的看看。找不到的话可能是你系统时间不准导致。

  1. 170101 17:10:04 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
  2. 170101 17:10:04 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
  3. 170101 17:10:04 [Note] Server socket created on IP: '0.0.0.0'.
  4. 170101 17:10:04 [ERROR] Failed to open the relay log './xx-relay-bin.000002' (relay_log_pos 1515)
  5. 170101 17:10:04 [ERROR] Could not find target log during relay log initialization
  6. 170101 17:10:04 [ERROR] Failed to initialize the master info structure
  7. 170101 17:10:04 [Note] Event Scheduler: Loaded 0 events
  8. 170101 17:10:04 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
  9. Version: '5.5.2-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution
  10. 170101 17:10:32 [Warning] IP address '123.456.789.1' could not be resolved: Temporary failure in name resolu

比如上面这种,提示什么文件找不到之类的,可以把对应的文件,比如 xx-relay-bin.000002 找不到,但是ls查看又可以看到这个文件,那么你可以把xx-relay-index,xx-relay-bin.000001/2,这样的文件都删掉,然后重启mysql服务,让他重新生成。重启指令前面说两次了,这里不说了。

删除文件的时候,指定文件的和指定文件前面名字一样的,只是数字不一样而已的,包括名字-index的也一起删除,切记别把不相关的其他文件删除。比如上面这里可以用指令:

  1. rm -rf xx-relay-*

日志文件控制

如果想控制日志文件天数,不要让他一直增加,在数据库配置文件里查找expire_logs_days这个参数,设置时间改为想要的,比如5就是五天。如下:

  1. expire_logs_days = 5

好了,说到这里也累了,基本都概括在这里了哈。

参考:

感谢下面三个作者文章贡献,参考后重新整理。

http://www.cnblogs.com/zhongweiv/archive/2013/02/01/mysql_replication_circular.html

http://yunnick.iteye.com/blog/1845301

http://blog.csdn.net/binyao02123202/article/details/19323399

 

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情