이 페이지에서는 버전 15.5.2 이하에서 최신 버전의 AlloyDB Omni으로 이전하는 방법을 설명합니다.
AlloyDB Omni 15.5.4부터는 일반적인 패키지 관리 도구로 AlloyDB Omni를 제어할 수 있습니다.
기존에 AlloyDB Omni를 설치한 경우 이 페이지의 안내에 따라 새 단일 이미지 설치로 이전하세요.
기본 요건
AlloyDB Omni 최신 버전으로 업그레이드를 시작하려면 아직 완료하지 않은 경우 다음 기본 요건을 완료하세요.
AlloyDB Omni 15.5.2로 업그레이드
AlloyDB Omni CLI를 지원하는 최신 AlloyDB Omni 버전은 15.5.2입니다. AlloyDB Omni 버전을 확인하려면 다음 명령어를 실행합니다.
sudo alloydb version
결과는 다음과 유사합니다.
AlloyDB Omni CLI version: 1.6
AlloyDB Omni database server version: 15.5.2
출력에 15.5.2보다 이전 버전의 데이터베이스가 표시되면 다음 명령어를 실행하여 업그레이드합니다.
sudo alloydb database-server upgrade
기존 설치에 관한 정보 수집
다음 명령어를 실행합니다.
cat /var/alloydb/config/dataplane.conf
cat
명령어의 출력에서 다음 변수의 값을 참고로 기록합니다.DATADIR_PATH
: 예:/var/alloydb/main
ENABLE_ALLOYDB_AI
: 예:FALSE
PGPORT
: 예:5432
INSTANCE_TYPE
: 예:PRIMARY/READ_REPLICA
postgres_ann
확장 프로그램으로 만든 ScaNN 색인 삭제
postgres_ann
확장 프로그램의 이름이 alloyd_scann
로 변경되었습니다. postgres_ann
확장 프로그램을 설치하고 이 확장 프로그램을 사용하여 ScaNN
색인을 만든 경우 업그레이드를 실행하기 전에 모든 ScaNN
색인을 삭제하고 확장 프로그램을 제거해야 합니다.
postgres_ann
확장자가 변경되어 데이터베이스에 미치는 영향을 처리하려면 다음 단계를 완료하세요.
- AlloyDB Omni를 실행하고 연결합니다.
ScaNN
색인을 사용하는 모든 테이블을 식별합니다.\c DATABASE_NAME select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
DATABASE_NAME
을 쿼리를 실행할 데이터베이스의 이름으로 바꿉니다.pg_dump
와 같은 유틸리티를 사용하여 색인 정의와 매개변수를 덤프 DDL로 저장하여 나중에ScaNN
색인을 다시 만듭니다.pg_dump -st TABLE_NAME DATABASE_NAME
다음을 바꿉니다.
DATABASE_NAME
: 데이터베이스의 이름TABLE_NAME
: 테이블의 이름입니다.
postgres_ann
색인을 사용하여 만든ScaNN
색인을 삭제합니다.DROP INDEX INDEX_NAME;
INDEX_NAME
을 쿼리를 실행할 데이터베이스의 이름으로 바꿉니다.데이터베이스에
ScaNN
색인이 포함되어 있지 않은지 확인합니다. 다음 SQL 쿼리를 사용하여 삭제를 확인합니다. 다음 SQL은 빈 결과 집합을 반환해야 합니다.\c DATABASE_NAME select schemaname, relname, indexrelname, indextype, indexconfig, indexsize, indexscan FROM pg_stat_ann_indexes;
다음 단계에 따라
postgres_ann
확장 프로그램을 배치합니다.- 데이터베이스에
postgres_ann
확장 프로그램이 설치되어 있는지 확인합니다.
select * from pg_extension;
postgres_ann
확장 프로그램을 배치합니다.
DROP EXTENSION postgres_ann CASCADE;
postgres_ann
확장 프로그램이 더 이상 데이터베이스에 설치되어 있지 않은지 확인합니다.
select * from pg_extension;
- 데이터베이스에
인플레이스(In-Place) 업그레이드 수행
기존 데이터베이스를 중지합니다.
sudo alloydb database-server stop
새 단일 이미지 AlloyDB Omni를 시작하여 이전의 기존 데이터 디렉터리를 마운트합니다.
docker run --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=PASSWORD \ -e PGDATA=/var/lib/postgresql/data \ -v /var/alloydb/main/data:/var/lib/postgresql/data \ -v /dev/shm:/dev/shm \ -p PGPORT:5432 \ --network=host \ --ulimit=nice=-20:-20 \ --ulimit=core=-1:-1 \ --log-driver=journald \ -d google/alloydbomni:15.5.5
다음을 바꿉니다.
CONTAINER_NAME
: 호스트 머신의 컨테이너 레지스트리에 이 새 AlloyDB Omni 컨테이너를 할당할 이름입니다(예:my-omni
).PASSWORD
: 새 컨테이너가 생성된 후 새 컨테이너의postgres
사용자에게 할당된 비밀번호입니다.PGPORT
: AlloyDB Omni가 실행되는 포트의 IP 주소입니다. 이 값은 기존 설치에 대한 정보 수집의 2단계에서 기록한 값입니다.
docker run
의 인수는 이전 버전의 AlloyDB Omni에서 사용된 인수이지만 추가로 맞춤설정할 수 있습니다. 자세한 내용은 AlloyDB Omni 설치 맞춤설정을 참고하세요.데이터베이스 인스턴스 유형이
PRIMARY
인 경우 다음 명령어를 실행하여 다음 사용자를 만듭니다. 현재는 사용되지 않지만 향후 확장을 위해 예약된 사용자 이름입니다.for name in alloydbagent alloydbexport alloydbiamgroupuser alloydbiamuser alloydbimportexport alloydbobservability alloydbsqllogical alloydbsuperuser; do echo docker exec -it CONTAINER_NAME psql -h localhost -U postgres alloydbadmin \ -c "CREATE ROLE ${name} NOLOGIN;" \ -c "CREATE TABLE ${name}_table();" \ -c "ALTER TABLE ${name}_table OWNER TO ${name};" done
ENABLE_ALLOYDB_AI
가TRUE
로 설정된 경우 AlloyDB AI로 AlloyDB Omni 설치의 안내에 따라 AlloyDB AI를 설정하세요.데이터베이스에 연결하여 데이터가 변경되지 않았는지 확인합니다.
docker exec -it CONTAINER_NAME psql -h localhost -U postgres
AlloyDB Omni CLI를 제거합니다.
sudo alloydb database-server uninstall
AlloyDB Omni CLI를 제거해도 AlloyDB Omni에 저장된 데이터에는 영향을 미치지 않습니다.
alloydb_scann
확장 프로그램을 사용하여 ScaNN 색인 다시 만들기
AlloyDB Omni를 업그레이드하면 alloydb_scann
확장 프로그램도 설치됩니다. 업그레이드 전에 postgres_ann
확장자로 생성된 ScaNN 색인 삭제 섹션에서 삭제한 ScaNN 색인을 다시 만들려면 다음 단계를 완료하세요.
다음 단계에 따라
alloydb_scann
확장 프로그램을 만듭니다.alloydb_scann
확장 프로그램을 만들려면 다음 쿼리를 실행합니다.
create extension alloydb_scann cascade;
alloydb_scann
확장 프로그램이 성공적으로 생성되었는지 확인합니다.
select * from pg_extension;
테이블의
ScaNN
색인을 다시 만든 다음 이전pg_dump
DDL 색인 정의를 복원합니다.- 테이블에
ScaNN
색인을 만듭니다.
CREATE INDEX INDEX_NAME ON TABLE_NAME USING scann (VECTOR_COLUMN DISTANCE) WITH (num_leaves = NUM_LEAVES_VALUE);
다음을 바꿉니다.
- INDEX_NAME: 색인 이름입니다.
- TABLE_NAME: 테이블의 이름입니다.
- VECTOR_COLUMN: 벡터 데이터를 저장하는 열의 이름입니다.
- DISTANCE: 이 색인과 함께 사용할 거리 함수입니다.
- NUM_LEAVES_VALUE: 색인에 적용할 파티션 수입니다.
- 색인이 생성되었는지 확인합니다.
\d TABLE_NAME
- 권장: 색인 데이터를 백업합니다. 데이터베이스 및 색인의 백업을 만드는 것이 좋습니다.
- 테이블에