分享一下我搭建amoeba读写分离时遇到的3个报错
环境描述:
MySQL主:192.168.14.177:3306
MySQL从:192.168.14.7:3306
amoeba:192.168.14.177:8066
问题描述:
MySQL的主从搭建好了,主从同步也没问题;amoeba的主配置文件/usr/local/amoeba/conf/amoeba.xml的配置也没问题,但amoeba启动后能正常登进,却不能正常连接后端的MySQL,进行操作时出现两种报错:
ERROR 2013 (HY000): Lost connection to MySQL server during query
ERROR 2006 (HY000): MySQL server has gone away
还有一种报错,当我用nohup bash -x /usr/local/amoeba/bin/amoeba &启动amoeba时,会有如下报错:amoeba起不来
[1]+ 退出 255 nohup bash -x /usr/local/amoeba/bin/amoeba
我又换了一种方式启动/usr/local/amoeba/bin/amoeba start,让启动结果输出,发现是如下报错:
2023-08-27 11:28:26,432 ERROR net.ServerableConnectionManager - Failure listening to socket on port '8066'.
解决方案:
ERROR 2013 (HY000): Lost connection to MySQL server during query
#mysql接收到连接请求后,获得的是客户端的ip,为了更好的匹配mysql.user里的权限记录(某些是用hostname定义的)。
#如果mysql服务器设置了dns服务器,并且客户端ip在dns上并没有相应的hostname,那么这个过程很慢,导致连接等待。
#添加skip-name-resolve以后就跳过着一个过程了。
#主从都要添加
$ vim /etc/my.com
[mysqld]
skip-name-resolve
$ systemctl restart mariadb
ERROR 2006 (HY000): MySQL server has gone away
#确认Amoeba用户创建成功
#设置每隔600ms进行自动连接MySQL服务器
#登进mysql执行,主从都要执行
mysql>SET SESSION wait_timeout=600;
2023-08-27 11:28:26,432 ERROR net.ServerableConnectionManager - Failure listening to socket on port '8066'.
表示8066端口已经被占用,通过ss -antp | grep :8066我们可以查到占用端口的进程号,再通过kill命令杀死进程即可正常启动服务