- How to Enable Binary Log in Linux
- Enable the binary log file via SqlBak
- Enable the binary log file manually
- 11 thoughts on “How to Enable Binary Log in Linux”
- How to View and Configure Linux System Logs on Ubuntu 20.04
- Prerequisites
- 🔭 Want to centralize and monitor your Linux logs?
- Step 1 — Finding Linux system logs
- Step 2 — Viewing Linux log file contents
- Plaintext log files
- Binary log files
How to Enable Binary Log in Linux
Below is a short tutorial on how to enable binary log in Linux.
Enable the binary log file via SqlBak
If SqlBak is installed on your server and a connection is established to your MySQL Server, then you can enable binary logs via one command:
sudo sqlbak --configure-mysql --connection-id=1
If you have set several connections, then in the –connection-id parameter, you have to specify the connection ID to the database for which you want to enable binary logs. To find the connection ID, use the following command:
Enable the binary log file manually
As a rule, this file is located along the path:
If you cannot find it, please use the following command:
sudo find / -type f -name mysql.cnf
and add the following text to the end of the file:
[mysqld] server-id = 1 expire_logs_days = 10 binlog_format = row log_bin = /var/log/mysql/mysql-bin
sudo service mysql restart
11 thoughts on “How to Enable Binary Log in Linux”
in mariadb, the bin_log will not have .log extention, it will be .000001 .000002 (six digit suffix), how to configure sqlbak in order to read these bin_log files ? Because Mariadb will ignore any extention for bin_log in my.cnf. Reply
Hi prast, Yes, you are right, files with bin logs will have extension 00001, 00002, etc. If you specify /var/log/mysql/mysql-bin.log or / var / log / mysql / mysql-bin bin log files will be named mysql-bin.00001, mysql-bin.00002, etc. Therefore, you can choose any option. Reply
Hi, I’m getting the error “unknown command” when I try to run: sudo sqlbak —configure-mysql —connection-id=1 Sqlbak is installed and a connection has been established. Reply
Hi, There was a typo in the example, we have fixed it. Could you please try the following one: sudo sqlbak —configure-mysql —connection-id=1 Reply
Hello, Is necessary to specify ROW format for binlog (binlog_format = row)? Or mixed format is also possible for successful incremental backups of MySQL with SqlBak? Reply
Hi Sergei Binlogs have an unpleasant feature. All transactions that change data in all databases are written to one file. To restore a specific database, it is necessary to extract from this file only those records that refer specifically to this database. mysqlbinlog utility is used for this purpose. However, this utility does not pick up records if the database name was specified directly in the SQL command. For example INSERT INTO db_name.table_name …… If the database name was specified previously using “USE db_name”, then everything is OK. Thus, if you are sure that in SQL statements the database name is always indicated in the USE directive and never used directly in SQL statements, then you can use the MIXED format. Otherwise, you may encounter that when restoring data, not everything will be restored. Reply
why my incremental backup doesnt work? whereas i have enabled the binary log using this command: sudo sqlbak –configure-mysql –connection-id=1 Reply
Hi dita, To resolve the issue, we need more details. Could you please contact our support team https://sqlbak.com/support? Thank you! Reply
Hi Alexander, Incremental backup does not work 🙁 “To create an incremental backup, you must enable a binary log”. job id: 44926 Server version: 10.11.2-MariaDB-1:10.11.2+maria~ubu2004-log mariadb.org binary distribution
binlog_expire_logs_seconds= 259200
binlog_format = ROW
binlog_row_image = FULL
binlog_row_metadata = NO_LOG
encrypt_binlog = OFF
log_bin = ON
log_bin_compress = ON
sql_log_bin = ON Reply
Hello Serg, Could you please try to execute these two different queries and check the results: SHOW VARIABLES LIKE ‘log_bin’ SHOW VARIABLES LIKE ‘binlog_format’ Thank you! Reply
How to View and Configure Linux System Logs on Ubuntu 20.04
This tutorial explains the basic administration of a Linux server through system logs. A system log is a file that contains information about the events that happened on the system during runtime.
In this article, you will learn the following Linux logging basics:
- Where the Linux log files are stored, how are they formatted, and how to read them.
- How to read the most important logs (such as syslog ).
- How to configure the Ubuntu syslog daemon.
- What Linux log rotation is all about and how to use the logrotate utility.
Prerequisites
Before proceeding with the rest of this tutorial, ensure that you have a basic knowledge of working with the Linux command line. While many of the concepts discussed in this article are general applicable to all Linux distributions, we’ll be demonstrating them in Ubuntu only so ensure to set up an Ubuntu 20.04 server that includes a non-root user with sudo access.
🔭 Want to centralize and monitor your Linux logs?
Head over to Logtail and start ingesting your logs in 5 minutes.
Step 1 — Finding Linux system logs
All Ubuntu system logs are stored in the /var/log directory. Change into this directory in the terminal using the command below:
You can view the contents of this directory by issuing the following command:
You should see a similar output to the following:
alternatives.log auth.log btmp cloud-init-output.log dmesg dpkg.log journal/ landscape/ private/ ubuntu-advantage-license-check.log ubuntu-advantage-timer.log unattended-upgrades/ apt/ bootstrap.log cloud-init.log dist-upgrade/ dmesg.0 faillog kern.log lastlog syslog ubuntu-advantage.log ufw.log wtmp
Let’s look at a few of the essential system log files that may be present in the /var/log directory and what they contain:
- /var/log/syslog : stores general information about any global activity in the system.
- /var/log/auth.log : keeps track of all security-related actions (login, logout, or root user activity).
- /var/log/kern.log : stores information about events originating from the Linux kernel.
- /var/log/boot.log : stores system startup messages.
- /var/log/dmesg : contains messages related to device drivers.
- /var/log/faillog : keeps track of failed logins, which comes in handy when investigating attempted security breaches.
The /var/log directory is also used to store various application logs. For example, if your distribution is bundled with Apache or MySQL, or installed later, their log files will also be found here.
Step 2 — Viewing Linux log file contents
Log files contain a large amount of information that are useful for monitoring or analyzing activities performed by the system or a specific application. Therefore, a Linux server administrator must learn the art of reading and understanding the various messages present in log files to effectively diagnose or troubleshoot an issue.
Before we can read log files, we ought to know how they are formatted. Let’s review two basic approaches to log file formatting and storage: plain text and binary files.
Plaintext log files
These logs are plain text files with a standardized content format. Ubuntu uses a log template called RSYSLOG_TraditionalFileFormat . This log format consists of four main fields with a space delimiter:
- The timestamp indicates the time when a log entry was created in the format MMM dd HH:mm:ss (e.g. Sep 28 19:00:00 ). Notice that this format does not include a year.
- Hostname is the host or system that originally create the message.
- Application is the application that created the message.
- Message contains the actual details of an event.
Let’s go ahead and review some log files in the plaintext format. Run the command below to print the contents of the /var/log/syslog file with the tail utility:
This outputs the last 10 lines of the file:
Mar 23 12:38:09 peter dbus-daemon[1757]: [session uid=1000 pid=1757] Activating via systemd: service name='org.freedesktop.Tracker1' unit='tracker-store.service' requested by ':1.1' (uid=1000 pid=1754 comm="/usr/libexec/tracker-miner-fs " label="unconfined") Mar 23 12:38:09 peter systemd[1743]: Starting Tracker metadata database store and lookup manager. Mar 23 12:38:09 peter dbus-daemon[1757]: [session uid=1000 pid=1757] Successfully activated service 'org.freedesktop.Tracker1' Mar 23 12:38:09 peter systemd[1743]: Started Tracker metadata database store and lookup manager. Mar 23 12:38:40 peter tracker-store[359847]: OK Mar 23 12:38:40 peter systemd[1743]: tracker-store.service: Succeeded. Mar 23 12:39:01 peter CRON[359873]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi) Mar 23 12:39:23 peter systemd[1]: Starting Clean php session files. Mar 23 12:39:23 peter systemd[1]: phpsessionclean.service: Succeeded. Mar 23 12:39:23 peter systemd[1]: Finished Clean php session files.
You’ll notice that that each record in this file is formatted in the manner described earlier. For example, the last record has its timestamp as Mar 23 12:39:23, hostname as peter, application as systemd[1] and message as Finished Clean php session files.
If you want to view the entire log file, you can use the cat utility or any text editor such as nano or vim .
Binary log files
While plaintext is the dominant storage format for log files, you will also encounter binary log files that cannot be read with a normal text editor. The /var/log directory contains multiple binary files that are related to the user authorization:
- /var/log/utmp : tracks users that are currently logged into the system.
- /var/log/wtmp : tracks previously logged in users. It contains a past data from utmp .
- /var/log/btmp : tracks failed login attempts.
For these binary logs, special command-line tools are used to display the relevant information in human-readable form. For example, to review the contents of the /var/log/utmp file, run the who utility with -H option (this option causes column labels to be printed in the output table):