双主热备
其实就是把前面建立数据库连接这里的步骤重新做一遍,只是有的原来有的不需要增加而已。为了更直观,下面给出两套配置文件的样本。
下面是主机器的[涉及热备]部分配置文件信息
- # Replication Master Server (default)
- # binary logging is required for replication
- log-bin=mysql-bin
- # binary logging format - mixed recommended
- binlog_format=mixed
- # required unique id between 1 and 2^32 - 1
- # defaults to 1 if master-host is not set
- # but will not function as a master if omitted
- server-id = 1
- # 上面是自带的内容,下面是增加的内容。
- read-only = 0
- binlog-do-db = text #text是假设的数据库名
- # 如果用排除的形式,do 改为 ignore ,一行一条,如果不懂返回前面看哈。
- auto-increment-increment = 2
- auto-increment-offset = 1
- replicate-do-db = text
- # 如果用排除的形式,do 改为 ignore ,一行一条,如果不懂返回前面看哈。
- relay_log = mysqld-relay-bin
- log-slave-updates = ON
下面是备份机[涉及热备]部分配置文件信息
- # Replication Master Server (default)
- # binary logging is required for replication
- log-bin=mysql-bin
- # binary logging format - mixed recommended
- binlog_format=mixed
- # required unique id between 1 and 2^32 - 1
- # defaults to 1 if master-host is not set
- # but will not function as a master if omitted
- server-id = 2
- # 上面除了这个server-id = 1 改为2,其他不变,下面是增加的内容。
- replicate-do-db = text
- relay_log = mysqld-relay-bin
- log-slave-updates = ON
- read-only = 0
- binlog-do-db = text
- auto-increment-increment = 2
- auto-increment-offset = 2
只要细心从前面看一遍,下面最后这里给出的配置文件大家都不难看出的。然后步骤都一样。注意server-id和auto-increment-offset 两个文件的值必须不一样哈!!!
首先:把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,打开搜索日期或者时间,注意环境不同日期写的格式有点不同,先看看他们的日期格式,然后搜索,然后找到时间和你操作时间一样的看看。找不到的话可能是你系统时间不准导致。
- 170101 17:10:04 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
- 170101 17:10:04 [Note] - '0.0.0.0' resolves to '0.0.0.0';
- 170101 17:10:04 [Note] Server socket created on IP: '0.0.0.0'.
- 170101 17:10:04 [ERROR] Failed to open the relay log './xx-relay-bin.000002' (relay_log_pos 1515)
- 170101 17:10:04 [ERROR] Could not find target log during relay log initialization
- 170101 17:10:04 [ERROR] Failed to initialize the master info structure
- 170101 17:10:04 [Note] Event Scheduler: Loaded 0 events
- 170101 17:10:04 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
- Version: '5.5.2-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution
- 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的也一起删除,切记别把不相关的其他文件删除。比如上面这里可以用指令:
- rm -rf xx-relay-*
日志文件控制
如果想控制日志文件天数,不要让他一直增加,在数据库配置文件里查找expire_logs_days这个参数,设置时间改为想要的,比如5就是五天。如下:
- 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
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助