troubleshoot.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/bin/bash
  2. echo "=== MySQL主从故障排查 ==="
  3. echo "1. 查看所有资源状态:"
  4. kubectl get all -l app=mysql
  5. echo -e "\n2. 查看Pod详细状态:"
  6. kubectl describe pods -l app=mysql
  7. echo -e "\n3. 查看Pod日志:"
  8. for POD in $(kubectl get pods -l app=mysql -o name); do
  9. echo -e "\n=== $POD 日志 ==="
  10. kubectl logs $POD --tail=20
  11. done
  12. echo -e "\n4. 检查网络连通性:"
  13. MASTER_POD=$(kubectl get pod -l role=master -o name 2>/dev/null | head -1)
  14. if [ ! -z "$MASTER_POD" ]; then
  15. echo "从从节点测试连接主节点服务:"
  16. SLAVE_POD=$(kubectl get pod -l role=slave -o name | head -1)
  17. if [ ! -z "$SLAVE_POD" ]; then
  18. kubectl exec $SLAVE_POD -- sh -c "nc -zv mysql-master 3306 && echo '连接成功' || echo '连接失败'"
  19. fi
  20. fi
  21. echo -e "\n5. 检查MySQL进程:"
  22. for POD in $(kubectl get pods -l app=mysql -o name); do
  23. echo -e "\n=== $POD MySQL进程 ==="
  24. kubectl exec $POD -- ps aux | grep mysql
  25. done
  26. echo -e "\n6. 手动检查复制状态:"
  27. if [ ! -z "$SLAVE_POD" ]; then
  28. echo "从节点复制状态:"
  29. kubectl exec $SLAVE_POD -- mysql -uroot -proot123 -e "SHOW SLAVE STATUS\G" 2>/dev/null || echo "无法连接到MySQL"
  30. fi