Как скопировать базу данных с одного сервера на другой сервер в PHP?

0

У меня есть база данных на локальном сервере с именем "empData", и я хочу, чтобы все данные из этой базы данных были скопированы в другую базу данных, которая находится на другом сервере (веб-сервере) с именем "empDataBackup". Я пробовал этот код mysql_query("INSERT INTO empData.backup_emp SELECT * FROM empData.emp"); Но это не сработало, поскольку обе базы данных не находятся на одном сервере... (так как в нашем случае один из них локальный, а другой - на веб-сервере). пожалуйста, помогите..

  • 0
    второй сервер разрешает подключения к MySQL извне? В большинстве случаев он настроен только на localhost.
  • 0
    я пытался подключиться, но выдает ошибку ... "Предупреждение: mysql_connect () [function.mysql-connect]: доступ запрещен для пользователя ..."
Теги:

4 ответа

2
Лучший ответ

Сбросьте свои данные с помощью mysqldump, а затем переместите этот файл в mysql, чтобы импортировать данные где-то еще.

На сервере1:

mysqldump empData > empData.sql

На сервере2:

mysql < empData.sql

Если вы хотите получить фантазию, вы можете использовать pipe и ssh для передачи данных непосредственно с сервера1 на server2.

  • 0
    но я должен держать проверку, данные уже присутствуют или нет .. так, чтобы избежать дублирования .... выше метод добавит данные в резервную базу данных ....
  • 0
    Команда use может передать флаг --insert-ignore mysqldump чтобы он выписал операторы INSERT IGNORE для всех данных. Таким образом, он не будет перезаписывать строку, если ключ уже существует. dev.mysql.com/doc/refman/5.1/en/...
Показать ещё 2 комментария
1

Всегда есть возможность прямого Репликация MySQL, полагаясь на ваш PHP script, чтобы синхронизировать базы данных

1

это не ответ на PHP, но, возможно, вам пришло в голову:

mysqldump --host=db1.example.com --user=db1user --password=db1pass --single-transaction myschema mytable | \
    mysql --host=db2.example.com --user=db2user --password=db2pass myschema

Если вы не можете получить доступ к обоим узлам с одного компьютера, вы можете использовать ssh, например.

ssh db1.example.com 'mysqldump --user=db1user --password=db1pass --single-transaction myschema mytable' | \
  mysql --user=db2user --password=db2pass myschema

или

mysqldump --user=db1user --password=db1pass --single-transaction myschema mytable | \
  ssh db2.example.com 'mysql --user=db2user --password=db2pass myschema'
0

Вы должны сбросить базу данных на исходном сервере, затем скопировать ее на другой сервер и восстановить ее.

Для каждого из этих действий существует "сторона сервера" и "PHPside". Если вы можете, используйте первый. Если вы не можете использовать второе, но вам нужно уделять дополнительное внимание безопасности.

Серверная сторона: 1. и 3.: используйте mysqldump. 2. Используйте scp для передачи файла.

Сторона PHP: 1. используйте script для создания баз данных, таких как этот. 2. Скопируйте файл с помощью CURL или поместите его в доступный каталог, как-то защитив его. 3. Извлеките файл со второго сервера и просто запустите его через mysql_exec для восстановления базы данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню