
나는 데이터베이스 백업 루틴을 다시 실행하는 작업을 해왔고 mysqldump가 스키마의 크기에 비해 더 이상 잘라내지 않기 때문에 mariabackup을 조사했습니다. 백업해야 하는 스키마가 여러 개 있습니다. 모두 크기가 다양하고 백업 빈도도 다양합니다. 일부는 6시간 간격으로 백업해야 하고 다른 스키마는 하루 간격으로 백업해야 합니다. 게다가 우리 데이터베이스는 마스터-슬레이브 구성으로 실행되는 두 개의 데이터베이스 서버로 구성됩니다.
시작하려면 스키마 중 하나에 대해 다음 명령을 실행했습니다.
mariabackup --backup --user root --password <pass> --databases db1
이는 MariaDB 자체에서 사용하는 일부 파일(aria_log, ib_buffer_pool, ib_logfile, ibdata 등)과 함께 'db1' 스키마의 데이터 파일 복사본을 생성했습니다. 이는 완벽하게 작동합니다. 각 스키마에 대해 별도의 백업을 생성할 수 있습니다.
그러나 복원은 또 다른 이야기인 것 같습니다. 백업을 '--prepare'하고 mariabackup --copy-back 명령을 실행한 후 데이터 디렉터리가 비어 있어야 한다고 표시됩니다. 별도의 백업이 있는 경우 해당 스키마를 하나의 데이터베이스(또는 하나의 MariaDB 인스턴스)에서 복원할 수 있습니까? 더 명확하게 말하면 'db1', 'db2' 및 'db3' 스키마의 백업을 만든 경우 동일한 데이터베이스 인스턴스에서 모두 복원할 수 없는 것 같습니다. 이해가 안 가?
답변1
귀하와 같은 부분 백업은 --prepare --export로만 복원할 수 있습니다. .ibd 파일만으로 일부 .cfg 파일을 생성합니다. "복원"은 대상 시스템의 모든 테이블에 대해 "ALTER TABLE .. DISCARD TABLESPACE", "ALTER TABLE IMPORT TABLESPACE"를 의미합니다. 안타깝게도 100% 자동화된 것은 아닙니다. 대상 시스템의 테이블스페이스를 삭제하려면 먼저 동일한 "CREATE TABLE"을 사용하여 대상 시스템에 테이블스페이스를 생성해야 하기 때문입니다.