MySQL Replication: Переместите ведомое устройство, чтобы быть ведомым устройством другого ведомого устройства ни с кем (или наименее возможный) время простоя

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

Если Вы оптимизируете для срыва атак перебором, которые распространены, изменяют порт, на котором работает sshd. Это будет заботиться о подавляющем большинстве тех.

2
задан 21 January 2012 в 22:54
1 ответ

ВНИМАНИЕ: пожалуйста, прочтите это внимательно, убедитесь, что вы понимаете и доверяете ему

Начнем:

Шаг 01) Получите частный IP-адрес S1 (запишите где-нибудь)

$ ip addr show

Шаг 02) Получите имя пользователя и пароль для репликации от S1

cd /var/lib/mysql
cat master.info

Имя пользователя и пароль в этом файле в виде обычного текста

Шаг 03) Запустите это на S1

mysql> GRANT REPLICATION SLAVE ON *.* TO '<username from Step 02>'@'%' IDENTIFIED BY '<password from Step 02>';

Шаг 04) На S1 добавьте это в /etc/my.cnf[1279 impression Шаг 05) На S1 запустите это

service mysql restart

Это создает двоичные журналы на S1

Шаг 06) На M1 запустите это в командной строке

$ mysql -u... -p... -e"FLUSH TABLES WITH READ LOCK; SELECT SLEEP(86400);" &
$ sleep 15
$ mysql -u... -p... -e"SHOW PROCESSLIST;" | grep "SELECT SLEEP(86400)" | awk '{print $1}'

Это поместит Мастер в состояние анабиоза. Положение двоичного журнала на Мастере перестанет перемещаться. Это даст всем подчиненным возможность остановиться в одном месте в репликации. Последняя строка будет отображать MySQL ProcessID, который удерживает блокировку чтения. НЕ ТЕРЯЙТЕ ЭТО НОМЕР !!!

Шаг 07) Выполните это на S1.

mysql> RESET MASTER; SHOW MASTER STATUS;

Это очистит все двоичные журналы на S1 и покажет вам двоичный журнал и положение S1. Файл журнала должен называться mysql-bin.000001 . Положение будет зависеть от версии MySQL. Для MySQL 5.5 это 107. Для MySQL 5.1 это 106. Для любой версии до MySQL 5.1 это 98.

Шаг 08) Выполните это на S2 и S3

mysql> STOP SLAVE;

Шаг 09) На M1 запустите это :

mysql> KILL <ProcessID From Step 06>;

Это освободит все ожидающие INSERT, UPDATE и DELETE.

Шаг 10) Запустите это на S2 и S3

mysql> CHANGE MASTER TO
MASTER_HOST='<ip address of S1 from Step 01>',
MASTER_PORT=3306,
MASTER_USER='<username from Step 02>',
MASTER_PASSWORD='<password from Step 02>',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;

Помните, пользователь MASTER_LOG_POS = 106 для MySQL 5.1 или MASTER_LOG_POS = 98 для MySQL 5.0 и обратно.

Это укажет репликацию S2 и S3 на запуск с S1.

Шаг 11) Запустите это на S2

mysql> START SLAVE; SELECT SLEEP(5); SHOW SLAVE STATUS\G

Это запустит репликацию, приостановит 5 секунд и покажет статус ведомого.

1
ответ дан 3 December 2019 в 13:13

Теги

Похожие вопросы