У нас есть эта база данных MySQL, работающая в производственной среде, и нам нужно переместить базу данных на другой неиспользуемый сервер с большим пространством. Наша проблема в том, что у нас уже есть действительно огромное количество программ, работающих с текущим IP-адресом, и изменение всего этого было бы кошмаром и слишком медленно, поэтому мы подумали о том, чтобы сделать текущий экземпляр MySQL «интерфейсом», который принимает запросы. и перенаправляет на «подчиненный» или «бэкэнд», который действительно содержит настоящую базу данных.
Все это также связано с идеей дать некоторое время для миграции существующего программного обеспечения на «подчиненный» MySQL и беспрепятственного переноса базы данных на новый сервер.
Кто-нибудь пробовал свои силы?
Используется ли ваш существующий сервер для чего-нибудь еще, кроме MySQL? в таком случае вы всегда можете назначить существующий адрес новому серверу.
За исключением этого, вы также можете использовать NAT для перенаправления порта MySQL на новый хост. Например, в Linux:
iptables -t NAT -A PREROUTING -d 10.0.0.1 -p tcp --dport 3306 -j DNAT --to-destination 10.0.0.2
Не забудьте включить пересылку и добавить соответствующие правила брандмауэра.
Вы можете отделить каталог данных от остальной части приложения mysql и переместить каталог данных в том на другом сервере. Однако вы должны знать, что вы не можете просто сделать это с любым сетевым протоколом, таким как самба.
Предположительно вы можете сделать это с помощью NFS, в зависимости от того, на какой сервер / SAN / NAS вы его используете. См. Например MySQL 5.1.34 на NFS с NetApp.
Вероятно, лучший способ сделать это - использовать iSCSI. Тем не менее, вам следует выяснить, дает ли эта опция достаточно операций ввода-вывода в секунду для работы с вашей базой данных.
Взгляните на MySQL Proxy, текст ссылки. Это может сделать то, что вы хотите.
Если бы у вас был подчиненный репликант, вы могли бы динамически перемещать IP-адрес, поскольку MySQL не привязывается к интерфейсу. Вам будет сложно найти решение без единого сервера.
Возможно, у вас получится продублировать схему и разработать план миграции, который включает в себя последующее объединение набора данных.
В stackoverflow был сценарий оболочки Windows (.vbs), который разлагает и перекомпоновывает файл mysql в текстовые файлы и обратно. С самого начала он экспортирует формы, модули, макросы и отчеты. Вот ссылка на это здесь. Это первый выбранный ответ. Теперь по какой-то причине первоначальный автор решил не экспортировать таблицы и запросы или отношения таблиц просто потому, что они хранятся в Access по-другому. Кроме того, этот сценарий удаляет каждый «объект» по мере его экспорта, поэтому одна трудность заключалась в том, что вы не можете удалить таблицу, пока не удалите ее взаимосвязь. Немного хлопот. Также он не обеспечивал поддержку между файлами .adp и .mdb. Это нужно делать вручную.
Однако все это возможно, поэтому, если у вас есть связанные таблицы, вы можете выяснить, как экспортировать их в текстовую форму. Затем экспортируйте Relationships. Удалите отношения, а затем удалите таблицы. (Если вы указали IP-адрес в каких-либо модулях или сквозных запросах, вам придется проделать это и с ними.) Попросите сценарий удалить их все, что вы выбрали для экспорта из исходного файла. После этого у вас будет ваш файл msaccess в виде кучи текстовых файлов. С этого момента это просто простой случай выполнения поиска / замены для каждого файла (через код), а затем перекомпоновки файла из каждого измененного элемента.
Программировать неудобно, но это определенно помогает многим без труда перейти от производственной среды к среде разработки.
ИЗМЕНИТЬ Кажется, кто-то сделал что-то похожее на то, что сделал я, но, вероятно, лучше, чем моя версия: http://accesssvn.codeplex.com/ ИЗМЕНИТЬ СНОВА Хммм, если это сработает для вас, тогда отлично, но эта программа не работает для меня :( Плюс она на C # :(