**Это старая версия документа!**
Перенос данных и настройка репликации
Перенастройка сервера старой машины
Для начала требуется остановить сервер
sudo service mysql stop
Далее требуется изменить конфигурацию сервер
cd /etc/mysql
nano my.cnf #или mcedit my.cnf
Внесите данную конфигурацию в конец файла
[mysqld] server_id = 1 log_bin = /var/lib/mysql/mysql-bin.log binlog_do_db = medis_archive binlog_do_db = medis_db #... Укажите все базы данных на сервере относящиеся к MGERM. В конце инструкции есть скрипт для получения списка binlog_do_db = medis_users auto_increment_increment = 2
Перезапустите сервер
sudo service mysql start
Подключитесь к mysql
mysql -u<mysql_user> -p
Добавьте пользователя для репликации
mysql> CREATE USER 'replica_user'@'%' IDENTIFIED WITH mysql_native_password BY 'replica_user_password' mysql> GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%' mysql> FLUSH PRIVILEGES;
Заблокируем запись на сервер и получим необходимые параметры
mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS;
Последняя команда выведет на экран строку с данными. Требуется записать значения полей File и Position.
Например:
Запоминаем что File = binlog.001002 и Position = 336396. Эти значения нам потребуются дальше
Создайте дамп базы данных согласно инструкции. Выполняем только блок «Работа на старом сервере».
Далее введите команды
mysql> UNLOCK TABLES; mysql> exit;
Перенастройка нового сервера
Для начала требуется остановить сервер
sudo service mysql stop
Далее требуется изменить конфигурацию сервер
cd /etc/mysql
nano my.cnf #или mcedit my.cnf
Внесите данную конфигурацию в конец файла
[mysqld] serverid = 2 logbin = /var/lib/mysql/mysql-bin.log binlogdodb = medisarchive binlogdodb = medisdb #… Укажите все базы данных на сервере относящиеся к MGERM. В конце инструкции есть скрипт для получения списка binlogdodb = medisusers autoincrementoffset = 2 autoincrement_increment = 2 relay-log = /var/log/mysql/mysql-relay-bin.log
Перезапустите сервер
sudo service mysql start
Разверните созданный бекап на новом сервере согласно инструкции. Выполняем только блок «Работа на новом сервере».
Создаем фиксированный туннель для подключения
ssh -L6565:127.0.0.1:3306 -f -N -p< oldserverport> < oldserveruser>@< oldserverhost>
Подключаемся к mysql
mysql -u< mysql_user> -p
Введите следующий скрипт в поле ввода
CHANGE REPLICATION SOURCE TO SOURCEHOST='127.0.0.1', SOURCEPORT = 6565, SOURCEUSER='replicauser', SOURCEPASSWORD='replicauserpassword', SOURCELOGFILE='mysql-bin.001002', SOURCELOG_POS=336396;
Внимание! Параметры SOURCEPORT, SOURCELOGFILE и SOURCELOG_POS должны быть указаны в соответвии с предыдущими действиями!
- SOURCEPORT - возьмите номер из пункта 'Создаем фиксированный туннель для подключения' * SOURCELOGFILE и SOURCELOG_POS - возьмите из пункта 'Заблокируем запись на сервер и получим необходимые параметры'
Запускаем репликацию
mysql> START REPLICA; mysql> SHOW REPLICA STATUS\G;
Если все прошло удачно, то репликация начнется. Для проверки, можно создать произвольную строку в произвольной таблице любой базы данных на старом сервере и посмотреть, появится ли она на новом сервере. Если строка не появится, то была допущена ошибка при создании реплики или существует другая проблема. Гугл в помощь :(
Скрипт для получения всех строк binlog_do_db
SELECT CONCAT('binlog_do_db = ',SCHEMA_NAME) FROM information_schema.SCHEMATA WHERE SCHEMA_NAME LIKE 'medis_%'