背景:
Doris数据库无法写入数据,有张大表dwh_data_v2导致内存不足,手动进行重启Doris服务
根据官方docker-compose部署之后,重启FE BE之后启动异常 ,官方Docker Compose 脚本
1.docker-compose重启
docker-compose 重启之后 FE 一直尝试启动 无果
#报错日志信息
wait catalog to be ready. FE type: UNKNOWN. is ready: false
查询相关资料,发现无法启动原因为:
因为有多网卡的存在,或因为安装过 docker 等环境导致的虚拟网卡的存在,同一个主机可能存在多个不同的 ip。当前 Doris 并不能自动识别可用 IP。所以当遇到部署主机上有多个 IP 时,必须通过 priority_networks 配置项来强制指定正确的 IP。
上次启动时候,绑定的ip是 172.16.8.23,这次启动识别ip为 docker0 网卡地址,当前FE节点type为UNKNOWN,无法启动。
解决方法:
#docker-compose文件挂载fe的配置进行修改
version: "3"
services:
fe:
......
volumes:
- /opt/apache-doris/fe/conf/:/opt/apache-doris/fe/conf/
......
be:
......
- /opt/apache-doris/be/conf/:/opt/apache-doris/be/conf/
- /opt/apache-doris/be/bin/:/usr/local/bin/
......
修改FE的配置文件
vi fe/conf/fe.conf
# 最后一行配置(ip按照自己的来配置):
priority_networks=172.16.8.0/24
同理BE的配置文件也需要进行修改
改FE的配置文件
vi be/conf/be.conf
# 最后一行配置(ip按照自己的来配置):
priority_networks=172.16.8.0/24
2.修改配置后进行重启
发现be就无法注册到fe中了
doris-fe | 2023-04-27 07:52:56,232 WARN (heartbeat mgr|34) [HeartbeatMgr.runAfterCatalogReady():139] get bad heartbeat response: type: BACKEND, status: BAD, msg: java.net.ConnectException: Connection refused (Connection refused), beId: 10003, beHost: 172.30.80.3, bePort: 0, httpPort: 0, brpcPort: 0
doris-fe | 2023-04-27 07:53:01,247 WARN (heartbeat-mgr-pool-4|220) [HeartbeatMgr$BackendHeartbeatHandler.call():268] backend heartbeat got exception
doris-fe | org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused (Connection refused)
doris-fe | at org.apache.thrift.transport.TSocket.open(TSocket.java:226) ~[libthrift-0.13.0.jar:0.13.0]
doris-fe | at org.apache.doris.common.GenericPool$ThriftClientFactory.create(GenericPool.java:143) ~[doris-fe.jar:1.2-SNAPSHOT]
doris-fe | at org.apache.doris.common.GenericPool$ThriftClientFactory.create(GenericPool.java:126) ~[doris-fe.jar:1.2-SNAPSHOT]
doris-fe | at org.apache.commons.pool2.BaseKeyedPooledObjectFactory.makeObject(BaseKeyedPooledObjectFactory.java:62) ~[commons-pool2-2.2.jar:2.2]
doris-fe | at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1012) ~[commons-pool2-2.2.jar:2.2]
doris-fe | at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:356) ~[commons-pool2-2.2.jar:2.2]
doris-fe | at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:277) ~[commons-pool2-2.2.jar:2.2]
doris-fe | at org.apache.doris.common.GenericPool.borrowObject(GenericPool.java:95) ~[doris-fe.jar:1.2-SNAPSHOT]
doris-fe | at org.apache.doris.system.HeartbeatMgr$BackendHeartbeatHandler.call(HeartbeatMgr.java:225) ~[doris-fe.jar:1.2-SNAPSHOT]
doris-fe | at org.apache.doris.system.HeartbeatMgr$BackendHeartbeatHandler.call(HeartbeatMgr.java:203) ~[doris-fe.jar:1.2-SNAPSHOT]
doris-fe | at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_342]
doris-fe | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_342]
doris-fe | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_342]
doris-fe | at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_342]
doris-fe | Caused by: java.net.ConnectException: Connection refused (Connection refused)
doris-fe | at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_342]
doris-fe | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_342]
doris-fe | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_342]
doris-fe | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_342]
doris-fe | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_342]
doris-fe | at java.net.Socket.connect(Socket.java:607) ~[?:1.8.0_342]
doris-fe | at org.apache.thrift.transport.TSocket.open(TSocket.java:221) ~[libthrift-0.13.0.jar:0.13.0]
doris-fe | ... 13 more
doris-fe | 2023-04-27 07:53:01,247 WARN (heartbeat mgr|34) [HeartbeatMgr.runAfterCatalogReady():139] get bad heartbeat response: type: BACKEND, status: BAD, msg: java.net.ConnectException: Connection refused (Connection refused), beId: 10003, beHost: 172.30.80.3, bePort: 0, httpPort: 0, brpcPort: 0
BE报错
doris-be | 2023-04-27T07:30:46+00:00 [Note] [Entrypoint]: masterFe = 172.30.80.2
doris-be | 2023-04-27T07:30:46+00:00 [Note] [Entrypoint]: be_addr = 172.30.80.3:9050
doris-be | 2023-04-27T07:30:46+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:30:46+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:30:46+00:00 [Note] [Entrypoint]: feIpArray = 172.30.80.2
doris-be | 2023-04-27T07:30:46+00:00 [Note] [Entrypoint]: feEditLogPortArray = 9010
doris-be | 2023-04-27T07:30:46+00:00 [Note] [Entrypoint]: masterFe = 172.30.80.2:9010
doris-be | 2023-04-27T07:30:46+00:00 [Note] [Entrypoint]: be_addr = 172.30.80.3:9050
doris-be | 2023-04-27T07:30:46+00:00 [Note] [Entrypoint]: priority_networks = 172.30.80.0/24
doris-be | 2023-04-27T07:30:46+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:31:07+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:31:07+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:31:07+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:31:27+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:31:27+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:31:27+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:31:47+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:31:47+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:31:47+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:32:08+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:32:08+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:32:08+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:32:28+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:32:28+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:32:28+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:32:49+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:32:49+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:32:49+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:33:09+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:33:09+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:33:09+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:33:29+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:33:29+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:33:29+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:33:50+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:33:50+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:33:50+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:34:10+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:34:10+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:34:10+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:34:31+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:34:31+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:34:31+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:34:51+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:34:51+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:34:51+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:35:11+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:35:11+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:35:11+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:35:32+00:00 [Warn] [Entrypoint]: start check be status~
doris-be | 2023-04-27T07:35:32+00:00 [Note] [Entrypoint]: MASTER FE is not started. retry.
doris-be | 2023-04-27T07:35:32+00:00 [Note] [Entrypoint]: register is failed, wait next~
doris-be | 2023-04-27T07:35:52+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:36:13+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:36:33+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:36:53+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:37:14+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:37:34+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:37:55+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:38:15+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:38:36+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:38:56+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:39:16+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:39:37+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:39:57+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:40:18+00:00 [Note] [Entrypoint]: BE is not register. retry.
doris-be | 2023-04-27T07:40:38+00:00 [Note] [Entrypoint]: BE is not register. retr
解决方法
发现是官方的一个bug,有大佬回复:
You can’t change password in this Docker IMAGE. Because in BE initiation process, its will execute show frontends using mysql-client. Therefore, if you change the password, the initiation bash script couldn’t execute sql. So an error occurred and BE couldn’t startup normally.
在be容器里面, /usr/local/bin/中的entry_point.sh和init_be.sh脚本中, 使用mysql命令的部分, 加上-p[新密码]
至此重新启动服务之后,服务正常启动
[root@cnbjten7prodoris /opt/doris-compose]# docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
doris-compose-be-1 apache/doris:2.0.0_alpha-be-x86_64 "bash entry_point.sh" be About an hour ago Up About an hour
doris-compose-fe-1 apache/doris:2.0.0_alpha-fe-x86_64 "bash init_fe.sh" fe About an hour ago Up About an hour
3.使用过程中用delete语句报错
ERROR 1105 (HY000): errCode = 2, detailMessage = failed to execute delete. transaction id 17113, timeout(ms) 30000, unfinished replicas [BackendId=TabletId]: 10003=29184, 10003=29186, 10003=29172, 10003=29188, 10003=29174
查询相关案例怀疑是目录权限的问题,进行宿主机挂载的配置文件目录进行授权
chmod 755 -R be/conf
chmod 755 -R fe/conf
重启服务后,进行尝试执行delet语句
MySQL [data_analysis]> delete from dwd_salary_info_115549 where owner_id = '115549' and business_id in ('sheet_178863241231998976');
Query OK, 0 rows affected (0.11 sec)
{'label':'delete_cc1dac54-588b-42f6-9ce4-ba9cb390873b', 'status':'VISIBLE', 'txnId':'18003'}
- 转载请注明来源:Doris 踩坑系列
- 本文永久链接地址:https://www.xionghaier.cn/archives/1351.html