On 02/06/12 16:18, skeletor wrote:
06.02.2012 14:10, Anton Yuzhaninov пишет:

Чтобы получить работающий slave, надо сначала получить dump мастера.

Именно! Вот как раз и в этом состоит и проблема.

Как она решается в треде уже написано. Напишу более подробно.

1. Включть в mysql заись binary log
Проверить через show master status, что логи пишутся.

1. в mysql
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS

2. В OS
sync
sleep 5
делаем ZFS snapshot (или gmirror remove если нет ZFS)

3. в mysql
UNLOCK TABLES

4. Копируем данные из папки снапшота на будущий слейв. Это может идти долго, но будущий мастер в этот момент работает, даунтайма нет. Чтобы копироание не грузило диски, можно использовать scp -l

5. На будущем слейве запускает mysql и выполняем команду

CHANGE MASTER TO master_host="master.example.ru", master_user="usr_repl", master_password="xxx", master_log_file="master-bin.000123", master_log_pos=12345;

где имя лога и позицию в нем, указываем как показал SHOW MASTER STATUS при создании снапшота.

После этого слейв начнем медленно догонять мастер. Если на мастере шла активная запись, то догонять будет долго, но на работу мастера это не влияет, нагрузка от наличия слейва будет очень небольшая. Прогресс смотреть по SHOW SLAVE STATUS.

После того как слейв догонит, на нем можно делать бэкапы с помощью mysqldump и мучить его другими способами.

--
 Anton Yuzhaninov

Ответить