일반
nodejs에서 mysqldump실행하기
알 수 없는 사용자
2023. 6. 2. 13:40
SMALL
mysqldump로 mysqlDB를 백업할수있다.
기본적인 사용법은 다음과 같다.
$ mysqldump -uroot -p[password] [dbname] > [backup_file_name]
이를 nodejs환경에서 실행해보려고 한다.
.
const { spawn } = require('child_process');
const fs = require('fs');
async function backup() {
return new Promise((resolve, reject) => {
const mysqldump = spawn('mysqldump',[
'-u[user]',
'-p[password]',
'[database]'
])
const writestream = fs.createWriteSteam('[file].sql')
mysqldump.stdout
.pipe(writeStream)
.on('finish', function () {
console.log('DB백업 완료');
writeStream.end();
resolve();
})
.on('error', function (err) {
console.log('DB백업 실패');
reject();
});
}
하위프로세스를 spawn을 이용하여 실행하여 복원데이터를 file.sql에 저장한다.
const mysqldump = spawn('mysqldump',[
'-u[user]',
'-p[password]',
'[database]'
'--routines',
'--events',
'--triggers',
'--add-drop-table',
'--databases',
])
이후 정상적인 복원을 위하여, 프로시저와 이벤트를 모두 포함시키기위해 해당 인자를 추가한다.
실행 후 해당 복원데이터가 담긴 파일이 생성되었다.
const cron = require('node-cron');
const task = cron.schedule(
'00 * * * *',
() => { backup() },
{ scheduled: false }
);
이후 해당함수를 매시 정각마다 실행하게 스케쥴링하였다.
LIST