Репликация MySQL серверов +

У меня база данных Abills весит почти гигабайт и делать ее резервную копию на живом сервере – значит залочить таблицы минут на 30-40. В результате в это время никто зайти не может и статистика теряется.

Было принято решение организовать еще один MySQL сервер с репликацией с основного и делать бекап баз с него. Итак начнем. Ставим на другом сервере MySQL:

sudo apt-get install mysql-server

Настраиваем основной сервер для репликации

В конфиге /etc/mysql/my.cnf в раздел [mysqld] добавляем

log-bin
server-id=1

Теперь заводим пользователя для репликации баз на основном сервере:

mysql –u root-p
> GRANT REPLICATION SLAVE ON *.* TO repl@»%» IDENTIFIED BY ‘<yourpassword>’;
mysqladmin -u root -p shutdown

Теперь собираем все базы, с сервера в архив и запускаем MySQL сервер:

tar -cvf /tmp/mysql-snapshot.tar /var/lib/mysql
/etc/init.d/mysql start

Копируем архив каким-либо способом на резервный сервер и распаковываем его там в то же место. Далее смотрим пароль для пользователя debian-sys-maint в /etc/mysql/debian.cnf на основном сервере и копируем его на резервный.

Теперь на резервном сервере в конфиг /etc/mysql/my.cnf добавляем строки:

master-host=
master-user=
master-password=
master-port=
server-id=

В данном случае server-id ДОЛЖЕН ОТЛИЧАТЬСЯ от master-server. Т.е. от 2-х и выше.

Перезапускаем резервный MySQL сервер и проверяем пошла ли у нас репликация.

/etc/init.d/mysql restart
mysql –u root –p
> SHOW SLAVE STATUS;

Мы должны увидеть нечто вроде этого:

Waiting for master to send event…

Если Вы это видите, то все нормально. Если же нет, то в логах Вы увидите причину.

Теперь можно делать бекапы баз на резервном сервере не затрагивая основного.

Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

4 комментариев(я)

(Обязательно)
(Обязательно, не публикуется)

Скажи мне кто такой Билл Гейтс, и я скажу кто ты
Яндекс.Метрика beget