DB 를 사용하다보면 테이블, 데이터 그대로 복제해서 그상태로 테스트 DB가 필요할때가 있었습니다.
이에 mysql에서 테이블 그대로, 데이터 그대로로 schema를 추가해보았습니다.
* 리눅스 접속
1. 접속해서 schema1의 테이블, 데이터 dump 하기
$ mysqldump --single-transaction -uuser -ppw schema1 > dump.sql
mysqldump 명령어
$ mysqldump --help
-u, --user=name User for login if not current user.
-p, --password[=name]
Password to use when connecting to server. If password is
not given it's solicited on the tty
--single-transaction
Creates a consistent snapshot by dumping all tables in a
single transaction. Works ONLY for tables stored in
storage engines which support multiversioning (currently
only InnoDB does); the dump is NOT guaranteed to be
consistent for other storage engines. While a
--single-transaction dump is in process, to ensure a
valid dump file (correct table contents and binary log
position), no other connection should use the following
statements: ALTER TABLE, DROP TABLE, RENAME TABLE,
TRUNCATE TABLE, as consistent snapshot is not isolated
from them. Option automatically turns off --lock-tables.
single transaction을 사용한 이유는 다른 개발자들이 붙어있는 개발 서버에 영향을 끼치면 안되기 때문에
사용하였다. 이때 다른사람들이 select, insert, update, delete하는 것들은 dump 뜨는데 영향을 끼치지 않습니다.
다만 innoDB에서만 사용가능하다는 점.
위 명령어를 실행하고 나면 dump.sql 파일이 생성되고 해당 파일을 띄워보면 create table명령어와 data insert 하는 쿼리들이 들어있는것을 확인 할 수있습니다.
dump.sql이 다 생성 되었다면
2. MariaDB root 계정으로 접속
$ mysql -uroot -ppw
3. 추가할 스키마를 생성
MariaDB [(none)] > create database newschema;
4. 생성한 스키마 접속 권한 부여
MariaDB [(none)] > grant all privileges on newschema.* to 'schema1@%';
물론 newschema 계정으로 접속할 예정이면 해당 과정은 skip 해도 되지만
저는 원래 연결되어있던 계정에서 바로 접속 하고 싶어서 권한을 부여 해주었습니다.
그리고 exit 로 커맨드로 돌아옵니다.
5. 생성한 dump.sql 파일 newschema에 생성하기
$ mysql -uuser -ppw newschema < dump.sql
물론 현재 폴더에 dump.sql이 없다면 절대경로로 해주어도 됩니다.
위 과정을 모두 하고 난다음에는 테이블, 데이터가 잘 생성되고 잘 들어갔는지 확인
이렇게 하면 schema1에 만들어져있던 테이블, 데이터가 모두 복제되어 들어가게 됩니다.
-끝-
'개발일지' 카테고리의 다른 글
[mysql] 서버이전 중 mysql 테이블 나타나지 않는 문제 (0) | 2021.08.14 |
---|---|
[mysql] 오류 해결 ./mysql.server: line 264: kill (0) | 2021.08.14 |
[java] Date type별 yyyy-MM-DD 문제 (0) | 2021.02.01 |
[git] config 설정하기 (0) | 2021.01.27 |
[linux] 리눅스 명령어 급하게 찾을때 (0) | 2020.09.09 |