2010-12-10 3 views
1

2 개의 서버가 있습니다. # 1 원격 DB 액세스가 비활성화됩니다. 데이터베이스가 크므로 (~ 1GB) phpMyAdmin으로 데이터베이스를 덤프 할 수 없으므로 연결이 중단되고 연결이 중단됩니다. SSH 액세스 권한이 없습니다. 전체 DB를 # 2 (사실상 모든 것을 설정할 수 있음)로 복사해야합니다.HTTP를 통해 MySQL 데이터베이스 복사

제 아이디어는 # 1 이상의 일종의 HTTP 액세스 레이어를 사용하는 것입니다.

예를 들어 쿼리를 _GET/_POST 인수로 받아들이고 결과를 HTTP 본문으로 반환하는 간단한 PHP 스크립트.

# 2 (또는 내 데스크톱)에서 모든 테이블의 모든 행 (한 번에 하나씩)을 순차적으로 요청하는 일종의 서버 응용 프로그램을 설정할 수있었습니다.

내 질문은 : 당신은 그런 흐름과 함께 사용할 준비가 된 응용 프로그램을 알고 계십니까?

은 BTW : # 1 PHP는, # 2, 파이썬 등

내가 # 1에 아무것도를 실행할 수 없습니다, 모두는 fopen, 컬, 소켓, 시스템 등 PHP 수 비활성화 할 수 있습니다. PHP에서 DB에만 액세스 할 수 있으며 원격 연결은 허용되지 않습니다.

+0

MySQL은 공개되어 있거나 원격으로 액세스 할 수 있습니까? – TheLQ

+1

get ssh, http는이 용도로 설계되지 않았으므로 기존 프로토콜이 존재하는 곳 (rsync 또는 openvpn이 전체 ssh 액세스없이 도움이 될 수 있음) 위에 많은 제어 코드를 작성해야합니다. 또한 serverfault 시도 할 수도 있습니다. – Unreason

+1

흥미로운 질문을하는 동안, 필자는 왜 당신이 당신의 시스템 관리자에게 당신을 위해 데이터를 이전하도록 요청하지 않는지를 물어야 만합니다. 처음에 액세스하지 않아도되는 소스에서 데이터를 수집하려고합니까? – Will

답변

0

오래 전에 나는, DB 덤프 FTP

복제 옵션이 있습니다
0

서버 # 1에서 사용할 수있는 것이 명확하지 않습니다. 만 실행할 수 있습니다 가정

는 여전히

  • 실행 scp from php 할 수 및 서버 # 2에 연결, 어쩌면 당신이 지역의 명령을 실행하기 위해 PHP를 사용할 수

  • 같은 파일을 보낼 수 있습니다 PHP는 서버 # 1에? 서버 #에서 rsync through php을 실행하는 등의 경우 뭔가에 1

+0

# 1에서 아무것도 실행할 수 없습니다. 모든 fopen, 컬, 소켓, 시스템 등은 사용할 수 없습니다. PHP에서 DB 만 액세스 할 수 있으며 원격 연결은 허용되지 않습니다. – Coder

0

그것은 당신이 호스트의 소유자에게 연락하고 당신이 어떻게 든 데이터를 얻을 수 있다면 요청해야 나에게 소리를 작업 할 수 있습니다. 전체 데이터베이스를 스트리밍하여 새 시스템에 다시 삽입하는 것은 너무 어리 석습니다. 그것은 당신이 데이터를 얻을 PHP 서버에 많은 자원을 먹을 것입니다. (그리고 호스팅 제공 업체가 이미 제한적일 경우 일정 기간 동안 허용되는 SQL 작업의 양에 제한이있을 수 있습니다.)

강제로 수행해야 할 경우 선택 * 테이블에서 그리고 각 행에 대해 당신이 줄에 울리는 json 객체로 변환하십시오. 이렇게하면 끝에 디스크에 저장하고 나중에 삽입 할 수 있습니다.

+0

는 작동하지만 몹시 느리고/고통 스럽습니다. 관리자에게 연락하는 것이 데이터를 얻는 가장 좋은 방법이라고 동의합니다. – Will

+0

호스팅 제공 업체는 전적으로 사용할 수 없습니다. 3 년 넘게 메시지, 메일, 전화에 응답하지 않습니다. 그러나 서버와 도메인은 계속해서 작동합니다. 그리고 이것이 유일한 옵션이라고 생각합니다. 저는 제 자신의 소프트웨어를 작성하기 전에 사용할 수있는 소프트웨어가 있는지 묻는 것입니다. – Coder

0

FTP를 사용하여 두 서버에 모두 액세스 할 수 있습니다.

어떻게 PHP 파일을 다른 방법으로 얻을 수 있습니까?

아마도 mysql 데이터베이스를 FTP를 사용하여 액세스 할 수 있다면 복사 할 수 있습니다.

모든 경우에 해당되는 것은 아닙니다. 자세한 내용은 http://dev.mysql.com/doc/refman/5.0/en/copying-databases.html을 확인하십시오.

또는 당신은이 링크에있는 옵션을 시도 할 수 있습니다 : 당신의 PHP가 나는 그것이 전체 데이터베이스를 처리하는 데 시간이 걸릴 수 있습니다 상상할 수 있지만 설정이 얼마나

http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/using-php-to-backup-mysql-databases.aspx

지금하지 마십시오.

최대 실행 시간 설정 등

0

에 사용할 수 3.6 버전 2 애드온 소프트웨어 릴리스 단지 밤과 다음 날 아침에 오픈 브라우저를 왼쪽,이를 위해 Sypex Dumper을 사용 호스트 중 적어도 하나가 TCP를 통해 원격으로 도달 할 수있는 경우. 이런 식으로 버진 DB를 동기화하는 것은 느려지 겠지만 선택/삽입 시퀀스를 수행하여 손실 될 수있는 모든 테이블 메타 데이터를 보존하는 이점이 있습니다. 자세한 내용은 여기를 참조하십시오 : http://dev.mysql.com/doc/refman/5.0/en/replication.html

1

서버 # 1의 PHP에서 원격 MySQL 서버에 연결할 수 있습니까?

"원격 연결을 허용하지 않았습니다."라고 말했지만 특별히이 시나리오는 언급하지 않았습니다.

가능하다면 이전 데이터베이스에서 선택하고 서버 # 2에서 실행중인 MySQL에 직접 INSERT 할 수 있습니다.

0

이 상황에 어떻게 대처할 수 있을지 잘 모르겠습니다. 호스팅 제공 업체가 분명히 불합리한 상황이므로 연락을 취해야합니다. 가능한 한 빨리 서비스 사용을 중지해야합니다 (어쨌든이 일을하려고하는 것처럼 들리지만).

불행히도 PHPMyAdmin은 버그 및 제한 사항이 너무 많아 데이터에 중요한 데이터베이스 작업에는 적합하지 않습니다. 덤프 또는 복원에 의존해서는 안됩니다.

mysqldump는 데이터베이스를 안전하게 덤프하고 다시 가져와 데이터가 완전하고 정확할 수있는 유일한 방법입니다. 그것을 (로컬 또는 원격으로) 실행할 수 없다면, 나는 모든 배팅이 꺼져있는 것 같습니다.

관련 문제