2011-11-23 3 views
3

struts 2 (jsp) 웹 응용 프로그램이 있습니다.jsp 페이지에서 데이터베이스 백업

jsp/java 페이지에서 데이터베이스 백업을 수행 할 수 있습니까?

마찬가지로 복원을 복원 할 수 있습니까?

좀 자습서 또는 팁을 제공하십시오 ..

내 실제 필요가 서버에서 MySQL을 액세스하지 않고, 백업 받아 GUI 자체를 사용하여 복원 에 관리자에 대한 액세스 권한을 부여하는 것입니다. 사전에

감사합니다 ..

+0

데이터베이스를 통해 CRUD (만들기, 읽기, 업데이트, 삭제) 작업을 할 수 있지만 사용중인 데이터베이스의 JDBC API – GustyWind

+0

내에서 프로그래밍 언어를 통해 복원/백업 할 수는 없습니다. MySQL의 경우 사용할 수있는 워크 벤치를 사용할 수 있습니다. 백업 마법사 및 더 나은 사용자 간단한 명령 줄 .EURse 커드 간단한 커드 작업을 만들 수 있습니다 –

답변

3

당신이

static int BUFFER = 10485760;  

public static String getData(String host, String port, String user, String password, String db) throws Exception { 

Process run = Runtime.getRuntime().exec(
      "C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump --host=" + host + " --port=" + port + 
      " --user=" + user + " --password=" + password + 
      " --compact --databases --add-drop-table --complete-insert --extended-insert " + 
      "--skip-comments --skip-triggers "+ db); 
InputStream in = run.getInputStream(); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
StringBuffer temp = new StringBuffer(); 
int count; 
char[] cbuf = new char[BUFFER]; 

while ((count = br.read(cbuf, 0, BUFFER)) != -1) 
     temp.append(cbuf, 0, count); 

br.close(); 
in.close(); 

return temp.toString(); 
} 

public static void main(String[] args) { 
byte[] data = BackupRestore.getData("localhost", "3306", 
    "root", "", "test").getBytes();  
File filedst = new File(path); 
FileOutputStream dest = new FileOutputStream(filedst); 
dest.write(data); 
} 

과 같은 작업을 수행 할 수 있습니다하지만 당신이 더 나은 사용자 명령 줄 도구를 할 수있는 강력한/공상 이유가없는 때까지 내가 생각 MySQL을 사용하는 경우

MySQL과 함께 제공되는 GUI 도구를 사용하여 테스트를 거쳐 더욱 쉽게 사용할 수 있습니다.

String path="C:/datadump/db_backup.sql" 

는 해당 경로 C:/datadump가 존재한다 확인 또는 당신은 당신의 선택의 다른 경로를 제공 할 수 있습니다.

+0

u는 정말 좋은 일을했습니다 ... 최고의 아이디어 ... –

+0

이 문제를 해결할 수 있다면 답변을 수락 한 것으로 표시 할 수 있습니다 –

+0

어디로 결과가 저장 될까요? 그것은 .sql 형식이 될 것인가? –

3

당신은 일 수도 있지만, 좋은 생각은 아닙니다. MySQL 논리 백업은 SQL이며 서버 내부에 대한 액세스가 필요하지 않습니다. 문서화 된 SQL 인터페이스를 사용하여 백업을 만들 수 있습니다.

당신은 INFORMATION_SCHEMA에서 등 데이터베이스, 테이블, 뷰의 목록을 얻을, 또는 show tables에서 수
    • 당신은 INFORMATION_SCHEMA에서 테이블 정의를 얻을 수 있습니다, 또는 show create table
    • 당신은 얻을 수 있습니다 물론 select * from table_name

    를 사용하여 테이블의 내용은, 당신이 뭔가를 (당신은 트리거, 저장 프로 시저, 사용자 정의를 기억 않았다 실종 위험이 D- 기능, ...?). 당신이 오늘 아무것도 놓치지 않더라도 새로운 MySQL 버전이 나오면 내일 새로운 것을 놓칠 위험이 있습니다.

    mysqldump은 MySQL 작성자가 백업 할 새 항목을 추가하는 것을 기억하기 때문에 선호해야합니다. 당신은 그것을 호출하기 위해 밖으로 쉘 수 있습니다; 출력 (디폴트)은 SQL입니다.

    백업 복원은 간단합니다. SQL 문을 하나씩 실행하십시오.