diff --git a/app/code/Magento/Backup/Model/Db.php b/app/code/Magento/Backup/Model/Db.php
index 776141249f92bc40dc448ff50fe443f7affd8891..98b04149cc7ead396c968b09168a6a319402846b 100644
--- a/app/code/Magento/Backup/Model/Db.php
+++ b/app/code/Magento/Backup/Model/Db.php
@@ -173,6 +173,7 @@ class Db implements \Magento\Framework\Backup\Db\BackupDbInterface
             }
         }
         $backup->write($this->getResource()->getTableForeignKeysSql());
+        $backup->write($this->getResource()->getTableTriggersSql());
         $backup->write($this->getResource()->getFooter());
 
         $this->getResource()->commitTransaction();
diff --git a/app/code/Magento/Backup/Model/ResourceModel/Db.php b/app/code/Magento/Backup/Model/ResourceModel/Db.php
index 3fbaf44ebb063bc275c735cf7479d64a1b81305f..f50a3c5b091ad2a7b5b891cfb0143d0055e51092 100644
--- a/app/code/Magento/Backup/Model/ResourceModel/Db.php
+++ b/app/code/Magento/Backup/Model/ResourceModel/Db.php
@@ -114,6 +114,30 @@ class Db
         return $fkScript;
     }
 
+    /**
+     * Return triggers fro table(s)
+     *
+     * @param string|null $tableName
+     * @param bool $addDropIfExists
+     * @return string
+     */
+    public function getTableTriggersSql($tableName = null, $addDropIfExists = true)
+    {
+        $triggerScript = '';
+        if (!$tableName) {
+            $tables = $this->getTables();
+            foreach ($tables as $table) {
+                $tableTriggerScript = $this->_resourceHelper->getTableTriggersSql($table, $addDropIfExists);
+                if (!empty($tableTriggerScript)) {
+                    $triggerScript .= "\n" . $tableTriggerScript;
+                }
+            }
+        } else {
+            $triggerScript = $this->getTableTriggersSql($tableName, $addDropIfExists);
+        }
+        return $triggerScript;
+    }
+
     /**
      * Retrieve table status
      *
diff --git a/app/code/Magento/Backup/Model/ResourceModel/Helper.php b/app/code/Magento/Backup/Model/ResourceModel/Helper.php
index b5418865339c34fb3826cde0672fc2cb4c5a9891..6d7084a87546c189034b79b3da6f6a560cc9ebe3 100644
--- a/app/code/Magento/Backup/Model/ResourceModel/Helper.php
+++ b/app/code/Magento/Backup/Model/ResourceModel/Helper.php
@@ -337,4 +337,40 @@ class Helper extends \Magento\Framework\DB\Helper
     {
         $this->getConnection()->query('SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ');
     }
+
+    /**
+     * Get create script for triggers
+     *
+     * @param string $tableName
+     * @param boolean $addDropIfExists
+     * @param boolean $stripDefiner
+     * @return string
+     */
+    public function getTableTriggersSql($tableName, $addDropIfExists = false, $stripDefiner = true)
+    {
+        $script = "--\n-- Triggers structure for table `{$tableName}`\n--\n";
+        $triggers = $this->getConnection()->query('SHOW TRIGGERS LIKE \''. $tableName . '\'')->fetchAll();
+
+        if (!$triggers) {
+            return '';
+        }
+        foreach ($triggers as $trigger) {
+            if ($addDropIfExists) {
+                $script .= 'DROP TRIGGER IF EXISTS ' . $trigger['Trigger'] . ";\n";
+            }
+            $script .= "delimiter ;;\n";
+
+            $triggerData = $this->getConnection()->query('SHOW CREATE TRIGGER '. $trigger['Trigger'])->fetch();
+            if ($stripDefiner) {
+                $cleanedScript = preg_replace('/DEFINER=[^\s]*/', '', $triggerData['SQL Original Statement']);
+                $script .= $cleanedScript . "\n";
+            } else {
+                $script .= $triggerData['SQL Original Statement'] . "\n";
+            }
+            $script .= ";;\n";
+            $script .= "delimiter ;\n";
+        }
+
+        return $script;
+    }
 }