中山网站建设哪家便宜,北京十大必逛的商场,毛戈平化妆培训学校官网,仿淘宝网站制作场景#xff1a;早上来发现一个程序#xff0c;链接mysql数据库有点问题#xff0c;随后排查#xff0c;因为容器在k8s里面。所以尝试重启了pod没有效果
一、重启pod: 这里是几种在Kubernetes中重启Pod的方法:
删除Pod,利用Deployment重建
kubectl delete pod mypodDepl…场景早上来发现一个程序链接mysql数据库有点问题随后排查因为容器在k8s里面。所以尝试重启了pod没有效果
一、重启pod: 这里是几种在Kubernetes中重启Pod的方法:
删除Pod,利用Deployment重建
kubectl delete pod mypodDeployment控制器会重建新的Pod 使用kubectl edit直接编辑Pod定义,设置spec.restartPolicy为Always 利用RollingUpdate触发Pod重启:
kubectl rollout restart deployment mydeploy利用kubectl exec远程执行重启命令:
kubectl exec mypod -- /bin/sh -c reboot设置PodTemplate的LastAppliedConfigAnnotation触发重启
以上都是些常用的在K8s中重启Pod的方式。
根据需要选择合适的方法。删除重建和RollingUpdate比较流畅,适合批量重启。exec命令适用于个别Debug场景的重启。
二、强制停止服务 有几种方法可以完全停掉Kubernetes集群中的Pod:
缩容Deployment:
kubectl scale deployment my-deploy --replicas0 这会将Pod的副本数设置为0,停止所有Pod。
移除Pod selector标签:
编辑Deployment,移除pod模板中的标签,如appmyapp。这会使现有Pod与部署不匹配而被删除。
编辑Deployment的.spec.pausedtrue
这会暂停Deployment的操作,停止重新创建Pod。
删除Namespace:
kubectl delete namespace my-ns删除命名空间也会删除其中的所有Pod。
所以通过组合使用上述方法,可以完全删除或停止Namespace和Deployment中的Pod。
注意完全停Pod可能会影响服务,要根据实际情况平滑处理。
三、检查mysql 通过show processlist; 发现有大量的Waiting for table metadata lock
命令查询及批量删除 要批量kill掉那些因等待表元数据锁(Waiting for table metadata lock)而被阻塞的连接,可以使用如下方法:
查找那些被阻塞的连接:
SELECT * FROM information_schema.processlist
WHERE state Waiting for table metadata lock
AND time 60; 这会返回所有被阻塞超过60秒的连接。
然后批量kill掉这些连接:
SELECT concat(KILL , id, ;) FROM information_schema.processlist
WHERE state Waiting for table metadata lock
AND time 60;这会生成一系列的KILL语句。
复制这些KILL语句并执行,就能有效终止那些被长时间阻塞的连接,释放表锁。
注意提前检查需要KILL的连接,避免影响正处理重要任务的连接。
tips: 1.要用对特权账户有些业务账户无法kill特权账户执行的sql。 2.要有倒序查看卡在第一个的sql然后执行kill 3.应用停止之后数据库没有新增的输入输出了然后kill到lock表的ID就可以恢复了
其他解决方法 MySQL中处理锁表的常用方法有: 通过show processlist;命令查看是否有锁表现象发生,分析找出发生锁表的session进程。 通过show engine innodb status\G;命令查看事务是否存在锁等待。 通过增加索引优化查询改善锁表情况。 终止或者重启发生锁表的session进程。可以用kill命令终止进程的方式。 调整隔离级别参数lower_isolation_level,将数据库隔离级别调低,使一些读操作可以忽略锁,从而减少锁表概率。 调整innodb_lock_wait_timeout参数,让锁等待超过指定秒数后返回错误而不是无限等待锁。 对于主从数据库,可以kill主库sessionId后使请求被转移到从库上,避开主库上的锁。
综上,MySQL通过参数调整、进程管理、查询优化、读写分离等方式可以有效处理锁表问题。