2

mongodたとえば、 でインスタンスを実行していて、で1.2.3.4別のバックアップ サーバーを使用してい100.90.80.1ます。

次の bash スクリプトを使用して、から1.2.3.4へのmongodb データのバックアップを作成する必要があります。100.90.80.1

#!/bin/bash

set -e

MONGODUMP_PATH="/usr/bin/mongodump"
MONGO_HOST="1.2.4.4"
MONGO_PORT="27017"
MONGO_DATABASE="db"
MONGO_USERNAME="login"
MONGO_PASSWORD="pass"

TIMESTAMP=`date +%F-%H%M`
BACKUP_FILE_PATH="/var/backups/tokumx-backup-$TIMESTAMP"

error_exit()
{
  echo "Backup TokuMX filed due Error: $1" 1>&2
  rm -rf $BACKUP_FILE_PATH
  rm -rf $BACKUP_FILE_PATH.tar
  exit 1
}

# Create backup
$MONGODUMP_PATH --host $MONGO_HOST --port $MONGO_PORT --db $MONGO_DATABASE --use
rname $MONGO_USERNAME --password $MONGO_PASSWORD --out $BACKUP_FILE_PATH

# Make archive
tar cf $BACKUP_FILE_PATH.tar -C $BACKUP_FILE_PATH/ .

# Remove backup folder
rm -rf $BACKUP_FILE_PATH

1.2.3.4しかし、このオプションが原因で接続できません/etc/mongodb.conf

bind_ip = 127.0.0.1

上記の制限を変更する可能性があることはわかっていますbind_ip = 0.0.0.0が、安全ではありません。

上記のbashスクリプトを使用して、リモートmongodサーバーへの安全な接続と別のサーバーへのファイルのバックアップを作成する最良の方法は何ですか?

PS : 上記のスクリプトを次のように実行します。

sudo sh /scripts/tokumx_backup_script
4

1 に答える 1

2

稼働中のマシン:

  • sshサーバーが実行されていることを確認してください
  • トンネリング専用のユーザーを作成します。または、既存のユーザーを選択します。この例では、ユーザー「test」を使用します。

テストとしてログインし、次のようにします。

test@gw:~ % ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):
Created directory '/home/test/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
02:90:f6:e9:d6:52:32:91:dd:bb:6a:11:7c:58:8c:d5 test@gw.sznet
The key's randomart image is:
+--[ RSA 2048]----+
|  .. o =..       |
|  o.o o + E      |
| . ..+ o .       |
|    =.= o        |
|   . =.oS.       |
|    + o..        |
|   . . o         |
|      o          |
|     .           |
+-----------------+
test@gw:~ %
test@gw:~ % cd .ssh
test@gw:~/.ssh % ls
id_rsa          id_rsa.pub
test@gw:~/.ssh % chmod 600 *
test@gw:~/.ssh % mv id_rsa.pub authorized_keys
test@gw:~/.ssh % cd ..
test@gw:~ % chmod 700 .ssh

次に、ファイル ~test/.ssh/id_rsa (ライブ サーバーから) をバックアップ サーバーのファイル ~backupuser/.ssh/id_rsa_live.pem にコピーします。

次のステップ: バックアップ マシンに backupuser としてログインし、cd で .ssh ディレクトリに移動し、ファイル "~backupuser/.ssh/config" を作成 (または追加) して、次のように入力します。

host live
    hostname 1.2.3.4 # your live IP here!
    identifyfile /home/backupuser/.ssh/id_rsa_live.pem # your pem file, copied from the live server in the previous step
    protocol 2
    port 22 # port number of your ssh server on the live server, usually 22

この後、パスワードを入力せずにバックアップ サーバーからライブ サーバーに接続できるようになります。

ssh test@live

まずこれをテストしてください。パスワードを入力せずにログインできることを確認してください。

この時点で、scp コマンドを使用してライブからバックアップにコピーするオプションがあります。

scp test@live:/some/path/on/live/server /some/path/on/local/backup/machine

したがって、ライブ サーバーでバックアップを作成し、それをバックアップ サーバーにローカルに保存することができます。次の方法でシェル コマンドを送信することもできます。

ssh test@live -c " some command to execute on the live server with the test user "

最後に、まだバックアップ サーバーでバックアップを実行している場合は、次のコマンドで新しいトンネルを作成できます。

ssh -nNT -L 12345:127.0.0.1:27017 &

その後、バックアップに 127.0.0.1:12345 を使用できます。ただし、トンネルはバックグラウンドで実行されるため、停止する方法を見つける必要があることに注意してください。

于 2015-04-19T16:11:28.447 に答える