[mysql] 동일한 MySql 인스턴스에서 MySQL 데이터베이스 복제

현재 데이터베이스 sitedb1sitedb2동일한 mysql 데이터베이스 인스턴스에 복사하는 스크립트를 작성하고 싶습니다 . sitedb1을 SQL 스크립트에 덤프 할 수 있다는 것을 알고 있습니다.

mysqldump -u root -p sitedb1 >~/db_name.sql

그런 다음로 가져옵니다 sitedb2. 첫 번째 데이터베이스를 SQL 파일로 덤프하지 않고 더 쉬운 방법이 있습니까?



답변

매뉴얼에 데이터베이스 복사에 나와있는 것처럼 덤프를 mysql 클라이언트에 직접 파이프 할 수 있습니다.

mysqldump db_name | mysql new_db_name

MyISAM을 사용하는 경우 파일을 복사 할 있지만 권장하지는 않습니다. 약간 피하다.

다양한 좋은 다른 답변에서 통합

mysqldumpmysql명령 모두 다음 과 같이 연결 세부 정보를 설정하는 옵션을 허용합니다.

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;