Можно ли создать MySQL slave с самого начала мастера binlog без предварительного копирования данных?
Информация : все мои таблицы innodb.
я знаю, что могу создать MySQL-раба, скопировав данные с главного на ведомое и отметив положение в binlog и установив его на ведомом устройстве. таким образом, ведомое устройство должно быть в состоянии воспроизвести все записи главного бенлога с момента резервного копирования и синхронизации таким образом.
но в случае, если binlog существует с самого начала, могу ли я просто установить позицию binlog на ведомом устройстве в 0, таким образом, не нужно копировать какие-либо данные и просто заставить подчиненное устройство выполнять самую последнюю запись binlog?
2 ответа
Это может сработать, если
- Вы загрузили данные в пустой экземпляр MySQL
- Вы включили двоичное ведение журнала с самого начала
- Вы никогда не стирали ни одного из ваших двоичных журналов
Есть одна загвоздка: нет буквальной позиции 0.
Существует разная позиция 0 для разных версий MySQL
- позиция 107 (MySQL 5.5)
- позиция 106 (MySQL 5.1)
- позиция 98 (MySQL 5.0 и ранее)
Я писал об этом давно в DBA StackExchange:
Feb 04, 2011
: Повреждение базы данных MySQLJun 09, 2011
: Ням обновление mysql с 5.1 до 5.5
Если у вас нет каждого двоичного журнала с момента начала загрузки данных MySQL, вы можете сделать копию, используя rsync
и один перезапуск mysql
:
Если у вас действительно есть все журналы и база данных настроена правильно, я не могу придумать ни одной технической причины, почему бы и нет. Вся причина, стоящая за бинлогом, заключается в том, чтобы допустить подобные вещи.