개발 노트

nodejs에서 mysqldump실행하기 본문

Node

nodejs에서 mysqldump실행하기

알 수 없는 사용자 2023. 6. 2. 13:40

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 }
);

이후 해당함수를 매시 정각마다 실행하게 스케쥴링하였다.

'Node' 카테고리의 다른 글

PostMan Error : Cloud Agent Error 해결  (0) 2023.06.13
Node.js와 MySQL 모듈 연결 시 오류 해결  (0) 2023.06.12
nodeJS - pm2  (0) 2023.05.04
Nodejs - execute,replace  (0) 2023.04.19
Node js - setInterval과 socket.connect  (0) 2023.02.16