MySQL 테이블을 복제하는 방법 – 빠른 팁

WBOY
풀어 주다: 2024-08-21 21:03:15
원래의
1045명이 탐색했습니다.

최근에는 테이블 이름 바꾸기를 지원하지 않는 데이터베이스 공급자의 몇 가지 제한 사항을 처리해야 했습니다. 그래서 수동으로 테이블을 복제해야 했습니다.

내 SaaS 플랫폼의 데이터베이스는 Planetscale에서 호스팅됩니다. 이 회사는 MySQL 호환 서버리스 데이터베이스를 제공합니다. 서버리스 특성 덕분에 수평 샤딩, 비차단 스키마 변경 및 더 많은 강력한 데이터베이스 기능을 구현하는 데 어려움을 겪지 않고도 얻을 수 있습니다. 그리고 훌륭한 개발자 경험을 선사합니다.

다른 관점에서 보면 스키마 변경과 관련된 일부 제약 조건을 처리해야 합니다. 이러한 제한은 샤딩된 환경에서 일관성을 보장하는 데 필요합니다.

제가 고객이 된 이후(거의 2년 전) 외래 키 제약 조건 지원과 같이 많은 발전을 이루었습니다: https://planetscale.com/docs/concepts/foreign-key-constraints

테이블 이름 바꾸기

Inspector는 Laravel 애플리케이션입니다. Laravel 마이그레이션을 사용하면 이름 바꾸기 기능을 사용하여 간단히 테이블 이름을 변경할 수 있습니다.

Schema::rename('from', 'to');
로그인 후 복사

Planetscale은 기본적으로 테이블 이름 바꾸기를 지원하지 않습니다. 그래서 과제를 완수하기 위해서는 해결 방법을 찾아야 했습니다.

솔직히 테이블 이름을 바꾸는 것은 매우 드문 작업입니다. 나에게는 "프로젝트"와 "응용 프로그램" 엔터티 사이의 이름이 겹치기 때문이었습니다. 프로젝트 이름을 바꿔야 했습니다 -> 애플리케이션.

MySQL에서 테이블을 복제하는 방법

MySQL에서 테이블을 복제하는 방법에는 두 가지가 있습니다.

테이블 구조 복제

CREATE TABLE … LIKE를 사용하면 데이터 없이 테이블 구조(열, 키, 인덱스 등)만 복제할 수 있습니다.

CREATE TABLE applications LIKE projects;
로그인 후 복사

결과적으로 원본 프로젝트 테이블과 구조가 완전히 동일하지만 데이터가 없는 애플리케이션 테이블이 생성됩니다.

데이터를 가져오려면 INSERT INTO … SELECT:
로 두 번째 문을 실행할 수 있습니다.

INSERT INTO applications SELECT * FROM projects;
로그인 후 복사

이 명령문은 큰 테이블에서 실행하는 데 시간과 서버 리소스가 많이 소요될 수 있으므로 주의하세요.

열 정의만 복제

두 번째 옵션은 CREATE TABLE … AS SELECT:
를 사용하여 열 정의만 복제하고 하나의 문으로 데이터를 가져오는 것입니다.

CREATE TABLE applications AS SELECT * FROM projects;
로그인 후 복사

새 애플리케이션 테이블은 프로젝트 테이블의 기본 열 정의만 상속합니다. 외래 키 제약 조건, 인덱스 및 auto_increment 정의를 복제하지 않습니다.

이 옵션은 테이블 이름과 관련된 인덱스 및 키 이름이 있는 경우 유용할 수 있습니다. 테이블 이름을 변경하면 제약 조건의 이름을 바꿔야 합니다. 전혀 가져오지 않고 처음부터 다시 수행하는 것이 좋습니다.

자원

데이터베이스는 어느 단계에서든 항상 개발자에게 뜨거운 주제입니다. 블로그에서 다른 기술 자료를 찾아보실 수 있습니다. 다음은 해당 주제에 대한 가장 인기 있는 기사입니다.

  • 해결됨 - 무결성 제약 조건 위반
  • Laravel Eager Loading으로 100만 쿼리 저장
  • SQL 데이터베이스를 확장하는 방법
  • 해결됨 – Laravel 대기열 및 작업 사용 시 MySQL 잠금 대기 시간 초과가 초과되었습니다

Inspector를 처음 사용하시나요? 무료로 애플리케이션을 모니터링하세요

Inspector는 소프트웨어 개발자를 위해 특별히 설계된 코드 실행 모니터링 도구입니다. 서버 수준에서는 아무 것도 설치할 필요가 없습니다. Composer 패키지만 설치하면 바로 사용할 수 있습니다.

다른 복잡한 올인원 플랫폼과 달리 Inspector는 매우 쉽고 PHP 친화적입니다. Laravel 또는 Symfony 패키지를 사용해 볼 수 있습니다.

효과적인 자동화, 심층적인 통찰력, 경고 및 알림을 메시징 환경으로 전달하는 기능을 찾고 있다면 Inspector를 무료로 사용해 보세요. 계정을 등록하세요.

또는 웹사이트에서 자세한 내용을 알아보세요: https://inspector.dev

MySQL How To Duplicate A Table – Fast Tips

위 내용은 MySQL 테이블을 복제하는 방법 – 빠른 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!