mariadb에서 연결된 "데이터베이스"를 만드는 방법이 있습니까?
같은 서버에서 다른 데이터베이스에서 이 프로세스를 수행했습니다.
- dev 데이터베이스의 테이블에 데이터 삽입
- 데이터 확인
- 데이터가 정상이면 prd 데이터베이스의 동일한 테이블에 삽입합니다.
하지만 이제는 그 데이터베이스들을 개발 서버, 생산 서버와 같은 다른 서버로 분리했습니다.기존 쿼리를 너무 많이 편집하고 싶지 않아서 프로덕션 서버에 연결하는 페더레이션 테이블을 만들었습니다. 하지만 프로덕션 테이블을 변경할 때마다...연합 테이블을 다시 만들어야 했습니다.
원래 테이블을 변경할 때마다 페더레이션 테이블을 다시 만들지 않는 방법이 있습니까?
연결된 데이터베이스를 만들 수 있습니까?
이 답변은 페더레이션 X 플러그인을 대신 사용하거나 페더레이션 X 플러그인을 사용할 수 있다고 가정하는 것입니다.
다음을 시도해야 합니다.
uninstall soname 'ha_federated.so' ;
install soname 'ha_federatedx.so' ;
이 경우 engine ederatedx(플러그인 이름에만 사용되며 DDL 문에서 엔진 이름은 계속 연합됨)를 사용할 수 있습니다.
- 다음과 같이 서버를 작성합니다.
create server 'server_one' foreign data wrapper 'mysql' options
(HOST '192.168.1.123',
DATABASE 'first_db',
USER 'patg',
PASSWORD '',
PORT 3306,
SOCKET '',
OWNER 'root');
물론 원격 서버 IP, 사용자, 암호, 데이터베이스 등을 사용하여 값을 변경해야 합니다.
나중에 원격 서버 속성이 변경되면 서버를 변경하기만 하면 됩니다(더 이상 변경 테이블이 필요하지 않음).
- 그런 다음 다음 연합 엔진과 작성한 서버를 사용하여 로컬 테이블을 만듭니다.
create table test_fed engine = federated connection = 'server_one' ;
이렇게 로컬 테이블을 만들면 페더레이션x 검색 모드가 활성화되어 로컬 테이블 구조가 원격 테이블 구조의 정확한 복사본이 됩니다.
원격 테이블 구조가 변경되면 어떻게 될까요? 불행히도 자동이 아닙니다(페더레이션x 검색 모드는 로컬 테이블이 생성될 때 한 번 활성화되고 최신 상태로 유지되지 않습니다). 그러나 로컬 테이블을 동일한 방법으로 다시 만들어야 하므로 매우 쉽습니다.
create or replace table test_fed engine = federated connection = 'server_one' ;
그리고 당신은 끝났어요!
이 로컬 테이블 선언 방법의 단점은 로컬 테이블의 이름이 원격 테이블의 이름과 정확히 같아야 한다는 것입니다.
로컬 테이블과 원격 테이블에 다른 이름이 필요한 경우 테이블 만들기에 사용된 "이전" 연결 구문을 사용할 수 있습니다(<remote_db_name>/<remote_table_name>으로 끝남).
언급URL : https://stackoverflow.com/questions/71367811/is-there-a-way-to-create-a-linked-database-in-mariadb
'programing' 카테고리의 다른 글
div를 클릭하여 기본 요소로 이동합니다. (0) | 2023.06.11 |
---|---|
Oracle SQL:두 숫자 사이의 모든 정수 가져오기 (0) | 2023.06.11 |
"예외가 호출 대상에 의해 던져졌습니다." 오류(mscorlib) (0) | 2023.06.11 |
힙의 구조체 구성원을 초기화하는 방법 (0) | 2023.06.11 |
파이썬에서 설치된 모든 패키지와 해당 버전을 나열하는 방법은 무엇입니까? (0) | 2023.06.11 |