sqaleで他サーバにDBバックアップしようとしてハマったこと

sqaleでのデータベースバックアップの取り方は、公式サポートに記載がある。
https://sqale.jp/support/manual/db-backup-restore

記載されている方法で、つまり、他サーバにSSH接続してmysqlのダンプデータを保存しようとして、ハマったので記録。

バックアップサーバは、鍵認証(パスフレーズなし)を設定済。

mysqldump -u [ユーザー名] -h [ホスト名] --password=[データベースのパスワード] [データベース名] | ssh -p [ポート番号] -i [外部サーバ用秘密鍵の場所] [外部サーバのユーザ名]@[外部サーバーのホスト名] 'cat > ~/mysql.dump'

初回接続で、known_hostに登録するかどうか尋ねられ、yesと答えたが、
Failed to add the host to the list of known hosts
と、登録不可のエラーが出る。

そのため、接続する度に登録の要否を尋ねられることになり、cronでの自動バックアップができず困る…。

原因は、~/.ssh/ディレクトリに書き込み権限がないため、known_hostsファイルが生成できないこと。
もちろん自分で作成することもできない。

ググりまくった結果、任意の場所のknownhostsファイルを指定できることを発見した。
~/.ssh/ 以下に書き込めない環境で ssh したとき known_hosts に書き込めないエラーを抑制する

oオプションで、UserKnownHostsFileを指定すればよいらしい。

mysqldump -u [ユーザー名] -h [ホスト名] --password=[データベースのパスワード] [データベース名] | ssh -p [ポート番号] -i [外部サーバ用秘密鍵の場所] -o UserKnownHostsFile=[任意に作成したknown_hosts用ファイルの場所] [外部サーバのユーザ名]@[外部サーバーのホスト名] 'cat > ~/mysql.dump'

これでOK。

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

コメントはまだありません »

RSS feed for comments on this post. TrackBack URL


Leave a Reply

CAPTCHA