diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua
index 7aa58e49697f5b5bb66058867af2e8e73e55014f..6743b23da7998e9fa98aa90ae65135bd6413a8c2 100644
--- a/src/box/lua/load_cfg.lua
+++ b/src/box/lua/load_cfg.lua
@@ -52,7 +52,7 @@ local default_cfg = {
     coredump            = false,
 
     -- snap_daemon
-    snapshot_period     = 3600 * 4,
+    snapshot_period     = 0,        -- 0 = disabled
     snapshot_count      = 6,
 }
 
diff --git a/src/box/lua/snapshot_daemon.lua b/src/box/lua/snapshot_daemon.lua
index b482cc53c42aa144640aa462737b561cca0e5f12..6dc9cff6ee46bdec3935cb5a6696c63e855e87ca 100644
--- a/src/box/lua/snapshot_daemon.lua
+++ b/src/box/lua/snapshot_daemon.lua
@@ -183,15 +183,22 @@ do
         log.info("%s", self.status)
         while true do
             local interval = next_snap_interval()
-            fiber.sleep(interval)
-            if self.status ~= 'started' then
-                break
-            end
 
-            local s, e = pcall(process)
+            if interval ~= nil then
+                fiber.sleep(interval)
+                if self.status ~= 'started' then
+                    break
+                end
 
-            if not s then
-                log.error(e)
+                local s, e = pcall(process)
+
+                if not s then
+                    log.error(e)
+                end
+            else
+                -- daemon is disabled
+                -- do nothing, waiting for change event wakes us up
+                fiber.sleep(3600 * 24 * 365 * 100)
             end
         end
         log.info("%s", self.status)