ClickHouse Administration and Troubleshooting
Restarting ClickHouse
To restart ClickHouse, use the systemctl command depending on your operating system:
sudo systemctl restart clickhouse-server
Using clickhouse-client
clickhouse-client is a REPL shell for interacting with ClickHouse. It allows you to execute queries against the ClickHouse server, manage databases, tables, and other objects. clickhouse-client supports interactive mode and script mode.
Key Features of clickhouse-client
Interactive Mode
The clickhouse-client command can be executed without specifying any parameters. Launching the command without parameters will start a shell where you can enter and execute SQL queries in real time.
Script Mode
clickhouse-client can accept SQL queries from files or other input streams and execute them. This is useful for automating tasks or executing large SQL queries.
Example with passing a query through a parameter:
clickhouse-client --query="SELECT * FROM table_name"
Example with passing a query through standard input:
clickhouse-client < script.sql
Connecting to Remote Servers
It is also possible to connect to remote ClickHouse servers by specifying the host, port, user, and password as follows:
clickhouse-client --host=remote_host --port=9000 --user=username --password=secret_password
Output Formats
clickhouse-client supports various data output formats, such as CSV, JSON, and others. This allows for flexible work with data output depending on the task.
Example:
clickhouse-client --query="SELECT * FROM table_name" --format=CSV
Troubleshooting ClickHouse
Log Files
ClickHouse logs can be useful for diagnosing problems and analyzing server performance. Log files are located in the /var/log/clickhouse-server/ directory by default.
To monitor the latest logs, execute:
tail -f /var/log/clickhouse-server/clickhouse-server.log
To view error logs, execute:
tail -f /var/log/clickhouse-server/clickhouse-server.err.log
Analyzing System Tables
ClickHouse system tables contain a lot of useful information for monitoring and diagnosing server performance. The main tables are listed below:
-
system.metrics- shows the current values of internal server metrics, such as the number of active connections and queriesSELECT * FROM system.metrics; -
system.parts- contains information about parts of MergeTree tables, including their size and statusSELECTtable,partition,name,active,bytes_on_diskFROM system.partsWHERE active = 1; -
system.replicas- contains information about the replication statusSELECTdatabase,table,is_leader,is_readonly,total_replicas,active_replicasFROM system.replicas; -
system.query_log- contains information about all executed queries, including their duration and possible errorsSELECTquery,event_time,query_duration_ms,exceptionFROM system.query_logORDER BY event_time DESCLIMIT 10;
Common Errors
Error Checking ClickHouse Connection
In the /app/opensearch/jdk/lib/security/default.policy file, make sure the getClassLoader permission is present.
The file should include the following line:
permission java.lang.RuntimePermission "getClassLoader";
Add it to the end of the file as follows if this permission is missing:
grant {
permission java.lang.RuntimePermission "getClassLoader";
};
After making changes, restart the opensearch service on the cluster nodes where the setting was updated.