I am using mariadb and I to investigate some issue I wanted to check the logs. To my surprise, log file is not generated for mariadb.
I suspect this cannot be the case so I am doubting my search skills.
MariaDB [(none)]> show variables like 'log_error'
-> ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_error | |
+---------------+-------+
1 row in set (0.00 sec)
I have added the entry in my.cnf still above field is coming to be empty.
[root@cslcodev11-oem ~]# cat /etc/my.cnf
[mysqld]
!includedir /etc/mysqld/conf.d
datadir=/mnt/mgmt/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
tmpdir=/mnt/mgmt/var/lib/mysql_tmp
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
### TRT-3229 #####
sync_binlog=1
innodb_flush_method=O_DIRECT
innodb_support_xa = 1
myisam_repair_threads = 2
myisam_recover_options = FORCE
###################
innodb_file_per_table=1
innodb_log_buffer_size = 8M
table_open_cache=256
max_heap_table_size=256M
### TRT-4685 ###
max_connections=500
################
innodb_log_file_size = 512M
[mysqld_safe]
log-error=/var/log/mariadb/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@cslcodev11-oem ~]#
So, I want to know do we have any default location where these logs are getting generated, if the path cannot be read from config files.
Update:
After some investigation, I found this information,
Reference: https://mariadb.com/kb/en/mariadb/error-log/
Activating the Error Log
The error log is active by default. The log-error=filename option determines where the output will be written. If no file name is specified, the log will be written to host-name.err. If no absolute path is specified, the file will be written to the data directory (determined by the value of the datadir system variable).
On Unix systems, if the –log-error option is not used, the errors are written to stderr (usually, the command line).
On Windows, if the –console option is specified, and –log-error is not used, the errors are written to the console. If –log-error is present, –console is ignored.
So now I understand that due to some reason the configuration log_error in my.cnf is not considered. So as per the suggestion, on Unix system, if –log-error is not used, logs are redirected to stdout.
BUT, I am starting the service using service mysqld start
command so I want to know what all options are used by default when we start the service using service mysql start
? ESP, is –log-error used?
Best Answer
Going off the documentation, the error log should be in the default location of
/var/lib/mysql
and it should be named the defaulthostname.err
, but it's just not there.In the directory
/var/lib/mysql
I do have atc.log
,iblogfile0
,iblogfile1
,aria_log.00000001
, andaria_log_control
files. But I cannot read any of them, they are encrypted. Anyone know what these are?After running the following command,
cat /etc/systemd/system/mysqld.service | grep "mysql"
we can see that the line that systemd uses to start the process is
ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
. The options passed to MariaDB are stored in the$MYSQLD_OPTS
variable.If we also run
cat /etc/systemd/system/mysqld.service | grep "MYSQLD_OPTS"
we get the following.The file MY_SPECIAL.conf does not exist on my machine, as
find / -name "*MY_SPECIAL*"
reveals.I do have entries for
mysqld
injournalctl
. So I'm thinking that it uses the thesystemd
system logs by default for ussystemd
users.On the MariaDB Knowledge base page for the error-log there is a paragraph that states.
This answers the question because
--log-error
would be an option that could be added toMY_SPECIAL.conf
file andjournalctl
is where mariadb logs errors by default on asystemd
system.