У меня есть несколько больших баз данных, 350 ГБ + каждая с более чем 100 таблицами в каждой. В основном это таблицы MyISAM с добавлением нескольких таблиц InnoDB для хорошей оценки.
Платформа: - Таблицы Linux, MySQL 5.1, MyISAM + InnoDB (с включенной опцией file_per_table)
Мне нужно продублировать эту базу данных на главном сервере и правильно отразить дублирование на подчиненном сервере, и у меня возникли некоторые проблемы.
Выполнение mysqldump и последующего восстановления выполняется успешно, но очень медленно, и ведомому устройству требуется много времени, чтобы наверстать упущенное.
Выполнение прямой копии файлов данных на диске, похоже, не работает, поскольку information_schema неточно отражает скопированную базу данных - в некоторых случаях таблицы даже не существуют в целевой базе данных, хотя myisamchk может проверять и восстановить индексы успешно.
Есть ли способ выполнить копирование файлов данных на диск и чтобы информация_schema точно отражала скопированную базу данных, или мне просто придется объединить ее в одну кучу и продолжить работу с опцией дампа / восстановления? И если я могу дублировать базы данных таким образом, могу ли я выполнить те же действия на ведомом устройстве, не нарушая статус репликации?
Заранее спасибо, Дэйв
У вас LVM включен? Если да, вы можете использовать его для создания снимка раздела, не закрывая mysql, а затем вы можете смонтировать снимок и скопировать из него файлы. Вот статья описание метода.
Если бы вы могли закрыть базу данных, вы могли бы копировать файлы сырых данных. Просто не забудьте исправить свою основную информацию.
Самый надежный метод - отключить главную базу данных и скопировать файлы двоичной базы данных с главного устройства на подчиненное, поднять их обоих и запустить репликацию. Я понимаю, что с 350 ГБ таблиц это может быть проблемным решением. Вы можете выиграть время, сделав копию максимально быстрой, что обычно означает копирование на совершенно другой набор дисков на главном сервере. Затем вы можете восстановить мастер и не торопясь перемещать копию по более медленному сетевому каналу.
Копирование файлов MyISAM из-под MySQL будет работать, по крайней мере, я знаю, что это было во времена MySQL v3 и v4. (Убедитесь, что у вас отключено ведомое устройство при запуске myisamchk
.) Однако это не работает для файлов InnoDB.
Существует инструмент под названием «MySqL Hot Backup» или что-то подобное, способное сделать все это более умным способом. Загвоздка в том, что вам, возможно, придется заплатить за это, по крайней мере, за поддержку InnoDB.