Репликация MySQL на одном сервере
Дано:
MySQL сервер (у меня он на Ubuntu, но тут, пожалуй не важно) — одна штука, база данных base1.
Надо:
Сделать репликацию базы на том же самом сервере, не запуская дополнительных процессов, в базу base2.
Решение:
Копируем base1 в base2, каким угодно способом, это ваше начальное состояние, после этого base1 не должна меняться.
Настраиваем [mysql] секцию в /etc/mysql/my.cnf, добавив:
... server-id=1 report-host=master-is-slave-host log-bin=myserver-binlog relay-log=myserver-relaylog replicate-same-server-id=1 binlog-do-db=base1 replicate-rewrite-db=base1->base2 replicate-do-db=base2 ...
После этого следует перезапустить сервер и можно увидеть, что binlog начал писаться:
# service mysql restart ... # ls /var/lib/mysql/myserver* myserver-binlog.000001
Выдыхаем, запускаем работу вашего приложения с base1, теперь можно.
Осталось запустить репликацию, выполняем админом в базе:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'localhost' IDENTIFIED BY 'CoolPassW0rd'; FLUSH PRIVILEGES; CHANGE MASTER TO MASTER_HOST='localhost', MASTER_USER='repl', MASTER_PASSWORD='CoolPassW0rd', MASTER_LOG_FILE='myserver-binlog.000001'; START SLAVE;
И для контроля, что всё ок, посмотрите, что выдают:
SHOW MASTER STATUS; SHOW SLAVE STATUS;