直接在服务的日志中打印出mysql语句的方法:
编辑oslo_db模块中的如下文件:
oslo_db/sqlalchemy/session.py
在函数:create_engine 中开启 echo的调试属性:
def create_engine(sql_connection, sqlite_fk=False, mysql_sql_mode=None,
idle_timeout=3600,
connection_debug=0, max_pool_size=None, max_overflow=None,
pool_timeout=None, sqlite_synchronous=True,
connection_trace=False, max_retries=10, retry_interval=10,
thread_checkin=True, logging_name=None):
"""Return a new SQLAlchemy engine."""
url = sqlalchemy.engine.url.make_url(sql_connection)
engine_args = {
"pool_recycle": idle_timeout,
'convert_unicode': True,
'connect_args': {},
'logging_name': logging_name,
'echo': True
}
保存后,重启需要跟踪的服务比如:nova-api。然后执行操作,就可以在nova-api的日志中看到实际访问的mysql语句。