Suele pasar mucho con los de business intelligence, data science y sus variantes, puede deberse a varias razones, vamos al grano:
Se podría configurar el cliente o tu script o programa para que cambie esos tiempos a la hora de establecer la conexión y recibir los datos, pero antes debes saber que hay definido y luego ver que ajustas. Haz la siguiente query:
SELECT @@net_write_timeout, @@wait_timeout;
Cada vez que el cliente se conecta hereda una serie de configuraciones globales, pero también puedes ajustar algunas de ellas en tu sesión, como lo vamos hacer ahora. Cada una de esas variables significa algo:
SET SESSION wait_timeout = 300;
SELECT * FROM book WHERE year BETWEEN 2000 AND 2001;
Esto es bastante de probar y ajustar hasta conseguir los valores adecuados, recuerda que la cache y el buffer pool también pueden jugartela con los tiempos de respuesta.
Las variables las puedes cambiar en su conexión / session de MySQL sin perjudicar el resto del comportamiento del cluster.
Adicionalmente, recomiendo hacer lecturas de datos sin generar bloqueos que pueda comprometer la replicación o una transacción entre otras cosas, para ello debes definir el nivel de aislamiento transaccional:
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM book WHERE year BETWEEN 2000 AND 2001;
Fin.