source

전체 데이터베이스를 다른 서버 데이터베이스에 복사하는 방법?

ittop 2023. 9. 9. 10:16
반응형

전체 데이터베이스를 다른 서버 데이터베이스에 복사하는 방법?

저는 현재 MySQL 백엔드로 윈도우 어플리케이션을 작업하고 있습니다.이제 이전 데이터베이스 구조와 데이터를 새 데이터베이스 서버에 복사하려고 합니다.

MySQL 워크벤치를 사용하여 이 문제를 해결하려면 어떻게 해야 합니까?

감사해요!

  1. MySQL 워크벤치 열기
  2. 이전 서버의 연결을 만듭니다(연결하지 않은 경우).
  3. 새 서버의 연결을 작성합니다(연결하지 않은 경우).
  4. 서버 관리로 이동하여 가져오기/내보내기 관리를 클릭합니다.
  5. 이전서버선택
  6. 디스크로 내보내기 탭에서 모든 스키마 선택
  7. 옵션에서 자체 포함 파일로 내보내기를 선택하고 완료될 때까지 기다립니다.
  8. 서버 관리로 돌아가서 가져오기/내보내기 관리를 클릭합니다.
  9. 새 서버 선택
  10. 디스크에서 가져오기로 전환
  11. "자체 파일에서 가져오기"를 클릭합니다.

MySQL Workbech만 사용할 경우, 개발에서 프로덕션 시나리오처럼 새 서버에 설치하지 않은 경우가 있으며, 이러한 방식으로 mysqlimport 유틸리티를 실행해야 합니다.

MySQL Workbench 사용 [Migration Wizard]

중간 내보내기/덤프 파일을 만들지 않고 데이터베이스를 한 서버에서 다른 서버(로컬 서버)로 직접 복사하려면 마이SQL Workbench에서 마이그레이션 마법사를 사용하여 데이터베이스를 복사할 수 있습니다.에 가다Database-->Migration Wizard.

여기서 이전에 연결 목록에 저장한 경우 원본 및 대상 연결을 선택할 수 있습니다. 또는 새 연결을 즉시 만들 수 있습니다(연결 목록에 추가 확인란을 선택해야 함).
또한 데이터베이스 유형을 선택하거나 일반 버전(데이터베이스 이름 기억 안 나)을 선택한 후 사용자가 가지고 있는 데이터베이스 서버의 종류를 알 수 있습니다.일반적으로 MySQL 또는 MariaDB 데이터베이스에 대해 MySQL을 선택할 수 있습니다. MariaDB는 일반적으로 MySQL에 대한 "이진 드롭인 대체"로 설계되어 있기 때문입니다.

어떤 데이터베이스를 선택하라고 요구할 때, 제가 알기로는INFORMATION_SCHEMA읽기 전용이므로 선택해서는 안 됩니다.그렇지 않으면 특정 요구사항이 없는 한 서버(및 관련 웹 사이트)를 복제하는 경우 다른 모든 테이블을 선택할 수 있습니다.

그러면 MySQL Workbench에서 작업을 수행할 수 있습니다.스키마를 이전 서버에서 새 서버로 역설계하는 과정을 거치는 동안 데이터를 복사할 때까지 다음을 계속 클릭합니다.

진행하기 전에 변경할 수 있는 점이 많습니다.또한 프로세스 중에 잠재적인 문제와 경고를 볼 수도 있습니다.

이 작업이 완료된 후에도 복제된 데이터베이스에 대한 사용자(수동으로?)를 추가해야 합니다.아마도 사용자 테이블을 복제하는 자동화된 방법이 있을 것입니다만, 저는 그것에 대해 잘 모릅니다.다른 방법이 없으면 명령줄에서 이 작업을 수행할 수 있습니다.이것을 로컬 개발자를 위해 사용하기 때문에 어쨌든 추가할 수 있는 것은 저 자신뿐입니다.

일반적인 방식으로 데이터베이스를 내보내고 가져오는 것보다 이 도구를 사용하는 것이 더 빠르다는 것을 확신할 수 없습니다.하지만 그게 더 쉽죠.
: Postgress이한의스의예션한다다을해로예t(션s다):s을해g한esdlrygrsnx(s는t이SQL 및 MySQL)은 라이브 데이터베이스의 복사본을 로컬 개발 서버로 검색하거나 그 반대의 경우를 위한 일반적인 도구가 아니라,

같은 메뉴 아래에 있습니다.Database->Schema Transfer Wizard버전으로 해야 할 때하는 것으로 있습니다. , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , .구체적으로 두 도구의 차이점이나 실제 사용 사례에 대해서는 잘 모르겠습니다.

표준 가져오기/내보내기 작업을 수행하는 방법에 대한 지침 MySQL 워크벤치에서 문서는 SQL 데이터 내보내기가져오기 마법사와 테이블 데이터 내보내기가져오기 마법사입니다.

덤프 파일에 저장한 후 읽지 않고 Connections를 선택하는 것만으로 개발 서버와 라이브 서버 간에 직접 가져오기/내보내기가 가능하다면 멋질 것입니다.
명령 줄을 통해서도 가능할 것 같습니다.

내보내기 및 가져오기를 먼저 수행하지 않고 데이터베이스를 직접 복사하려면 MySQL Utilities 명령을 사용할 수 있습니다.

mysqldbcopy --source=root:root@localhost --destination=root:root@localhost world:world_clone

Windows(윈도우)에서할 수 .cmd또는 MySQL Utilities Console을 선택합니다.

phpmyadmin을 설치한 경우 다음 단계를 사용할 수 있습니다.

  1. 소스 서버의 phphmyadmin에서 "내보내기" 기능을 사용하여 다음을 확인합니다.

a) 내보내기 방법에서 "사용자 정의 - 가능한 모든 선택사항 표시"를 선택합니다.

b) "형식별 옵션"에서 "구조 및 데이터"를 선택했는지 확인합니다.

c) "Object create options"에서 "ADD CREATE DATABASE / USE statement"가 함께 표시되어 있는지 확인합니다.

SQL 파일을 내보냅니다.

  1. scp 원본 서버에서 대상 서버로 내보낸 파일

  2. 대상 서버의 phphmyadmin에서 "Import" 함수를 사용하여 SQL 파일을 데이터베이스로 가져옵니다.가져오기 프로세스 중에 선택해야 하는 사용자 지정 옵션이 없었습니다.

리눅스 환경에서 두 개의 mysql 서버가 모두 실행되고 있다면(애플리케이션이 윈도우용이라 할지라도), 데이터베이스를 복사하는 가장 안정적이고 빠른 방법은 우리가 복사하는 서버에서 이 한 줄기를 실행하는 것일 것입니다.

ssh -p <ssh port (usually 22)> host.from.where.we.copy "mysqldump -u my.sql.username.on.from.host -p\"mysql.password (might require some escaping-magic in case you got special characters in there)\" -F -f --databases name.of.database.we.copy | grep -vE \"^(USE|CREATE DATABASE)\" | bzip2 -c -" </dev/null > /tmp/name.of.database.we.copy.sql.bz2; bzip2 -dc /tmp/name.of.database.we.copy.sql.bz2 | mysql -u mysql.username.on.host.we.copy.to -p'mysql.password' new.database.name

예를 들어,

ssh -p 22 example.com "mysqldump -u root -p\"12345\" -F -f --databases mycooldb | grep -vE \"^(USE|CREATE DATABASE)\" | bzip2 -c -" </dev/null > /tmp/mycooldb.sql.bz2; bzip2 -dc /tmp/mycooldb.sql.bz2 | mysql -u someotheruser -p'54321' mynewcooldbcopy

그러면 우리가 복사하는 호스트에 덤프를 만들고 bz2로 압축한 후 파일을 새 서버로 전송하고 다른 사용자에게 db를 배포(필요한 경우)하고 이름을 지정할 수 있습니다.

언급URL : https://stackoverflow.com/questions/12472201/how-to-copy-the-whole-database-to-another-server-database

반응형