> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-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
Build Info: {
    "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
Build Info: {
    "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 사용자:

그다음 `bin/stop` 명령을 사용해 Server CE/Server Pro 및 MongoDB 인스턴스를 중지하고, `MONGO_VERSION=6.0` 를 `config/overleaf.rc`를 설정한 다음 `mongo` 서비스를 `bin/up mongo`)를 사용해 다시 시작하여 업데이트가 순조롭게 완료되었는지 확인합니다.

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

Docker Compose 사용자:

그다음 `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
```

그다음 `bin/stop` 명령을 사용해 Server CE/Server Pro 및 MongoDB 인스턴스를 중지하고, `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
```

그다음 `bin/stop` 명령을 사용해 Server CE/Server Pro 및 MongoDB 인스턴스를 중지하고, `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` 컨테이너가 시작되지 않을 수 있으며 "*not authorized on admin to execute command*" 권한 오류가 표시됩니다.

이를 해결하려면 아래 지침에 따라 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
db admin으로 전환되었습니다
overleaf [direct: primary] admin> 

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

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

# "sharelatex" 데이터베이스로 다시 전환합니다 
use sharelatex
db sharelatex로 전환되었습니다
overleaf [direct: primary] sharelatex> 

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

# MongoDB 쉘을 종료하려면 exit를 입력한 다음 Return을 누르세요
# 배포 스택을 시작하려면 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://overleaf-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.
