Назад | Перейти на главную страницу

Как на самом деле использовать mysql slave, как только мастер перейдет в режим аварийного переключения или сгорел

У меня есть репликация MySQL master-slave, которая работает нормально; Я погуглил всю сеть и сайт MySQL, чтобы найти стандартную процедуру для использования репликации, но ничего не нашел. Это похоже на то, как если бы администраторы были счастливы включить репликацию, но когда приходит время выполнить аварийное восстановление, первоначальный план не был реализован на практике и опубликован.

Я хочу знать, как заставить подчиненную машину заменить главную в случае, если последняя будет повреждена, сожжена и т. Д. Я предполагаю, что подчиненная машина должна принять сетевой адрес мастера, но что еще нужно сделать? Например, изменение разрешений пользователя MySQL или выполнение некоторых команд! Пожалуйста, включите ссылки, если таковые имеются.

Для решения аварийного восстановления вам, скорее всего, понадобится полуручный процесс. То есть вам нужно решить, что авария подтверждает полное аварийное переключение, и это не просто небольшой сбой в сети, и вы застряли на днях работы по восстановлению после сбоя.

Чтобы переключить ведомое устройство MySQL на ведущее, вы просто вводите несколько команд в mysql, сведения о Mysql можно найти Вот.

Я настоятельно рекомендую создать сценарий для всего процесса (и протестировать его!) И добавить любые другие команды, которые вы, возможно, захотите запустить на коробке, чтобы выполнить аварийное восстановление после отказа (перезапустить веб-уровень или что-то еще, что необходимо). Мы используем func на сервере управления для выполнения команд аварийного переключения всех уровней наших приложений.

Говоря об аварийном восстановлении, я говорю о сбое сайта. При отказе кластера все должно происходить автоматически и намного проще.

Все, что требуется для замены сервера MySQL репликой, - это переключить IP-адрес сервера, никаких дополнительных команд в MySQL не требуется.

Для дополнительного комфорта, если вы хотите душевного спокойствия и делаете это автоматически, вы можете сделать следующее:

  • Пусть оба сервера MySQL выполняют репликацию мастер-мастер, проверьте это Вот
  • Создайте виртуальный IP-адрес, который будет использоваться начальным главным сервером, я использую для этого сердцебиение (часть проекта LinuxHA), но вы можете использовать предпочтительное оружие для своей ОС
  • Настройте параметры для переключения IP, это может быть выход из строя сети, смерть другого компьютера или просто отключение MySQL

Эта установка имеет множество преимуществ, вы можете легко выполнять обслуживание на одном узле, переключая трафик на другой, и иметь беспроблемное восстановление, вам даже не нужно вставать с постели :) Хотя одна рекомендация, будьте осторожны с вашим виртуальным Параметры IP, вы можете закончить тем, что оба узла попытаются потребовать виртуальный IP, что не является желаемым результатом.

Предположим, у вас есть 2 подчиненных устройства MySQL: подчиненное устройство 1 и подчиненное устройство 2. В случае, если ваш главный сервер не работает, вы решаете повысить подчиненное устройство 1, чтобы оно стало новым главным. Я предлагаю следующую процедуру:

Убедитесь, что все ведомые устройства обработали любые операторы в своем журнале реле с помощью:

mysql> STOP SLAVE IO_THREAD;
mysql> SHOW PROCESSLIST; to see `Has read all relay log` state.

на ведомом 1 сделайте его мастером с помощью:

mysql> STOP SLAVE;
mysql> RESET MASTER;

на ведомом 2 укажите нового ведущего с помощью:

mysql> CHANGE MASTER TO MASTER_HOST='slave 1';
mysql> START SLAVE;

И наконец, каждому клиенту предлагается направить свои операторы подчиненному устройству 1.

http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-switch.html