Note: Before I go into the details, please note that, live server is not recommended to have fully automated background updates enabled. Only recommended auto update for the live server is the core
minor updates. So even if you follow the procedure below, it's best to enable only the following in
wp-config.php file for automatic minor updates of WordPress core:
define( 'WP_AUTO_UPDATE_CORE', 'minor' );
All other updates should be attended updates (not automated).
Best (if possible) is to test the updates in the development or staging environment first and then apply it to the live server.
Since your question is not about turning auto update off, rather as you've put it:
How can I leave the auto update to ON and be sure that this feature won't break my Blog
Here is a concept on how you can accomplish that:
Step-1: Keep a staging server that will always auto update.
Step-2: On a update related action hook, for example,
upgrader_process_complete action hook, check if it's on staging (identify by Server IP, installation location etc.) server. If it is, then check error log, cross reference with the live server etc. after the update process is complete. That is check multiple ways to determine if the update is breaking your site or not. If it's successful, then keep a note somewhere so that the live server can check it. It can be an API call to the live server, can be a file with the latest version number, DB entry - anything that'll determine that you have an updated version of core, plugin, theme etc. on the staging server.
Step-3: Mean while, auto update is not completely disabled on the live server, but filtered using hooks such as
auto_update_theme - i.e. whatever you need. And the filter function for these filter hooks must be able to check if the staging server succeeded in step-2. If succeeded, then allow the update to proceed through the return value (
false as appropriate) of these filter functions.
Step-4 Additionally, in staging you can use the
auto_core_update_send_email hook to let yourself know if an auto update process failed in the staging server.
Now obviously, all of the above steps will work together to accomplish the task. I just explained them in steps so that it's easy to understand. Also, to make sure staging server is running Cron, set a cron job at the staging server after 10 minutes or so. Otherwise, since people are not visiting the staging server, staging will never auto update.
Note: Live & staging server can have the exact same CODE, however, within the CODE you'll have to determine, on which server CODE is currently running - so that you can make different choices in step 2, 3 & 4 on staging & live server.
Read more on WordPress auto updates Here.