gpt4 book ai didi

MySQL使用 Lambda 将 RDS 转储到 S3

转载 作者:行者123 更新时间:2023-11-29 06:36:43 33 4
gpt4 key购买 nike

我正在寻找如何使用 Lambda 将 RDS 导出到 S3,到目前为止,我找到了一个 Python 节点和 Java API,但我找不到一种在没有实际的情况下以编程方式运行 mysqldump 之类的方法可执行文件。

有办法吗?

我正在考虑使用node.js来调用SHOW CREATE TABLE对于SHOW TABLES

中的每个元素

然后以某种方式创建扩展的 INSERT 语句。

最佳答案

是的,这是可能的,不过您需要在 lambda 包中包含 mysqldump 可执行文件!

Node.js 中的示例脚本,用于使用 mysqldump 进行备份并上传到 S3。

var S3 = require('./S3Uploader'); //custom S3 wrapper with stream upload functionality

var fs = require('fs');
var path = require('path');
var util = require('util');

const writeFile = util.promisify(fs.writeFile);

const execFile = util.promisify(require('child_process').execFile);
const exec = util.promisify(require('child_process').exec);

async function backupToS3(){

var backupName = 'mysqlbackup-'+new Date().toISOString()+'.gz'

var content = `cd /tmp
BACKUPNAME="[BACKUP_NAME]"
[EXE_PATH]/mysqldump --host [DB_ENDPOINT] --port [DB_PORT] -u [DB_USER] --password="[DB_PASS]" [DB_NAME] | gzip -c > $BACKUPNAME
`;
content = content.replace('[BACKUP_NAME]', backupName);
content = content.replace('[DB_ENDPOINT]', 'xx'); //get from lambda environment variables
content = content.replace('[DB_PORT]', 'xx'); //get from lambda environment variables
content = content.replace('[DB_USER]', 'xx'); //get from lambda environment variables
content = content.replace('[DB_PASS]', 'xx'); //get from lambda environment variables
content = content.replace('[DB_NAME]', 'xx'); //get from lambda environment variables
content = content.replace('[EXE_PATH]', __dirname+'/tools'); //path where mysqldump executable is located withing the lambda package

//generate backup script
await writeFile('/tmp/db_backup.sh', content);
fs.chmodSync('/tmp/db_backup.sh', '755');

//run script
var res1 = await execFile('/tmp/db_backup.sh');

//stream upload to S3
var res2 = await S3.uploadFile('/tmp/'+backupName, 'backups');

//cleanup local backup (this should cleanup automatically according to lambda lifecycle)
var res3 = await exec('rm /tmp/'+backupName);

return 'Backup complete';
};

示例 S3Uploader 发布在此处 - Loading File directly from Node js req body to S3

关于MySQL使用 Lambda 将 RDS 转储到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53501317/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com