На мастер сервере
В конфиге (/etc/my.cnf) прописываем, в секции [mysqld]:
log-bin
binlog_format=mixed
server-id = 1
Перезагружаем mysql:
service mysqld restart
Дальше подключаемся к mysql:
mysql -h <master-server> -b <database> -u <user> -p
Заводим пользователя под которым будет подключаться slave:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'<slave-server>' IDENTIFIED BY 'password';
Запрещаем запись в таблицы:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
Смотрим текущий файл и позицию binlog`а:
SHOW MASTER STATUS \G
Запоминаем их.
Заходим в другую консоль и делаем дамп базы:
mysqldump --databases <database> --opt > <dump_filename>
Возвращаемся в предыдущую консоль и включаем обратно запись в базу:
SET GLOBAL read_only = OFF;
Можно отключаться.
Копируем дамп на вторичный сервер:
scp <dump_filename> <slave-server>:<dump_filename>
На slave-сервере
В конфиге (/etc/my.cnf) прописываем, в секции [mysqld]:
log-bin
server-id = 2
master-host = <master-server>
master-user = repl
master-password = password
Перезагружаем mysql:
service mysqld restart
Подключаемся к mysql:
mysql -h <slave-server> -b <database> -u <user> -p
Заводим пользователя для репликации:
GRANT REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY 'password';
В другой консоли восстанавливаем базу из дампа:
cat <dump_filename> | mysql -h <slave-server> -u <user> -p
Возвращаемся в консоль с подключенным mysql,
и останавливаем slave:
SLAVE STOP;
Прописываем текущую позицию binlog`а подсмотренную на мастер-сервере:
CHANGE MASTER TO MASTER_HOST = "<master-server>", MASTER_USER = "repl", MASTER_PASSWORD = "password", MASTER_LOG_FILE = "<binlog_filename>", MASTER_LOG_POS = <binlog_position>;
Стартуем slave:
SLAVE START;
И проверяем заработала ли репликация:
SHOW SLAVE STATUS \G
Всё.
P.S. Копировать пользователей нужно отдельно.
Комментариев нет:
Отправить комментарий