mysql查询表时报1142_mysql-MHA切换或检查复制时报1142问题定位和解决

====模拟当前slaves之间relay log存在差异,当前master mysql服务关闭后的mha自动切换

====1、在没有设置master_ip_failover_script的情况下的切换测试:测试预想结果:自动切换成功

=============================================

1)在241上,制造relay log同步不一致情况

mysql> stop slave io_thread;

Query OK, 0 rows affected (0.02 sec)

2)在原来主库108上,shutdown mysql

[root@rac1 script]# mysqladmin -uroot -p shutdown

在管理主机查看日志没有任何日志:

tail -30 /var/log/masterha/app1/app1.log

Thu May 17 18:04:09 2012 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn't respond..

Fri May 18 10:26:04 2012 - [info] Got terminate signal. Exit.

原来是masterha没有启动:

[root@racdb ~]# masterha_check_status --conf=/etc/app1.cnf

app1 is stopped(2:NOT_RUNNING).

使用后台进程模式启动:

[root@racdb mha4mysql-manager-0.53]# nohup masterha_manager --conf=/etc/app1.cnf --remove_dead_master_conf < /dev/null > /var/log/masterha/app1/app1.log 2>&1 &

查看日志,启动失败退出。

3)、尝试重启108上的mysql,修改change master to master_host和master_log_file以及master_log_pos;

但没有设置master_user和master_password,报如下错误:

[root@racdb ~]# masterha_check_repl --conf=/etc/app1.cnf

Wed May 23 11:55:18 2012 - [error][/usr/lib/perl5/site_perl/5.8.8/MHA/Server.pm, ln381] 192.168.133.108(192.168.133.108:3306): User  does not exist or does not have REPLICATION SLAVE privilege! Other slaves can not start replication from this host.

Wed May 23 11:55:18 2012 - [error][/usr/lib/perl5/site_perl/5.8.8/MHA/MasterMonitor.pm, ln383] Error happend on checking configurations.  at /usr/lib/perl5/site_perl/5.8.8/MHA/ServerManager.pm line 1305

4)、通过增加change master_user和master_password,解决user not exists问题;继续检查复制报如下错误。但,实际的复制没有问题。

[root@racdb ~]# masterha_check_repl --conf=/etc/app1.cnf

Wed May 23 12:03:20 2012 - [info]   Connecting to root@192.168.133.108(192.168.133.108:22)..

Checking slave recovery environment settings..

Opening /var/lib/mysql/relay-log.info ... ok.

Relay log found at /var/lib/mysql, up to rac1-relay-bin.000002

Temporary relay log file is /var/lib/mysql/rac1-relay-bin.000002

Testing mysql connection and privileges..ERROR 1142 (42000) at line 1: CREATE command denied to user 'root'@'rac1.mttang.com' for table 'apply_diff_relay_logs_test'

mysql command failed with rc 1:0!

at /usr/bin/apply_diff_relay_logs line 348

main::check() called at /usr/bin/apply_diff_relay_logs line 467

eval {...} called at /usr/bin/apply_diff_relay_logs line 447

main::main() called at /usr/bin/apply_diff_relay_logs line 110

Wed May 23 12:03:20 2012 - [error][/usr/lib/perl5/site_perl/5.8.8/MHA/MasterMonitor.pm, ln193] Slaves settings check failed!

Wed May 23 12:03:20 2012 - [error][/usr/lib/perl5/site_perl/5.8.8/MHA/MasterMonitor.pm, ln372] Slave configuration failed.

Wed May 23 12:03:20 2012 - [error][/usr/lib/perl5/site_perl/5.8.8/MHA/MasterMonitor.pm, ln383] Error happend on checking configurations.  at

没有做任何修改,后莫名奇妙的恢复。(此记1次)

5)、再次手工shutdown 192.168.133.109 master主库

检查app1.log出现如下错误:

Wed May 23 17:13:37 2012 - [error][/usr/lib/perl5/site_perl/5.8.8/MHA/MasterFailover.pm, ln295] Last failover was done at 2012/05/23 11:04:38. Current time is too early to do failover again. If you want to do failover, manually remove /var/log/masterha/app1/app1.failover.complete and run this script. again.

Wed May 23 17:13:37 2012 - [error][/usr/lib/perl5/site_perl/5.8.8/MHA/ManagerUtil.pm, ln178] Got ERROR:  at /usr/bin/masterha_master_switch line 53

解决方法:

rm -f /var/log/masterha/app1/app1.failover.complete

重新手工切换(或不用手工切换,直接运行manager),成功切换。

接下来,继续测试,在manager running的情况下,无master_ip_failover_script设置下的自动切换。注意,自动切换时,因为masterha_manager --remove_dead_master_conf  所以App1.cnf 中server1已经删除,检查不会出现问题,需要动态在/etc/app1.cnf中增加如下配置:

masterha_conf_host --command=add --conf=/etc/app1.cnf --hostname=192.168.133.109 --block=server1 --params="candidate_master=1;ignore_fail=1"

循环执行上述步骤到第4)步;上述问题重现。如果192.168.133.109上的skip-name-resolve没有设置,重启mysql后,检查则会报Create command denied to user  'root'@'rac2.mttang.com' for table 'apply_diff_relay_logs_test'

mysql command failed with rc 1:0!

at /usr/bin/apply_diff_relay_logs line 348

main::check() called at /usr/bin/apply_diff_relay_logs line 467

eval {...} called at /usr/bin/apply_diff_relay_logs line 447

main::main() called at /usr/bin/apply_diff_relay_logs line 110

如果,修改133.109上的my.cnf设置skip-name-resolve;则报如下错误:

Thu May 24 14:46:01 2012 - [info] Checking SSH publickey authentication and checking recovery script. configurations on all alive slave servers..

Thu May 24 14:46:01 2012 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user=root --slave_host=192.168.133.109 --slave_ip=192.168.133.109 --slave_port=3306 --workdir=/var/log/masterha/app1 --target_version=5.5.20-log --manager_version=0.53 --relay_log_info=/var/lib/mysql/relay-log.info  --relay_dir=/var/lib/mysql/  --slave_pass=xxx

Thu May 24 14:46:01 2012 - [info]   Connecting to root@192.168.133.109(192.168.133.109:22)..

Checking slave recovery environment settings..

Opening /var/lib/mysql/relay-log.info ... ok.

Relay log found at /var/lib/mysql, up to rac2-relay-bin.000002

Temporary relay log file is /var/lib/mysql/rac2-relay-bin.000002

Testing mysql connection and privileges..ERROR 1130 (HY000): Host '192.168.133.109' is not allowed to connect to this MySQL server

mysql command failed with rc 1:0!

at /usr/bin/apply_diff_relay_logs line

解决方法:grant all privileges on *.* to 'root'@'192.168.133.109' identified by '12345678';

自此,1142在mha failover时的错误解决:在my.cnf中设置skip-name-resolve。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL MHA(Master High Availability)和MySQL双主(Master-Master Replication)是两种不同的高可用性解决方案,它们有以下区别: 1. 架构模式: - MHAMHA采用了主从复制的架构,其中有一个主库(Master)和一个或多个备库(Slave)。在故障发生时,MHA能够自动将备库提升为新的主库。 - 双主:双主架构中有两个主库,每个主库都可以处理读写操作。双主架构在逻辑上实现了数据的同步复制,允许在两个主库之间进行双向数据同步。 2. 数据一致性: - MHA:由于MHA采用了主从复制的架构,数据的写操作只能在主库上进行,然后通过异步复制到备库。因此,在切换过程中可能会有一小段时间的数据不一致性。 - 双主:双主架构允许在两个主库上进行读写操作,因此数据的写操作可以在任意一个主库上进行。通过使用复制冲突检测和解决机制,双主架构可以保证数据的一致性。 3. 系统复杂性: - MHAMHA是一个由脚本和工具组成的复杂解决方案,需要配置和管理多个组件。它需要进行一些额外的设置和监控来确保故障切换的正确性和高可用性。 - 双主:双主架构相对较简单,它只需要在两个主库之间进行适当的配置和同步设置即可。然而,双主架构也需要解决复制冲突和数据一致性的问题。 总的来说,MHA适用于更注重主备切换和高可用性的场景,而双主适用于需要在多个节点之间实现双向数据同步和更灵活的读写操作的场景。选择适合自己需求的解决方案时,需要考虑到数据一致性、系统复杂性以及业务需求等因素。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值