如何在Docker部署的Scylla中查看执行的原始CQL查询语句
打印Scylla执行的CQL查询到Docker日志或控制台
方法1:通过Scylla配置开启查询日志(推荐,查看引擎实际执行的语句)
Scylla支持直接开启查询日志,日志会输出到容器的标准输出/错误流,可通过docker logs直接查看。
直接通过Docker命令启动Scylla时,添加参数开启查询日志:
docker run -d --name scylla scylladb/scylla --query-logging-enabled=true --log-to-stdout=true之后执行
docker logs scylla,就能看到包含CQL查询的日志条目,格式类似:[shard 0] query - SELECT * FROM my_table WHERE id = 123;
使用Docker Compose时,在服务的
command字段追加参数:services: scylla: image: scylladb/scylla command: --query-logging-enabled=true --log-to-stdout=true也可挂载自定义
scylla.yaml配置文件,在文件中添加:query_logging_enabled: true log_to_stdout: true启动容器时挂载该文件:
docker run -d --name scylla -v /path/to/your/scylla.yaml:/etc/scylla/scylla.yaml scylladb/scylla
方法2:在Python驱动层面开启日志(查看客户端发送的语句)
如果只需确认Python代码发送的CQL语句,可直接配置Python日志模块,让兼容Scylla的Cassandra驱动打印发送的查询:
- 在Python代码开头添加日志配置:
运行脚本后,控制台会输出驱动发送的CQL语句,以及连接、执行的相关细节。import logging # 开启Cassandra驱动的DEBUG日志 logging.basicConfig(level=logging.DEBUG) logging.getLogger('cassandra').setLevel(logging.DEBUG)
方法3:使用Scylla系统表查询(查看近期执行的查询)
Scylla提供系统表可查询近期执行的语句,适合事后排查:
- 进入容器的CQL shell:
docker exec -it scylla cqlsh - 查询系统表
system_traces.events(需提前开启跟踪)或system.queries(部分版本支持):SELECT query FROM system_traces.events WHERE activity LIKE '%CQL%';
内容的提问来源于stack exchange,提问作者Ashraful
相关产品推荐
相关产品推荐

