현재 데이터베이스 sitedb1
를 sitedb2
동일한 mysql 데이터베이스 인스턴스에 복사하는 스크립트를 작성하고 싶습니다 . sitedb1을 SQL 스크립트에 덤프 할 수 있다는 것을 알고 있습니다.
mysqldump -u root -p sitedb1 >~/db_name.sql
그런 다음로 가져옵니다 sitedb2
. 첫 번째 데이터베이스를 SQL 파일로 덤프하지 않고 더 쉬운 방법이 있습니까?
답변
매뉴얼에 데이터베이스 복사에 나와있는 것처럼 덤프를 mysql 클라이언트에 직접 파이프 할 수 있습니다.
mysqldump db_name | mysql new_db_name
MyISAM을 사용하는 경우 파일을 복사 할 수 있지만 권장하지는 않습니다. 약간 피하다.
다양한 좋은 다른 답변에서 통합
mysqldump
및 mysql
명령 모두 다음 과 같이 연결 세부 정보를 설정하는 옵션을 허용합니다.
mysqldump -u <user name> --password=<pwd> <original db> | mysql -u <user name> -p <new db>
또한 새 데이터베이스가 아직 존재하지 않으면 미리 데이터베이스를 만들어야합니다 (예 🙂 echo "create database new_db_name" | mysql -u <dbuser> -p
.
답변
MySQL 유틸리티 사용
MySQL 유틸리티에는 멋진 도구가 포함되어 있습니다 mysqldbcopy
기본적으로 모든 관련 개체 (“테이블, 뷰, 트리거, 이벤트, 프로 시저, 함수 및 데이터베이스 수준 권한 부여”)와 한 DB 서버에서 동일한 서버 또는 다른 서버로의 데이터를 포함하여 DB를 복사하는 가 DB 서버. 실제로 복사되는 내용을 사용자 정의 할 수있는 옵션이 많이 있습니다.
따라서 OP의 질문에 대답하려면 다음을 수행하십시오.
mysqldbcopy \
--source=root:your_password@localhost \
--destination=root:your_password@localhost \
sitedb1:sitedb2
답변
mysqladmin create DB_name -u DB_user --password=DB_pass && \
mysqldump -u DB_user --password=DB_pass DB_name | \
mysql -u DB_user --password=DB_pass -h DB_host DB_name
답변
터미널 / 명령 프롬프트에서 명령을 실행해야합니다.
mysqldump -u <user name> -p <pwd> <original db> | mysql -u <user name> <pwd> <new db>
예 : mysqldump -u root test_db1 | mysql -u root test_db2
test_db1을 test_db2에 복사하고 ‘root’@ ‘localhost’에 대한 액세스 권한을 부여합니다.
답변
가장 쉽고 쉬운 방법은 터미널에 이러한 명령을 입력하고 루트 사용자에게 권한을 설정하는 것입니다. 나를 위해 작동합니다 ..!
:~$> mysqldump -u root -p db1 > dump.sql
:~$> mysqladmin -u root -p create db2
:~$> mysql -u root -p db2 < dump.sql
답변
의사 코드로 사용할 수 있습니다.
FOREACH tbl IN db_a:
CREATE TABLE db_b.tbl LIKE db_a.tbl;
INSERT INTO db_b.tbl SELECT * FROM db_a.tbl;
CREATE TABLE … SELECT … 구문을 사용하지 않는 이유는 인덱스를 보존하기 위해서입니다. 물론 이것은 테이블 만 복사합니다. 뷰와 절차는 동일한 방식으로 수행 될 수 있지만 복사되지는 않습니다.
CREATE TABLE을 참조하십시오 .
답변
먼저 중복 데이터베이스를 작성하십시오.
CREATE DATABASE duplicateddb;
권한 등이 모두 있는지 확인하고 다음을 수행하십시오.
mysqldump -u admin -p originaldb | mysql -u backup -p password duplicateddb;