All Products
Search
Document Center

ApsaraDB for MongoDB:Pulihkan data instans ke database MongoDB yang dikelola sendiri menggunakan cadangan fisik

Last Updated:Jun 25, 2026

Topik ini menjelaskan cara memulihkan data dari instans ApsaraDB for MongoDB ke database MongoDB yang dikelola sendiri dalam mode standalone atau set replika menggunakan file cadangan fisik.

Prasyarat

  • Instans merupakan instans set replika.

  • Instans menggunakan disk lokal untuk menyimpan data.

  • Fitur Transparent Data Encryption (TDE) dinonaktifkan untuk instans tersebut. Untuk informasi selengkapnya, lihat Konfigurasikan TDE untuk sebuah instans.

  • Mesin penyimpanan instans adalah WiredTiger atau RocksDB. Jika mesin penyimpanan instans adalah TerarkDB, Anda dapat memulihkan data instans ke database yang dikelola sendiri menggunakan cadangan logis. Untuk informasi selengkapnya, lihat Pulihkan data instans ke database MongoDB yang dikelola sendiri menggunakan cadangan logis.

    Catatan
    • Anda dapat melihat mesin penyimpanan instans pada halaman Basic Information di konsol ApsaraDB for MongoDB.

    • Jika mesin penyimpanan instans adalah RocksDB, Anda harus mengompilasi dan menginstal aplikasi MongoDB yang dilengkapi mesin penyimpanan RocksDB.

Persyaratan versi database

Versi instans harus sesuai dengan versi database MongoDB yang dikelola sendiri. Tabel berikut mencantumkan pemetaan antara instans dan database MongoDB yang dikelola sendiri.

Instans ApsaraDB for MongoDB

Database MongoDB yang dikelola sendiri

MongoDB 3.2

MongoDB 3.2 atau 3.4

MongoDB 3.4

MongoDB 3.4

MongoDB 4.0

MongoDB 4.0

MongoDB 4.2

MongoDB 4.2

Format file cadangan fisik

Format file cadangan fisik

Ekstensi nama file

Deskripsi

TAR

.tar.gz

Instans ApsaraDB for MongoDB yang dibuat sebelum 26 Maret 2019 memiliki file cadangan fisik dalam format .tar.

xbstream

_qp.xb

Instans ApsaraDB for MongoDB yang dibuat pada atau setelah 26 Maret 2019 memiliki file cadangan fisik dalam format .xbstream.

Catatan

Format .xbstream hanya tersedia untuk Linux. Format .xbstream tidak tersedia untuk Windows karena Windows tidak mendukung tool Percona XtraBackup yang digunakan untuk mengekstrak file dalam format .xbstream.

Lingkungan

  • Prosedur berikut menggunakan instance Elastic Compute Service (ECS) yang dibuat dari image Ubuntu 16.04 64-bit. Untuk informasi selengkapnya tentang cara membuat instance ECS, lihat Buat instance menggunakan wizard.

  • MongoDB versi yang diperlukan telah diinstal pada instance ECS. Untuk informasi selengkapnya tentang cara menginstal MongoDB, lihat Add a MongoDB Driver.

  • Variabel lingkungan telah dikonfigurasi untuk database MongoDB yang dikelola sendiri pada instance ECS. Saat menjalankan perintah, Anda tidak perlu lagi memasukkan path file yang dapat dieksekusi. Untuk informasi selengkapnya, lihat Langkah 1: Konfigurasikan variabel lingkungan.

  • Direktori /test/mongo/data pada instance ECS digunakan untuk instans set replika.

  • Direktori /test/mongo/data1 dan /test/mongo/data2 pada instance ECS digunakan untuk node set replika pada database MongoDB yang dikelola sendiri.

Langkah 1: Konfigurasikan variabel lingkungan

Konfigurasikan variabel lingkungan untuk database MongoDB yang dikelola sendiri agar Anda tidak perlu memasukkan path file yang dapat dieksekusi saat menjalankan perintah. Sebelum melakukan langkah ini, pastikan MongoDB telah diinstal. Untuk informasi selengkapnya, kunjungi Install MongoDB.

Jika variabel lingkungan MongoDB telah dikonfigurasi, lewati langkah ini dan lanjutkan ke Langkah 2. Untuk informasi selengkapnya, lihat Langkah 2: Unduh dan ekstrak file cadangan fisik.

  1. Jalankan perintah berikut untuk membuka file profile di Linux:

    sudo vi /etc/profile
  2. Tekan tombol i untuk masuk ke mode edit, lalu masukkan kode berikut di baris terakhir:

    export PATH=$PATH:/<Path server MongoDB>/bin
    Catatan

    Dalam contoh ini, path server MongoDB adalah /test/mongo/bin. Gunakan path aktual saat mengonfigurasi variabel lingkungan.

    Contoh:

    export PATH=$PATH:/test/mongo/bin

  3. Tekan tombol Esc untuk keluar dari mode edit, lalu ketik :wq untuk menyimpan file dan keluar.

  4. Jalankan perintah berikut agar variabel lingkungan yang dikonfigurasi berlaku:

    source /etc/profile

Langkah 2: Unduh dan ekstrak file cadangan fisik

  1. Jalankan perintah berikut untuk mengunduh data cadangan fisik instans dari konsol ApsaraDB for MongoDB. Untuk informasi selengkapnya, lihat Unduh data cadangan fisik instans set replika.

    wget -c '<URL unduh eksternal file cadangan data>' -O <Nama kustom file cadangan data yang diunduh>.<Ekstensi nama file>
    Catatan

    Pastikan ekstensi nama file adalah .tar.gz atau _qp.xb.

  2. Jalankan perintah berikut untuk membuat direktori bernama data di direktori /test/mongo/, lalu pindahkan file cadangan fisik instans yang telah diunduh ke direktori /test/mongo/data/.

    mkdir -p /test/mongo/data && mv <Nama file cadangan fisik.Ekstensi> /test/mongo/data
  3. Ekstrak file cadangan fisik.

    • Jika nama file cadangan fisik memiliki ekstensi .tar.gz, seperti hins20190412.tar.gz, jalankan perintah berikut untuk mengekstrak file tersebut:

      cd /test/mongo/data/ && tar xzvf hins20190412.tar.gz 
    • Jika nama file cadangan fisik memiliki ekstensi _qp.xb, seperti hins20190412_qp.xb, lakukan operasi berikut untuk mengekstrak file tersebut:

      1. Instal tool Percona XtraBackup dan qpress. Untuk informasi selengkapnya, kunjungi Installing Percona XtraBackup on Debian and Ubuntu.

      2. Ekstrak file cadangan fisik. Dalam contoh ini, nama file adalah hins20190412_qp.xb.

        # Masuk ke direktori tempat file berada.
        cd /test/mongo/data/
        # Ekstrak paket.
        cat hins20190412_qp.xb | xbstream -x -v
        # Ekstrak file cadangan fisik.
        innobackupex --decompress --remove-original /test/mongo/data

Langkah 3: Pulihkan data ke database MongoDB yang dikelola sendiri dalam mode standalone

  1. Jalankan perintah berikut untuk membuat file konfigurasi bernama mongod.conf di direktori /test/mongo:

    touch /test/mongo/mongod.conf
  2. Di command line, ketik vi /test/mongo/mongod.conf untuk membuka file mongod.conf, lalu tekan tombol i untuk masuk ke mode edit.

    Anda dapat memilih templat konfigurasi berdasarkan mesin penyimpanan instans, lalu salin templat konfigurasi yang dipilih ke file konfigurasi mongod.conf.

    Catatan

    Dalam file ini, aktifkan startup standalone dan otorisasi.

    • WiredTiger

      systemLog:
          destination: file
          path: /test/mongo/mongod.log
          logAppend: true
      security:
          authorization: enabled
      storage:
          dbPath: /test/mongo/data
          directoryPerDB: true
      net:
          port: 27017
          unixDomainSocket:
              enabled: false
      processManagement:
          fork: true
          pidFilePath: /test/mongo/mongod.pid
      Catatan

      Secara default, ApsaraDB for MongoDB menggunakan mesin penyimpanan WiredTiger, dan opsi directoryPerDB diaktifkan. Oleh karena itu, opsi directoryPerDB diatur ke true dalam konfigurasi di atas.

    • RocksDB

      systemLog:
          destination: file
          path: /test/mongo/logs/mongod.log
          logAppend: true
      security:
          authorization: enabled
      storage:
          dbPath: /test/mongo/data
              engine: rocksdb
      net:
          port: 27017
          unixDomainSocket:
              enabled: false
      processManagement:
          fork: true
          pidFilePath: /test/mongo/mongod.pid
  3. Tekan tombol Esc untuk keluar dari mode edit, lalu ketik :wq untuk menyimpan file dan keluar.

  4. Gunakan file konfigurasi mongod.conf untuk menjalankan MongoDB.

    mongod -f /test/mongo/mongod.conf
  5. Setelah MongoDB dijalankan, jalankan perintah berikut untuk login ke database MongoDB yang dikelola sendiri dan masuk ke mongo shell:

    mongo --host 127.0.0.1 -u <username> -p <password> --authenticationDatabase admin
    • <username>: akun yang digunakan untuk login ke database MongoDB yang dikelola sendiri. Nilai default-nya adalah root.

    • <password>: password yang digunakan untuk login ke database MongoDB yang dikelola sendiri.

      Catatan

      Jika password berisi karakter khusus, Anda harus membungkus password tersebut dengan tanda petik tunggal (' '). Contoh: 'test123!@#'. Jika tidak, Anda mungkin gagal login ke database.

  6. Jalankan perintah show dbs di mongo shell untuk menampilkan semua database yang tersedia di server MongoDB. Dengan demikian, Anda dapat memeriksa apakah proses pemulihan berhasil.

  7. Jalankan perintah exit di mongo shell untuk keluar dari mongo shell.

Setelah menyelesaikan langkah-langkah di atas, Anda dapat menjalankan database MongoDB dalam mode standalone. Untuk menjalankan database dalam mode set replika, lakukan operasi pada Langkah 4.

Langkah 4: Jalankan database MongoDB yang dikelola sendiri dalam mode set replika

Secara default, file cadangan fisik instans berisi konfigurasi set replikanya. Untuk menjalankan database MongoDB yang dikelola sendiri dalam mode set replika, Anda harus menghapus konfigurasi tersebut dari cadangan fisik. Lakukan operasi berikut:

  1. Di command line, login ke database sebagai pengguna test menggunakan mongo shell:

    mongo --host 127.0.0.1 -u test -p <Password akun test> --authenticationDatabase admin
    Catatan

    Jika password berisi karakter khusus, Anda harus membungkus password tersebut dengan tanda petik tunggal (' '). Contoh: 'test123!@#'. Jika tidak, Anda mungkin gagal login ke database.

  2. Setelah login ke database, jalankan perintah dalam kode contoh berikut untuk melakukan operasi berikut:

    1. Buat pengguna sementara di database admin dan berikan izin baca-tulis kepada pengguna sementara tersebut pada database local.

    2. Beralih ke pengguna sementara dan hapus konfigurasi set replika asli dari database local.

    3. Kembali ke pengguna test dan hapus pengguna sementara beserta izin sementaranya.

      Catatan

      Ganti <Password akun test> dalam kode berikut dengan password akun test Anda.

    use admin
    db.runCommand({
        createRole: "tmprole",
        roles: [
            {
                role: "test",
                db: "admin"
            }
        ],
        privileges: [
            {
                resource: {
                    db: 'local',
                    collection: 'system.replset'
                },
                actions: [
                    'remove'
                ]
            }
        ]
    })
    db.runCommand({
        createUser: "tmpuser",
        pwd: "tmppwd",
        roles: [
            'tmprole'
        ]
    })
    db.auth('tmpuser','tmppwd')
    use local
    db.system.replset.remove({})
    use admin
    db.auth('test','<Password akun test>')
    db.dropRole('tmprole')
    db.dropUser('tmpuser')
  3. Jalankan perintah berikut untuk menghentikan layanan MongoDB dan keluar dari mongo shell:

    use admin
    db.shutdownServer()
    exit
  4. Buat file autentikasi pada set replika.

    Untuk menjalankan database dalam mode set replika, Anda harus membuat file kunci agar semua node set replika dapat saling mengotentikasi.

    1. Jalankan perintah berikut untuk membuat folder keyFile di direktori mongo sebagai direktori file autentikasi dan buat file kunci di dalam direktori tersebut:

      mkdir -p /test/mongo/keyFile && touch /test/mongo/keyFile/mongodb.key
    2. Jalankan perintah vi /test/mongo/keyFile/mongodb.key untuk membuka file mongodb.key, lalu tekan tombol i untuk masuk ke mode edit. Contoh:

      MongoDB Encrypting File
      Catatan

      Kunci yang digunakan untuk mengenkripsi data memiliki batasan berikut:

      • Panjang kunci harus antara 6 hingga 1.024 karakter.

      • Kunci hanya boleh berisi karakter yang dikodekan dalam Base64.

      • Kunci tidak boleh berisi tanda sama dengan (=).

    3. Tekan tombol Esc untuk keluar dari mode edit, lalu ketik :wq untuk menyimpan file dan keluar.

    4. Di command line, jalankan perintah berikut untuk mengubah izin file autentikasi menjadi 400. Dengan demikian, hanya pemilik file yang dapat melihat isi file tersebut.

      sudo chmod 400 /test/mongo/keyFile/mongodb.key
    Catatan

    File autentikasi ini berlaku untuk semua node set replika.

  5. Lakukan operasi berikut untuk menyiapkan dua node kosong untuk set replika:

    1. Jalankan perintah berikut untuk membuat dua salinan file mongod.conf. Kedua salinan tersebut digunakan sebagai file konfigurasi untuk dua node lainnya.

      cp /test/mongo/mongod.conf /test/mongo/mongod1.conf && cp /test/mongo/mongod.conf /test/mongo/mongod2.conf
    2. Jalankan perintah berikut untuk membuat direktori data untuk dua node lainnya:

      mkdir -p /test/mongo/data1 && mkdir -p /test/mongo/data2
  6. Ubah file konfigurasi setiap node dengan melakukan operasi berikut:

    • Jalankan perintah vi /test/mongo/mongod.conf untuk membuka file konfigurasi Node 1 dan ubah file tersebut berdasarkan konten berikut. Lalu, simpan dan keluar dari file konfigurasi.

      systemLog:
          destination: file
          path: /test/mongo/mongod.log
          logAppend: true
      security:
          authorization: enabled
          keyFile: /test/mongo/keyFile/mongodb.key
      storage:
          dbPath: /test/mongo/data
          directoryPerDB: true
      net:
          bindIp: 127.0.0.1
          port: 27017
          unixDomainSocket:
              enabled: false
      processManagement:
          fork: true
          pidFilePath: /test/mongo/mongod.pid
      replication:
          replSetName: "rs0"
    • Jalankan perintah vi /test/mongo/mongod1.conf untuk membuka file konfigurasi Node 2 dan ubah file tersebut berdasarkan konten berikut. Lalu, simpan dan keluar dari file konfigurasi.

      systemLog:
          destination: file
          path: /test/mongo/mongod1.log
          logAppend: true
      security:
          authorization: enabled
          keyFile: /test/mongo/keyFile/mongodb.key
      storage:
          dbPath: /test/mongo/data1
          directoryPerDB: true
      net:
          bindIp: 127.0.0.1
          port: 27018
          unixDomainSocket:
              enabled: false
      processManagement:
          fork: true
          pidFilePath: /test/mongo/mongod1.pid
      replication:
          replSetName: "rs0"
    • Jalankan perintah vi /test/mongo/mongod2.conf untuk membuka file konfigurasi Node 3 dan ubah file tersebut berdasarkan konten berikut. Lalu, simpan dan keluar dari file konfigurasi.

      systemLog:
          destination: file
          path: /test/mongo/mongod2.log
          logAppend: true
      security:
          authorization: enabled
          keyFile: /test/mongo/keyFile/mongodb.key
      storage:
          dbPath: /test/mongo/data2
          directoryPerDB: true
      net:
          bindIp: 127.0.0.1
          port: 27019
          unixDomainSocket:
              enabled: false
      processManagement:
          fork: true
          pidFilePath: /test/mongo/mongod2.pid
      replication:
          replSetName: "rs0"

    Anda dapat mengubah parameter berikut dalam file konfigurasi:

    • path dalam systemLog.path: path untuk menyimpan file log MongoDB di node saat ini.

    • dbpath: path untuk menyimpan file data MongoDB di node saat ini.

    • pidFilePath: path untuk menyimpan file ID proses (PID) MongoDB di node saat ini.

    • keyFile: path untuk menyimpan file autentikasi set replika. Semua node dalam set replika harus menggunakan file autentikasi yang sama.

    • bindIp: alamat IP node saat ini. Jika semua node dalam set replika dideploy pada server yang sama, mereka dapat menggunakan alamat IP yang sama.

    • port: nomor port node saat ini. Jika semua node dalam set replika dideploy pada server yang sama, mereka harus menggunakan nomor port yang berbeda.

    • replication: konfigurasi set replika.

    • replSetName: nama set replika.

  7. Jalankan perintah berikut untuk menjalankan ketiga node:

    mongod -f /test/mongo/mongod.conf && mongod -f /test/mongo/mongod1.conf && mongod -f /test/mongo/mongod2.conf
  8. Setelah ketiga node dijalankan, gunakan akun test untuk login ke database MongoDB yang dikelola sendiri.

    mongo --host 127.0.0.1 -u test -p <Password akun test> --authenticationDatabase admin
    Catatan

    Jika password berisi karakter khusus, Anda harus membungkus password tersebut dengan tanda petik tunggal (' '). Contoh: 'test123!@#'. Jika tidak, Anda mungkin gagal login ke database.

  9. Di mongo shell, jalankan perintah berikut untuk menambahkan node yang telah Anda buat sebelumnya ke set replika dan inisialisasi set replika:

    rs.initiate( {
       _id : "rs0",
       version : 1,
       members: [
          { _id: 0, host: "127.0.0.1:27017" , priority : 1},
          { _id: 1, host: "127.0.0.1:27018" , priority : 0},
          { _id: 2, host: "127.0.0.1:27019" , priority : 0}
       ]
    })

    Inisialisasi yang berhasil akan menghasilkan output berikut:

    > rs.initiate( {
    ...    _id : "rs0",
    ...    version : 1,
    ...    members: [
    ...       { _id: 0, host: "127.0.0.1:27017" , priority : 1},
    ...       { _id: 1, host: "127.0.0.1:27018" , priority : 0},
    ...       { _id: 2, host: "127.0.0.1:27019" , priority : 0}
    ...    ]
    ... })
    { "ok" : 1 }
    rs0:SECONDARY>
    Catatan

    Perintah rs.initiate() digunakan dalam langkah ini. Untuk informasi selengkapnya tentang perintah tersebut, kunjungi rs.initiate().

    Setelah perintah dieksekusi, data disinkronkan antara dua node yang ditambahkan dan node primary. Waktu yang dibutuhkan dalam proses ini bervariasi tergantung pada ukuran file cadangan. Setelah data disinkronkan, database MongoDB yang dikelola sendiri dijalankan dalam mode set replika.

  10. Lakukan operasi berikut untuk memeriksa apakah database MongoDB yang dikelola sendiri dalam mode set replika telah dijalankan:

    1. Jalankan perintah exit untuk keluar dari mongo shell.

    2. Jalankan perintah berikut untuk login kembali ke database MongoDB yang dikelola sendiri:

      mongo -u <username> -p <password> --authenticationDatabase admin
      • <username>: akun yang digunakan untuk login ke database MongoDB yang dikelola sendiri. Nilai default-nya adalah root.

      • <password>: password yang digunakan untuk login ke database MongoDB yang dikelola sendiri.

        Catatan

        Jika password berisi karakter khusus, Anda harus membungkus password tersebut dengan tanda petik tunggal (' '). Contoh: 'test123!@#'. Jika tidak, Anda mungkin gagal login ke database.

    3. Periksa apakah database MongoDB yang dikelola sendiri dijalankan dalam mode set replika. Jika <Nama set replika>:PRIMARY> ditampilkan di sisi kiri command line di mongo shell, berarti database MongoDB yang dikelola sendiri telah dijalankan dalam mode set replika.

FAQ

Mengapa terjadi error saat saya menggunakan file konfigurasi mongod.conf yang ditentukan untuk menjalankan database MongoDB yang dikelola sendiri?

Penyebab umum meliputi:

  • Anda mungkin telah menjalankan database MongoDB yang dikelola sendiri sebelum menentukan file konfigurasi mongod.conf. Akibatnya, file storage.bson secara otomatis dibuat di direktori data. Dalam kasus ini, hapus file storage.bson dan tentukan file konfigurasi mongod.conf untuk menjalankan database MongoDB yang dikelola sendiri.

  • Proses mongod lain mungkin sedang berjalan di sistem saat ini. Dalam kasus ini, jalankan perintah ps -e | grep mongod untuk mencari PID dan jalankan perintah kill <PID> untuk menghentikan proses tersebut. Lalu, tentukan file konfigurasi mongod.conf untuk menjalankan database MongoDB yang dikelola sendiri.

  • Path log systemLog.path yang tidak valid mungkin ditentukan dalam file konfigurasi mongod.conf. Dalam kasus ini, periksa apakah path yang ditentukan ada dan apakah file log memiliki nama yang ditentukan. Contoh: path: /<Path file log>/<Nama file log>.log.

Mengapa terjadi error saat saya menggunakan file konfigurasi mongod.conf untuk menjalankan database MongoDB yang dikelola sendiri dalam mode set replika?

Anda mungkin gagal mengubah izin file autentikasi keyFile yang ditentukan menjadi 600. Di command line, jalankan perintah sudo chmod 600 <Path keyFile> untuk mengubah izin tersebut.

Mengapa performa sistem menjadi rendah setelah saya menjalankan database MongoDB yang dikelola sendiri dalam mode set replika?

Setelah Anda menjalankan database MongoDB yang dikelola sendiri dalam mode set replika, sistem secara otomatis mulai menyinkronkan data dari node primary ke node lainnya. Proses ini dapat memengaruhi performa sistem. Performa sistem akan kembali normal setelah data disinkronkan.