MOON
Server: Apache
System: Linux vps.erhabenn.com.br 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64
User: erhabenn (1009)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //lib/mysqlsh/plugins/debug/__pycache__/collect_diagnostics.cpython-39.pyc
a

��kf�s�
@s�ddlmZddlmZmZmZddlmZddlmZm	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZddlmZmZmZmZmZddlmZmZmZmZmZmZmZm Z m!Z!dd	lm"Z"dd
lm#Z#dHdd�Z$e$ej%j&_'ej(e)e)d
�dd�Z*ej(e)e+ee+d�dd�Z,dIej(e)ee+e+e+e+d�dd�Z-dd�Z.idfej(e)ee/e+d�dd�Z0ddddgfej(e)ee+e+e+e+ee)d�dd�Z1dddd gfej(e)ee+e+e+e2ee)d!�d"d#�Z3e)ee)d$�d%d&�Z4d'd(�Z5d)d*�Z6d+d,�Z7ej(d-�d.d/�Z8e)ee)e)fd0�d1d2�Z9dddddggfee)ee)d3�d4d5�Z:ej(e)ee/e+d6�d7d8�Z;dd9d:d;ggfee)ee)d3�d<d=�Z<ee)eee)e)fd>�d?d@�Z=ej(e)e)dA�dBdC�Z>ddDd;ggfe)e)ee)ee)dE�dFdG�Z?dS)J�)�X)�List�Tuple�Optional)�globals)�mysql�ErrorN)�collect_ping_stats�collect_host_info)�make_zipinfo�InstanceSession�collect_diagnostics�collect_diagnostics_once�DiagnosticsSession)	�collect_innodb_cluster_accounts�collect_cluster_metadata�collect_error_log_sql�collect_schema_stats�collect_slow_queries�get_topology_members�collect_table_info�explain_heatwave_query�
explain_query)�
ShellExecutor)�SQLExecutorcCsH|durd|vrd}n|j}tjj|||d�}|jdurD||j|j<|S)N�
�|)�style)Z
default_style�yaml�representerZ
ScalarNodeZ	alias_keyZrepresented_objects)�self�tag�valuer�node�r$�5/usr/lib/mysqlsh/plugins/debug/collect_diagnostics.py�repr_yaml_text*s
r&)�zf�path�source_pathc	Cs�|�t|�d���}zJt|d��,}|�d�}|s0q<|�|�q Wd�n1sP0YWnPddl}td|�d��|�d|�d��d	��|�|���d	��Yn0Wd�n1s�0YdS)
N�w�rbirzWARNING: Could not copy 'z'
zError copying file r�utf-8)�openr�read�write�	traceback�print�encodeZ
format_exc)r'r(r)�f�inf�datar0r$r$r%�copy_local_file:s
.r6)r'r(�local_target�session�
ignore_errorscCs||rT|�d���\}}tj�|�r(|}ntj�||�}td|�d��t|||�n$t||||d�sxtd|�d��dSdS)	Nzselect @@datadir, @@log_errorz! - Copying MySQL error log file (�)�r9z,MySQL error logs could not be collected for zH, please include error.log files if reporting bugs or seeking assistanceFT)	�run_sql�	fetch_one�osr(�isabs�joinr1r6r)r'r(r7r8r9Zsys_datadirZ
sys_log_errorZlog_pathr$r$r%�collect_error_logJs�
�rAF)r'�prefixr8�slow_queriesr9�	benchmarkr7cCs�|�t|�d��d��(}|�|j�d��d��Wd�n1sD0Y|�d���\}}	}
}}}
}}}}}}z|�d���d}Wnd}Yn0d}d	}|r�td
�tj	�
d�r�d}|�d
|�d����}|�t|�d��d����}|�d|
�d|�d��d��|�d|�d|�d��d��|�d|�d��d��|�d|�d��d��|�d|j�d��d��|�d|�d��d��|�d|�d��d��|�d|	�d��d��|�d|
�d��d��|�d|�d��d��|�d|�d��d��|�d|�d��d��|�d|j�d��d��|�d |j
�d��d��|�d!|j�d��d��|�d"|j�d��d��|�r�|�d#|�d$|�d��d��Wd�n1�s�0Yt||�d%�|||d&�|�r�t||�||d'�dS)(N�urir*rr,z�select utc_timestamp(), now(), @@time_zone, @@system_time_zone, cast(TIMEDIFF(NOW(), UTC_TIMESTAMP()) as char), @@hostname, @@port, @@report_host, @@report_port, @@server_uuid, @@server_id, concat(@@version_comment, ' ', @@version)z#select sys_version from sys.versionrzN/Ai��zExecuting BENCHMARK()...Z
mysqlshrec�dzSELECT BENCHMARK(z,(1234*5678/37485-1298+8596^2))�instancez
Hostname: z (report_host=z)
zPort: z (report_port=z
Server UUID: zServer ID: zConnection Endpoint: z	Version: z
UTC Time: zLocal Time: zTime Zone: zSystem Time Zone: zTime Zone Offset: zSYS Schema Version: z
PFS Enabled: zHas InnoDB Cluster: z	Has NDB: zHas Rapid: z
BENCHMARK(z!,(1234*5678/37485-1298+8596^2)): Z	error_log)r7r8r9r;)r-rr/rEr2r<r=r1�sys�
executable�endswith�get_execution_time�has_pfs�has_innodbclusterZhas_ndb�	has_rapidrAr)r'rBr8rCr9rDr7r3Zutc_timeZ
local_timeZ	time_zoneZsys_tzZtz_offs�hostname�portZreport_hostZreport_portZserver_uuidZ	server_id�version�sys_versionZbm_timeZ
loop_countr$r$r%�collect_member_info]sn6� ��

����$�
�rScCs�tt|�dd�}|dkr"t|�}n`|dkr4t|�}nN|dkr�t|dd�}|dkr�i}t|�D] }t||�s\t||�||<q\|St|t�r�i}|��D]\}}t|�||<q�|St|t�r�g}|D]}|�	t|��q�|S|SdS)N�__name__�Dictr�ObjectZ__mysqlsh_classname__�Options)
�getattr�type�dict�list�dir�callable�	normalize�
isinstance�items�append)r5�tZshclass�out�k�vr$r$r%r^�s0



r^T)r'rBr8�info�
shell_logscCs�tj}t|�}|j|d<t|j�|d<|j|d<t��|d<|�	t
|�d��d��&}|�t�
|��d��Wd�n1s~0Y|r�td�|jd	r�tj�|jd	�r�t||�d
�|jd	�dS)NrQ�optionsZdestinationrOzshell_info.yamlr*r,zCopying shell log file...ZlogFilezmysqlsh.log)r�shellrZrQr^rhrE�socket�gethostnamer-rr/r�dumpr2r1r>r(�existsr6)r'rBr8rfrgriZ
shell_infor3r$r$r%�collect_basic_info�s

4�rn)r'rBr8�innodb_mutexrCr9r7�
custom_sqlc
CsPg}t|�d�jd�D]}	|�|	�qt||||||d�t|||||d�|S)Nzshow global variables)rCr9r7)rorp)�iterr<Zfetch_one_objectrarSr)
r'rBr8rorCr9r7rp�vars�rr$r$r%�collect_member�s��rt���)r'rBr8rorCr9�local_instance_idrpc	Cshg}	t|�}
|
D�]P\}}||d�}
td|�d��z0t|�}|�d�\|d<|d<tt�|��}Wn�t�y&}z�td|�d|���|�t	|�|�d	��d
��@}|�
d|�d��d
��|�
t|�d�d
��Wd�n1s�0Y|j
tjjk�r�WYd}~qWYd}~n
d}~00t||�|�d�||||||k|d�|
d<t�|	�|
�q|	S)N)�instance_id�endpointzCollecting information from �...�:�hostrPzCould not connect to �: z.connect_error.txtr*�# rr,�.)rorCr9r7rp�global_variables)rr1rZ�splitrr�get_sessionrr-rr/r2�str�code�	ErrorCodeZER_ACCESS_DENIED_ERRORrtra)r'rBr8�credsrorCr9rvrpZ
instance_data�membersrwrxr5�dest�er3r$r$r%�collect_topology_diagnostics�s:�6"�
r�)rB�cluster_typecCs�|dvr�zltj���ddi�}|�t|�d��d��.}|�t�t	t
|����d��Wd�n1sh0YWnzty�}zb|�t|�d��d��0}|�d�|�|�d	��d��Wd�n1s�0YWYd}~n
d}~00|d
v�r�zntj�
��ddi�}|�t|�d��d��.}|�t�t	t
|����d��Wd�n1�s\0YWn~t�y�}zd|�t|�d��d��0}|�d
�|�|�d	��d��Wd�n1�s�0YWYd}~n
d}~00|dv�r�zntj���ddi�}|�t|�d��d��.}|�t�t	t
|����d��Wd�n1�sT0YWn~t�y�}zd|�t|�d��d��0}|�d�|�|�d	��d��Wd�n1�s�0YWYd}~n
d}~00dS)N)NZgr�cs�extended�zcluster_status.yamlr*r,zcluster_status.errorscluster.status({'extended':2})
r)Nr�zcluster_set_status.yamlzcluster_set_status.errors#cluster_set.status({'extended':2})
)N�arzreplica_set_status.yamlzreplica_set_status.errors#replica_set.status({'extended':2})
)r�dbaZget_cluster�statusr-rr/rrl�eval�reprr2�	ExceptionZget_cluster_setZget_replica_set)r'rBr�r�r3r�r$r$r%�dump_cluster_statuss6@
J
B
L
B
r�cCsdt�d��d�S)Nzmysql-diagnostics-z
%Y%m%d-%H%M%S�.zip)�time�strftimer$r$r$r%�default_filename%sr�cCs�i}i}t|�D]�\}}||�D]p}||�}	||�}
|	|vrbdg||
g||	<|dkr�d||	<q |	|vr�||	d|
kr�d||	<||	�|
�q qg}|��D]}	|�|	||	f�q�|S)NrTru)�	enumeratera�keys)�
topology_info�get_data�get_key�	get_value�fieldsZdifferent_fields�irG�row�keyr"�diffr$r$r%�diff_multi_tables)s$
r�c	s<�fdd�}|r(|�d|�d��d��t|�g}|D]\}}t|dt|��|d<q6|||�7}|�|d�g}	t��D] \}
}|	�|�|d|
��qzd�|	�d}|�|�d��|�d	t|�d�d��|D]\\}}|�|d�g}	t|�D] \}
}
|	�|
�|d|
��q�|�d�|	�d�d��q�dS)
NcsPdgt��}|D]8\}}t|�D]&\}}t|||r>t|�nd�||<q"q|S)Nr)�lenr��max)r5�
column_widthsr��valuesr�re��instance_labelsr$r%�get_column_widthsAs
"z$dump_diff.<locals>.get_column_widthsr}rr,r�z | �=)r/r2r�r��ljustr�rar@)r3Z	key_labelr�r��headerr�r�rdre�liner��label�hr"r$r�r%�	dump_diff@s$
r�)r'cCs�t|dd�dd�dd��}g}|D]}|�|d�q"|�t|�d��d��.}|rlt|d||t|��d	��Wd�n1s�0YdS)
NcSs|dS)Nrr$�r�r$r$r%�<lambda>`�z'analyze_topology_data.<locals>.<lambda>cSs|dS)NZ
Variable_namer$�r�r$r$r%r�ar�cSs|dS)NZValuer$r�r$r$r%r�br�rxzdiff.global_variables.txtr*ZVariablez- differing global variables between instances)r�rar-rr�r�)r'rBr�r�Zinstance_namesr�r3r$r$r%�analyze_topology_data^s��r�)r(�returncCs�|std��|���d�sR|�d�s8tjdkrJ|�d�rJtj�|t��}n|d7}tj�	|�
dd��dd�d}tj�|�r�t|d��||fS)Nz 'path' cannot be an empty stringr��/�win32�\���z already exists)r�lowerrJrH�platformr>r(r@r��basename�replacerm)r(rBr$r$r%�process_pathms r�)�	customSql�customShellc
Cs�t|�\}}
t|�}|jdkr&td��|rT|�d���}|drL|ddkrTtd��tj}
|j}d}|r�|r�|
�	|j
�}|
�d|d	�d
�ddi�|d<tj�	|j
�}d
|vr�dn
|d
dk}|	r�|s�td��t|	dd�}t
d|j
�d���z�tj|dd���l}t�|d�|�r |�||
�d}|j�rDt
d�t||
||d�}t||
|dt|�d�d�t||
|||d�d}d}|j�r�|�r�t
d�t||
||d�t
d�t||
|�|�r�|�r�d}t||
||||||�r�|nd d!�}t||
|�|�st||
�|�d"�||||||d#�|
�	|j
�}|�rN|�rFt
d$�t||
|�nt
d%�|�r^t||
�Wd�n1�st0YWn4tj� |��r�t�!|�t
�t
d&��Yn0t
�t
d'|���|j"�s�t
d(�|�r�|j�s�t
d)�dS)*N���MySQL 5.7 or newer requiredz%select @@slow_query_log, @@log_outputrr�ZTABLEzZslowQueries option requires slow_query_log to be enabled and log_output to be set to TABLEz
Password for �userr|rY�passwordr{T�	localhost�@Option 'customShell' is only allowed when connected to localhostF�Zallow_phases�(Collecting diagnostics information from ryr*��mode�zInnoDB Cluster detectedr;ZcollectDiagnostics�ZcommandZcommandOptions)rf��fullr9z/Gathering grants for mysql_innodb_% accounts...zGathering cluster status...ru)rorCr9rvr~)rCror9r7rpz3Connected to local server, collecting ping stats...z8Connected to remote server, ping stats not be collected.�AAn error occurred during data collection. Partial output deleted.z'Diagnostics information was written to �RWARNING: performance_schema is disabled, collected a limited amount of informationz?NOTE: allMembers enabled, but InnoDB Cluster metadata not found)#r�rrQrr<r=rrirw�	parse_urirE�promptrr1�zipfile�ZipFiler>�chmodZexecuterMrrnr^rrr�r�r�rtr	r
r(rm�removerL)�session_r(�	orig_args�innodbMutexZ
allMembersZschemaStatsZslowQueriesZignoreErrorsr�r�rBr8r�riZmy_instance_idr��targetr7Z	shell_exer'r�Z
topology_dataZ	collectedr$r$r%�do_collect_diagnosticss�
�������
��
���.
r��r'rBr8rfr7c	CsLt||||dd�t|||ddd�t|||dd|dd�|rHt||�dS)NF)rfrgTr�)rCr9r7rD)rnrrSr
r�r$r$r%�collect_common_high_load_data�s���r�r�i,�currentc	Cs�t|�\}}	|dkr$td|�d���|dkr<td|�d���|dvrLtd��t|�}
|
jdkrftd��tj�|
j�}d	|vr�d
n
|d	dk}|r�|s�td��td
|
j�d��z�t	j
|dd��b}
t�|d�t
|
|	|
dt|�d�|�|r�|s�J�t�t|
|	|
||||||d�	Wd�n1�s(0YWn4tj�|��rTt�|�t�td��Yn0t�|
j�s�td�|�s�td�|
j�s�td�td|���dS)Nr�z'iterations' must be > 0 (is r:�'delay' must be > 0 (is �r�Zmediumr��9'pfsInstrumentation' must be one of current, medium, fullr�r�r{Tr�r�r�ryr*r�r�ZcollectHighLoadDiagnosticsr�)rorpZcustom_shellr�r��KNOTE: Target server is not at localhost, host information was not collectedzfNOTE: performance_schema is disabled, only a limited set of metrics and information could be collectedz3Server load diagnostics information was written to )r�rrrQrrir�rEr1r�r�r>r�r�r^r
r(rmr�rL)r�r(r�r�Z
iterations�delay�pfsInstrumentationr�r�rBr8r�r7r'r$r$r%� do_collect_high_load_diagnosticssd�
����*
r�)r8�queryr�cs2|�d���d���fdd��t�|�}�|�S)Nzselect schema()rcs~�fdd��g}d|vrX|ddkrX�|�}|s4J�t|�dkrL�|df}|�|�n"d|vrz|dD]}|�|�7}qh|S)Ncs�d|vrT|ddkrT|ddddkr@t�|ddd�gS|dddgSn*d|vr~g}|dD]}|�|�7}qh|SgS)N�ruleZpureIdentifier�childrenr�symbolZBACK_TICK_QUOTED_ID�text)r�unquote_identifier)r#�ref�n��extract_table_refr$r%r�DszMextract_referenced_tables.<locals>.find_table_refs.<locals>.extract_table_refr�ZtableRefr�rr�)r�ra)�astZrefsZ	table_ref�child�Zdefault_schema�find_table_refsr�r%r�Cs
z2extract_referenced_tables.<locals>.find_table_refs)r<r=r�parse_statement_ast)r8r�r�r$r�r%�extract_referenced_tables@s
r�)r'rBr�c	Cs�td|���|�|�}td|�����t��}t|���}t��}td||d�d��|��|||t|���|��|d�}t	|d�r�|�
�|d<|S)	NzExecuting query: zQuery finished in zResults fetched in z.4fz sec)zExecution TimezResult Fetch TimeZQueryZWarningsz
Affected RowszResult Rows�get_infoZInfo)r1r<rKr�r�Z	fetch_allr^Zget_warningsZget_affected_row_count�hasattrr�)	r'rB�helper_sessionr�rsZfetch_startZ	row_countZ	fetch_end�
query_infor$r$r%�execute_profiled_querybs"

�
r��)r(r�r�r�c		sh|std��t|�\}�|dkr0td|�d���|dvr@td��t|�}	|	jdkrZtd��tj�|	j�}
d	|
vrtd
n
|
d	dk}|r�|s�td��t|	|�}tj�	�}
t
d
|	j�d���z&tj|dd����t
�|d�t|d
d��t|	|d
d������������|D]0\}}t
d|�d|�d��t��|	||��qt��|	dt|�d�|�t
d�t�|	|��|	j�r�t
d�t�|	|��t|	|d�}|����zt|j���d�|d�t
d�����fdd�}|�|���d�|�zt��|
|�}Wn|���Yn0Wn|�����Yn0|��|����d���� ��d �d��0}|�!t"�#|��$d!��|�!d"�Wd�n1�s�0Y��%�����%���Wd�n1�s�0YWn<|
�&�t
j'�(|��rt
�)|�t
�t
d#��Yn0|
�&�t
�|	j*�s:t
d$�|�sHt
d%�|�sVt
d&�t
d'|���dS)(Nz-'query' must contain the query to be analyzedr�r�r:r�r�r�r�r{Tr�r�r�ryr*r�r�r�z-Collecting information for referenced table `z`.`�`ZcollectSlowQueryDiagnosticsr�zCollecting EXPLAINz Collecting EXPLAIN with Heatwave)roZdiagnostics)Zpfs_instrumentationz,Starting background diagnostics collector...cs ����|�����|�dS)N)Zexecute_duringr��ZcustomrBrir'r$r%�
on_iterate�sz5do_collect_slow_query_diagnostics.<locals>.on_iteratezquery-info.yamlr,�
zAAn error occurred during query profiling. Partial output deleted.r�z<NOTE: could not extract list of referenced tables from queryr�z8Server and query diagnostics information was written to )+rr�rrQrrir�rEr��open_sessionr1r�r�r>r�rrZexecute_beforerr�r^rrNrrZcollect_configs_and_state�startZstart_backgroundr�Zstop_background�cleanupZfinishr-r/rrlr2Z
execute_after�closer(rmr�rL)r�r(r�r�r�r�r�r�r�r8r�r7Zreferenced_tablesr��srbZdiagrr�r3r$rr%�!do_collect_slow_query_diagnosticszs��
�

������*0
r	)N)FF)@�rer�typingrrr�mysqlshrrrrjr�rr>r�rHZdebug.host_infor	r
Zdebug.sql_collectorrrr
rrrrrrrrrrrrrr&rZBaseRepresenterZrepresent_scalarr�r�r6�boolrArSr^rZrnrt�intr�r�r�r�r�r�r�r�r�r�r�r�r	r$r$r$r%�<module>s�,

��:���
�)��o��>"��