Копирование баз mysql между серверами. Как не больно?

1 23
BigConcept
На сайте с 16.05.2007
Offline
96
#21
Lor:
Сделал. Получилось быстро и без особых проблем. Пользовался советом barty.

Если кому интересно, напишу тут по пунктам.

Напиши, пожалуйста, тоже интересно

Lor
На сайте с 28.05.2004
Offline
353
Lor
#22
BigConcept:
Напиши, пожалуйста, тоже интересно

Оба сервера должны быть соединены между собой, желательно кабелем, либо оба должны быть подключены к Интернету, если они на разных датацентрах. У вас должен быть доступ к обеим серверам через SSH.

Я делал так:

1. На новом сервере из под phpMyAdmin создал точно такие же базы(с теми же именами) и точно такого же юзера с тем же паролем, как и на старом сервере. Присвоил этому юзеру эти базы с теми же привелегиями(All, Grant - "No"). /Естественно, эти процедуры можно выполнить и без phpMyAdmin, напрямую в mysql> или mysqladmin/

2. Зашел на старый сервер под SSH(я юзаю putty.exe) как root. Если до этого новый сервер не был добавлен в список "known host", надо выполнить команду >ssh новый_сервер(IP или имя хоста). SSH попробует соедениться с новым сервером, попросит принять их publik_key, спросит root password и добавит новый сервер в список известных хостов. На новом сервере SSH должна быть настроена на работу с root напрямую, а не через su(супер юзера). Если вы вошли на новый сервер после этого, то все ok.

Сразу можете посмотреть путь где MySQL держит базы на новом сервере. Обычно /var/lib/mysql/. Там вы должны найти директории, которые mySQL создала для каждой базы, котоые вы создали через phpMyAdmin. Запишите этот путь - он будет нужен.

3. Выходите с нового сервера(exit - вы находитесь в SSH) и идете в директорию на старом сервере, где у вас лежат файлы mySQL. Обычно это тоже /var/lib/mysql/. Убеждаетесь, что там есть директории с именами ваших баз.

4. Теперь копируете файлы баз со старого сервера на новый командой:

rsync -rtzlvpog /путь/от/куда/ xxx.xxx.xxx.xxx:/путь/куда/

или(для стандартного расположения mySQL):

rsync -rtzlvpog /var/lib/mysql/имя базы(директории) xxx.xxx.xxx.xxx:/var/lib/mysql/имя базы(директории)

Пример:

rsync -rtzlvpog /var/lib/mysql/users_basa 101.122.45.212:/var/lib/mysql/users_basa

если соединение установлено, то еще вас спросят roor password для удаленного сервера. Если выскакивает ошибка, то надо соединится с удаленным сервером, как я писал выше, через ssh, чтобы добавить удаленный сервер в список known host.

После копирования меняете во всех скриптах, где вы коннектитесь к mySQL хост с 'localhost' на IP адрес(или имя хоста) нового сервера. Перед этой заменой потестируйте вручную через какой-нибудь тестовый скриптик.

Чтобы избежать потери данных добавленных в базу в момент копирования вы можете остановить MySQL или Apache или просто в программе отключить запись в MySQL на старом сервере.

Программа rsync с этими ключами -rtzlvpog при повторном копировании, проверяет изменились ли файлы source. Если не изменились, то она их не копирует.

Йопез - форум без модераторов. https://yopez.com
1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий