> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/on-premises/ko/maintenance/updating-mongodb.md).

# MongoDB 업데이트

{% hint style="info" %}
Server CE/Server Pro의 새 릴리스는 지원되는 MongoDB 버전의 변경 사항을 해당 [릴리스 노트](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### MongoDB를 업데이트해야 하나요?

업데이트해야 합니다 **오직** Server CE/Server Pro 인스턴스를 업그레이드할 계획이라면 MongoDB 버전 업데이트를 고려해야 합니다.

현재(또는 목표) 버전에 권장되는 것보다 더 최신의 MongoDB 버전을 사용 중이라면 아무런 변경도 할 필요가 없습니다.

{% hint style="warning" %}
MongoDB 버전을 절대 다운그레이드해서는 안 됩니다.
{% endhint %}

현재 MongoDB 버전과 관련이 있을 수 있다고 생각되는 특정 문제가 발생하면 자유롭게 [이슈를 제기하세요](https://github.com/overleaf/overleaf/issues) Server CE 사용자라면 이슈를 제기하고, Server Pro 사용자라면 Overleaf 지원팀에 문의하세요.

### MongoDB 버전 확인

열면 `mongo` 쉘에 현재 버전이 즉시 표시됩니다.

Overleaf Toolkit 사용자:

```bash
bin/docker-compose exec mongo mongod --version
db version v5.0.24
빌드 정보: {
    "version": "5.0.24",
    "gitVersion": "f034f0c51b3dffef4b8c9452d77ede9888f28f66",
    "openSSLVersion": "OpenSSL 1.1.1f  31 Mar 2020",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2004",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}
```

Docker Compose 사용자:

```bash
docker compose exec mongo mongod --version
db version v5.0.24
빌드 정보: {
    "version": "5.0.24",
    "gitVersion": "f034f0c51b3dffef4b8c9452d77ede9888f28f66",
    "openSSLVersion": "OpenSSL 1.1.1f  31 Mar 2020",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2004",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

```

### 업데이트 절차

Server CE/Server Pro 인스턴스를 업그레이드하는 동안 MongoDB 버전을 업데이트하는 절차는 다음과 같습니다:

1. 업그레이드할 Server CE/Server Pro 버전을 결정합니다.
2. 해당 Overleaf Server CE/Server Pro 릴리스에서 권장하는 MongoDB 버전을 찾습니다.
3. 지침에 따라 MongoDB를 목표 버전으로 업그레이드합니다.
4. Server CE/Server Pro 이미지 버전을 업그레이드하고 인스턴스를 다시 시작합니다.

권장 사항은 항상 업그레이드하는 것입니다 **Server CE/Server Pro** 항상 지원이 보장되는 사용 가능한 최신 버전으로 업그레이드하는 것입니다(Server Pro 사용자만 해당).

{% hint style="danger" %}
Server CE/Pro를 업그레이드할 때는 배포된 주 버전의 최신 릴리스로 업그레이드한 다음 **이전** 최신 릴리스로 업그레이드하기 전에 **다음** 주 버전입니다. 배포가 최신보다 두 개 이상의 주 버전 뒤처져 있다면 단계별 다중 업그레이드를 수행해야 합니다.

예를 들어 3.5.10을 실행 중이라면 3.5.13으로 업그레이드 -> 전체 프로젝트 기록 마이그레이션 수행 -> 4.2.9 -> 5.5.4 순으로 진행해야 합니다.

업데이트해야 합니다 **절대** 주 버전(3.5.10 -> 5.5.4)을 건너뛰지 마세요. Toolkit을 사용 중이고 최신보다 두 개 이상의 주 버전 뒤처져 있다면 **하지** 마세요 `bin/upgrade` 스크립트를 사용하면 안 됩니다. 수동 다중 단계 업그레이드를 수행해야 하기 때문입니다.
{% endhint %}

{% hint style="warning" %}
반드시 [일관된 백업](/on-premises/ko/maintenance/data-and-backups.md#performing-a-consistent-backup) **이전** 을 각 주 버전 업그레이드마다 수행하여, 필요할 경우 되돌릴 수 있도록 해야 합니다.
{% endhint %}

#### 버전 지원 정보

이전 버전으로 가기로 결정한 경우, 이 표는 이전 Server CE/Server Pro 릴리스에 권장되는 MongoDB 버전을 보여줍니다. 하지만 **절대** MongoDB 버전을 다운그레이드해서는 안 됩니다.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">MongoDB 버전</th><th align="center">최소 기능 호환성 버전</th><th align="center">Node.js 드라이버가 지원하는 최대 버전</th></tr></thead><tbody><tr><td>2.0.x</td><td align="center">3.4</td><td align="center">-</td><td align="center">-</td></tr><tr><td>2.1.x ~ 2.4.x</td><td align="center">3.6</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=2.5.0</td><td align="center">4.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=3.1.0</td><td align="center">4.2</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=3.2.0</td><td align="center">4.4</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=4.2.0</td><td align="center">5.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=5.1.0</td><td align="center">6.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=5.3.1</td><td align="center">6.0</td><td align="center">5.0</td><td align="center">8.0</td></tr><tr><td>>=5.5.0</td><td align="center">6.0</td><td align="center">6.0</td><td align="center">8.0</td></tr><tr><td>6.0.0</td><td align="center">8.0</td><td align="center">8.0</td><td align="center">8.0</td></tr></tbody></table>

{% hint style="danger" %}
위의 최소 기능 호환성 버전은 표시된 Overleaf 버전과 함께 사용하도록 권장되는 해당 MongoDB 버전을 기준으로 합니다. 더 높은 버전을 사용할 계획이라면 MongoDB 자체의 최소 요구 사항이 적용됩니다.
{% endhint %}

MongoDB와 함께 사용할 수 있는 MongoDB Node.js 드라이버의 지원 버전을 명시한 호환성 표를 볼 수 있습니다 [여기서](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

각 MongoDB 버전의 지원 종료 상태를 볼 수 있습니다 [여기서](https://endoflife.date/mongodb).

#### MongoDB 업그레이드

MongoDB는 **단계별 업그레이드**. 즉, 예를 들어 바로 `4.0` 에서 `5.0`. 먼저 업데이트해야 합니다 `4.2` 에서 `4.4`, 그런 다음 `5.0`.

{% hint style="info" %}
MongoDB는 안정 버전에 짝수를 사용합니다.
{% endhint %}

#### **Docker 외부에서 MongoDB를 실행할 때의 업데이트 지침**

MongoDB를 업그레이드할 때 mongodb.com의 업데이트 지침 링크는 다음과 같습니다.

* [MongoDB 릴리스 노트 - MongoDB 업그레이드: `4.2` 에서 `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [MongoDB 릴리스 노트 - MongoDB 업그레이드: `4.4` 에서 `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [MongoDB 릴리스 노트 - MongoDB 업그레이드: `5.0` 에서 `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [MongoDB 릴리스 노트 - MongoDB 업그레이드: `6.0` 에서 `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [MongoDB 릴리스 노트 - MongoDB 업그레이드: `7.0` 에서 `8.0`](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)

{% hint style="info" %}
에 대한 지침 `5.0` 및 그 이상 버전의 지침은 독립 실행형이 아니라 복제 세트 설치를 가리킵니다. Server Pro/CE 4.0.1+는 트랜잭션을 사용하므로 MongoDB를 복제 세트로 실행해야 합니다.
{% endhint %}

{% hint style="warning" %}
MongoDB 3.2\~4.2 문서는 이제 다음을 통해 사용할 수 있습니다 <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**기본 지침**

대부분의 경우 업데이트하려면 실제로 mongo 버전을 업데이트하기 전에 호환성 플래그를 설정해야 합니다. 단계는 다음과 같습니다:

1. MongoDB 릴리스 노트에 설명된 대로 호환성 플래그를 설정합니다(아래 예시 참조).
2. 그런 다음 mongo 이미지를 업데이트합니다:
   1. **Toolkit 사용자** 업데이트 `MONGO_VERSION`, 예: `MONGO_VERSION=6.0`
   2. **Docker Compose 사용자** 의 버전을 업데이트합니다 `mongo` 이미지 태그,\
      예: `services -> mongo -> image: mongo:6.0`;

**예: MongoDB 업그레이드: `5.0` 에서 `6.0`**

먼저 MongoDB가 실행 중인지 확인해 봅시다 `6.0`:

Overleaf Toolkit 사용자:

```bash
bin/docker-compose exec mongo mongod --version
# db version v5.0.24
```

Docker Compose 사용자:

```bash
docker compose exec mongo mongod --version
# db version v5.0.24
```

에 따르면 [업그레이드 지침](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), 필요한 유일한 조건은 `featureCompatibilityVersion` 를 `5.0`. MongoDB 셸을 열고 아래 명령을 실행하여 이를 수행합니다:

Overleaf Toolkit 사용자:

```bash
bin/mongo
# MongoDB shell version v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

{% hint style="info" %}
Docker Compose 사용자는 다음을 실행할 수 있습니다 `docker compose exec mongo mongosh` 쉘을 열어 Toolkit 사용자와 동일한 명령을 실행할 수 있습니다.
{% endhint %}

Overleaf Toolkit 사용자:

그런 다음 다음 명령을 사용하여 Server CE/Server Pro와 MongoDB 인스턴스를 중지합니다 `bin/stop` 명령으로 설정한 다음 `MONGO_VERSION=6.0` 의 `config/overleaf.rc`, 그리고 `mongo` 서비스를 다음 명령으로 다시 시작합니다 `bin/up mongo`)로 업데이트가 문제없이 완료되었는지 확인합니다.

마지막으로 Server CE/Server Pro 이미지 버전을 목표 버전으로 업데이트하고 다음 명령을 사용하여 모든 서비스를 다시 생성합니다 `bin/up -d` 명령.

Docker Compose 사용자:

그런 다음 다음 명령을 사용하여 Server CE/Server Pro와 MongoDB 인스턴스를 중지합니다 `docker compose stop` 명령으로 업데이트하고 [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) 파일을 사용하도록 `image: mongo:6.0`, 그리고 `mongo` 서비스를 다음 명령으로 `docker compose up mongo` 명령으로 업데이트가 문제없이 완료되었는지 확인합니다.

마지막으로 Server CE/Server Pro 이미지 버전을 목표 버전으로 업데이트하고 다음 명령을 사용하여 모든 서비스를 다시 생성합니다 `docker compose up` 명령.

**예: MongoDB 업그레이드: `6.0` 에서 `7.0` (Toolkit 사용자)**

먼저 MongoDB가 실행 중인지 확인합니다 `6.0` 다음을 사용하여 `mongod --version` 위 명령을 사용합니다.

에 따르면 [업그레이드 지침](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), 필요한 유일한 조건은 `featureCompatibilityVersion` 를 `6.0`. MongoDB 셸을 열고 다음 명령을 실행하여 이를 수행합니다 `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Overleaf Toolkit 사용자:

```bash
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

그런 다음 다음 명령을 사용하여 Server CE/Server Pro와 MongoDB 인스턴스를 중지합니다 `bin/stop` 명령으로 설정한 다음 `MONGO_VERSION=7.0` 의 `config/overleaf.rc`, 그리고 `mongo` 서비스를 다음 명령으로 다시 시작합니다 `bin/up mongo`)로 업데이트가 문제없이 완료되었는지 확인합니다.

마지막으로 Server CE/Server Pro 이미지 버전을 목표 버전으로 업데이트하고 다음 명령을 사용하여 모든 서비스를 다시 생성합니다 `bin/up -d` 명령.

**예: MongoDB 업그레이드: `7.0` 에서 `8.0` (Toolkit 사용자)**

먼저 MongoDB가 실행 중인지 확인합니다 `7.0` 다음을 사용하여 `mongod --version` 위 명령을 사용합니다.

에 따르면 [업그레이드 지침](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), 필요한 유일한 조건은 `featureCompatibilityVersion` 를 `7.0`. MongoDB 셸을 열고 다음 명령을 실행하여 이를 수행합니다 `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. 이제 추가로 `confirm: true` 매개변수가 필요합니다.

```bash
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

그런 다음 다음 명령을 사용하여 Server CE/Server Pro와 MongoDB 인스턴스를 중지합니다 `bin/stop` 명령으로 설정한 다음 `MONGO_VERSION=8.0` 의 `config/overleaf.rc`, 그리고 `mongo` 서비스를 다음 명령으로 다시 시작합니다 `bin/up mongo`)로 업데이트가 문제없이 완료되었는지 확인합니다.

마지막으로 Server CE/Server Pro 이미지 버전을 목표 버전으로 업데이트하고 다음 명령을 사용하여 모든 서비스를 다시 생성합니다 `bin/up -d` 명령.

#### Docker Compose 사용자를 위한 동일한 명령

Docker Compose 사용자의 경우 해당 명령은 다음과 같습니다:

* `docker compose exec mongo mongod --version` mongo 버전을 표시하려면
* `docker compose exec mongo mongosh` 관리 명령을 위한 mongo 셸을 시작하려면
* `docker compose stop` 서버를 중지하는 명령
* 다음을 편집하여 [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) 파일을 사용하도록 `image: mongo:6.0` mongo 버전을 업그레이드합니다
* `docker compose up mongo` mongo 서비스를 다시 시작하고 업데이트가 문제없이 완료되었는지 확인합니다
* 다음을 편집하여 [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) 파일을 사용하도록 `image: sharelatex:VERSION` 이미지 버전을 업그레이드하려면
* `docker compose up` 모든 서비스를 다시 생성합니다.

### 사용자 지정 역할 만들기

버전 `5.5.1`, MongoDB의 기능 호환성 버전을 확인하는 시작 시 검사를 도입했습니다. MongoDB 데이터베이스에서 인증(예: 기본 인증)을 사용하는 경우 `sharelatex` 컨테이너가 시작되지 않고 "*admin에서 명령을 실행할 권한이 없음*" 권한 오류가 표시될 수 있습니다.

이 문제를 해결하려면 아래 지침에 따라 MongoDB에서 새 역할을 만들어 데이터베이스 접근에 사용하는 사용자 계정에 할당하거나, 다음을 설정할 수 있습니다 `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` 검사가 실패해도 배포 시작을 막지 않도록 허용합니다.

{% hint style="success" %}
이 새 역할은 **오직** 클러스터 전체 MongoDB 서버 매개변수를 읽을 수 있는 권한을 부여하며, 모니터링 목적으로 재사용할 수 있습니다,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Toolkit 사용자
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# 다음을 사용하여 "admin" 데이터베이스로 전환
overleaf [direct: primary] sharelatex> use admin
switched to db admin
overleaf [direct: primary] admin> 

# "getParamter"를 사용할 권한이 있는 새 역할을 만듭니다. 아래 함수를 쉘에 복사해 붙여넣고 Enter 키를 누르세요

db.createRole(
  {
    role: "clusterParameterReader",
    privileges: [
      {
        resource: { cluster: true },
        actions: ["getParameter"]    
      }
    ],
    roles: [] 
  }
);

# 다시 "sharelatex" 데이터베이스로 전환 
use sharelatex
switched to db sharelatex
overleaf [direct: primary] sharelatex> 

# 아래 함수를 쉘에 복사해 붙여넣고 Enter 키를 눌러 데이터베이스 사용자에게 새 "clusterParameterReader" 역할을 할당하세요 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# exit를 입력한 다음 Enter를 눌러 MongoDB 셸을 종료합니다
# 배포 스택을 시작하려면 bin/up -d를 실행합니다
$ bin/up -d
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/on-premises/ko/maintenance/updating-mongodb.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
