check_sync_data.sh 1.4 KB

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