In this blog post, I’ll look at how to use the loose_ option prefix in my.cnf in MySQL.
mysqld throws errors at startup – and refuses to start up – if a non-existent options are defined in the my.cnf file.
For example:
|
1 |
2016-10-05 15:56:07 23864 [ERROR] /usr/sbin/mysqld: unknown variable 'bogus_option=1' |
The MySQL manual has a solution: use the loose_ prefix option in my.cnf file.
In the prior example, if we specify loose_bogus_option=1 in the my.cnf file, instead of bogus_option=1, mysqld starts successfully and ignores that option.
This is useful in three situations:
We can use this feature to make a my.cnf file that will work on both MySQL Community and Percona Server, but contains options that aren’t implemented in MySQL Community. For example:
|
1 |
slow_query_log=ON<br>long_query_time=0<br>loose_log_slow_rate_limit = 100 |
Without the loose_ prefix on log_slow_rate_limit, MySQL Community will throw a fatal error (as log_slow_rate_limit is not implemented in MySQL Community).
If you push out the same my.cnf file to multiple versions of MySQL, you can still use features that only exist on newer versions:
|
1 |
loose_super_read_only = ON |
Another use case is installing the Percona audit log plugin. If you specify the
audit_log options in my.cnf, and then restart the server before running INSTALL PLUGIN, mysqld will fail. If you use the loose_ prefix, mysqld will start up successfull, and the options will be read when you run INSTALL PLUGIN.
|
1 |
loose_audit_log_file = /audit/audit.log<br>loose_audit_log_rotate_on_size = 1073741824<br>loose_audit_log_rotations = 5<br>loose_audit_log_format = JSON |
This trick also works for options given on the command line, e.g. mysqld --loose-bogus-option.