check_sync_data.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # 检查详细的复制状态
  2. SLAVE_POD=$(kubectl get pod -n mysql -l role=slave -o jsonpath='{.items[0].metadata.name}')
  3. MASTER_POD=$(kubectl get pod -n mysql -l role=master -o jsonpath='{.items[0].metadata.name}')
  4. echo -e "\n=== 测试数据同步 ==="
  5. echo -e "\n===Master: $MASTER_POD ==="
  6. echo -e "\n===Slave: $SLAVE_POD ==="
  7. # 在主节点创建测试数据
  8. echo "1. 在主节点创建测试数据:"
  9. kubectl exec -n mysql $MASTER_POD -- mysql -uroot -pLq123456! -e "
  10. CREATE DATABASE IF NOT EXISTS replication_test;
  11. USE replication_test;
  12. CREATE TABLE IF NOT EXISTS sync_data (
  13. id INT AUTO_INCREMENT PRIMARY KEY,
  14. message VARCHAR(100),
  15. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  16. );
  17. -- 清空旧数据(如果有)
  18. TRUNCATE TABLE sync_data;
  19. -- 插入新数据
  20. INSERT INTO sync_data (message) VALUES
  21. ('第一条测试数据'),
  22. ('第二条测试数据'),
  23. ('第三条测试数据');
  24. SELECT * FROM sync_data ORDER BY id;
  25. "
  26. echo -e "\n2. 等待3秒确保数据同步..."
  27. sleep 3
  28. echo -e "\n3. 在从节点查询数据:"
  29. kubectl exec -n mysql $SLAVE_POD -- mysql -uroot -pLq123456! -e "
  30. USE replication_test;
  31. SELECT * FROM sync_data ORDER BY id;
  32. SELECT COUNT(*) as total_records FROM sync_data;"
  33. echo -e "\n4. 检查从节点只读模式:"
  34. echo "尝试在从节点写入数据(应该失败)..."
  35. kubectl exec -n mysql $SLAVE_POD -- mysql -uroot -pLq123456! -e "
  36. INSERT INTO replication_test.sync_data (message) VALUES ('从节点尝试写入');" 2>&1 | grep -i "error\|read-only" || echo "✅ 写入被阻止(符合预期,从节点是只读的)"