Автоматическое масштабирование группы AWS Aurora, вызванное отключением базы данных на сервере MySQL - PullRequest
0 голосов
/ 06 марта 2019

Я использую AWS Aurora и группы автоматического масштабирования для добавления / удаления ведомых баз данных на основе процессора. Несколько раз в день я получаю сообщение «Общая ошибка: сервер MySQL 2006 исчез». Я сузил эту проблему до того факта, что при удалении базы данных из группы автоматического масштабирования возникает исключение. Я использую конечную точку кластера только для чтения в моем файле local.xml в качестве опции чтения с ядра.

Любые идеи о том, как это исправить, чтобы соединение автоматически пыталось восстановить соединение, как только было определено, что базы данных больше нет?

Я использую Magento 1.9.2.4

1 Ответ

0 голосов
/ 07 марта 2019

Итак, вот мое текущее решение.Я сделал копию lib / Varien / Db / Adapter / Pdo / Mysql.php и создал новый файл app / code / local / Varien / Db / Adapter / Pdo / Mysql.php.

Я изменилфункция запроса как таковая.

изменить:

$result = parent::query($sql, $bind);

на:


$tries = 0;
do {
    $retry = false;
    try {
        $result = parent::query($sql, $bind);
    } catch (Exception $e) {
        // Check to reconnect
        if($tries < 3 && stristr($e->getMessage(), '2006 MySQL server has gone away')) {
            $retry = true;
            $tries++;
            $this->_connection = null;  // Kill the current connection to the scaled out db
            $this->_connect(); // Reconnect to an available db
        } else {
            throw $e;
        }
    }
} while ($retry);
...