2017-10-10 9 views
2

rootユーザーの資格情報を持っており、これらの資格情報を使用してdbバックアップを自動化しています。主な目的は、自動DBバックアップのプロトタイプを作成することです。簡略化のために、のルートを使用しています。スクリプト(私が記事から借りた)次のように次のようになります。root cantがデータベースのlistCollectionsコマンドを実行

Failed: error getting collections for database mydb : error running listCollections . Database: mydb Err: not authorized on mydb to execute command { listCollections: 1, cursor: {} }

イマイチすべてのデータベースの上にすべてのアクセスを持っているルート:

#!/bin/bash 

#Force file syncronization and lock writes 
mongo admin -u "root" -p "root" --eval "printjson(db.fsyncLock())" 

MONGODUMP_PATH="/usr/bin/mongodump" 
MONGO_DATABASE="mydb" #replace with your database name 

TIMESTAMP=`date +%F-%H%M` 
S3_BUCKET_NAME="mydb" #replace with your bucket name on Amazon S3 
S3_BUCKET_PATH="backup/mongo" 

# Create backup 
$MONGODUMP_PATH -d $MONGO_DATABASE 

# Add timestamp to backup 
mv dump mongodb-$HOSTNAME-$TIMESTAMP 
tar cf mongodb-$HOSTNAME-$TIMESTAMP.tar mongodb-$HOSTNAME-$TIMESTAMP 

# Upload to S3 
s3cmd put mongodb-$HOSTNAME-$TIMESTAMP.tar s3://$S3_BUCKET_NAME/$S3_BUCKET_PATH/mongodb-$HOSTNAME-$TIMESTAMP.tar 

#Unlock database writes 
mongo admin -u "root" -p "root" --eval "printjson(db.fsyncUnlock())" 
#Delete local files 
#rm -rf mongodb-* 

は、私は次のエラーを取得していますか?私は少し怖いので、私はルートに何かを置き換えると思っている状況に遭遇するかもしれないが、それは許可を持っていない。これが投稿の質問の根本的な原因です。将来私はこのような驚きを避けたい。

答えて

2

上記のエラーは私にとって誤解を招いていました。しかし、私のスクリプトは間違っているか不完全でした。

あなたは私のスクリプトに次の行を見れば:

$MONGODUMP_PATH -d $MONGO_DATABASE 

私はMongodumpコマンド内の任意のユーザーとなり、エラーメッセージを提供しておりません。その行を次のように書き直すと、次のようになります。

エラーが消えてしまいます。

+0

あなたが解決策を見つけたことを嬉しく思います。また、同じことをする[automongobackupスクリプト](https://github.com/micahwedemeyer/automongobackup)も考慮する必要があります。レプリカセットやシャーディングに対処する必要があるときは、非常に効果的です。しかし、あなたはまだs3のアップロードの面を管理する必要があります。 –

関連する問題