AWS にて mysqldump の取得を Lambda で自動化しています。
後述する関数コードで正常に取得できていましたが DB のデータ量が増えてから下記のメッセージが出て取得に失敗するようになってしまいました。
Lambda 関数設定画面よりメモリ設定を 1024MB → 1536MB に変更してみましたが、メッセージ内容は変わらず失敗。(後述のメッセージはメモリ値変更後のもの)
対処方法をご教授頂きたく思います。
環境情報を記載します。(足りない情報ありましたら追記致します)
例えばですが、mysqldump コマンドのオプション「--single-transaction」を指定出来れば…とも考えましたが、Node.js上でコマンドオプションの指定は可能なのでしょうか。
[Lambdaログ]
(Cloudwatchログに出力されたもの)
START RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a Version: $LATEST END RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a REPORT RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a Duration: 9208.56 ms Billed Duration: 9300 ms Memory Size: 1536 MB Max Memory Used: 1536 MB RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a Process exited before completing request START RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a Version: $LATEST END RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a REPORT RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a Duration: 9429.58 ms Billed Duration: 9500 ms Memory Size: 1536 MB Max Memory Used: 1536 MB RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a Process exited before completing request START RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a Version: $LATEST END RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a REPORT RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a Duration: 9621.80 ms Billed Duration: 9700 ms Memory Size: 1536 MB Max Memory Used: 1536 MB RequestId: 19d4d7ed-cd4b-11e7-a42f-a13c00653d3a Process exited before completing request
[Lambda]
・関数コード設定 (ランタイム:Node.js 4.3)
mqldump コマンドで取得後、S3バケットに配置してます。
'use strict'; const AWS = require('aws-sdk'); const mysqlDump = require('mysqldump'); const fs = require('fs'); require('date-utils'); var date = new Date(); var timeStamp = date.toFormat('YYYYMMDDHH24MISS'); // dumpファイルのファイル名 const dumpFileName = 'dump_' + timeStamp + '.sql'; const dumpPath = '/tmp/' + dumpFileName; // メインの処理 exports.handler = (event, context) => { // mysqldumpを実行 mysqlDump({ host: process.env.HOST, user: process.env.USER, password: process.env.PASSWORD, database: process.env.DBNAME, dest: dumpPath }, (err) => { // エラーが起こった場合、ログを出力 if (err) { context.fail(err); console.log('mysqldump error:' + err); } else { console.log('mysqldump saved.'); // mysqldumpの作成が成功した場合、S3へdumpファイルを送信する sendS3(); } }); }; // S3へdumpファイルを送信する function sendS3() { const s3 = new AWS.S3(); var params = { Bucket: 'バケット名', Key: 'sqlbackup/' + dumpFileName, Body: fs.readFileSync(dumpPath) }; // S3にmysqldumpを配置する s3.putObject(params, (err) => { if (err) { console.log('S3 PutObject error:', err); } else { console.log('mysqldump is uploaded to S3.'); } }); }
・基本設定
メモリ :1536MB(MAX)
タイムアウト:2分30秒
[RDS]
エンジン :MySQL 5.7.16
タイプ :db.m4.2xlarge
ストレージ:30GB
DB 総容量:
mysql> select table_schema, sum(data_length+index_length) /1024 /1024 as MB from information_schema.tables where table_schema = database(); +--------------+-----------+ | table_schema | MB | +--------------+-----------+ | *** | 15969.765 | 現在 約15GB +--------------+-----------+ 1 row in set (0.03 sec)
回答2件
あなたの回答
tips
プレビュー