n8n MySQL 구글시트 연동 — 노드 3개짜리 가장 단순한 DB 동기화 템플릿
이 글과 연결된 글 보기
드래그로 이동 · 휠/두 손가락으로 확대 · 방향키로 글 선택 · 0으로 맞춤. 실선: 본문 링크, 점선: 시리즈·주제의 대표 연결.표시된 글 7편 목록
n8n.io 공식 템플릿 마켓플레이스에 공개된 워크플로우를 가져오면, Cron·MySQL·Google Sheets 노드 3개만으로 MySQL 테이블의 데이터를 정해진 주기마다 구글시트로 옮기는 동기화 자동화를 만들 수 있습니다.
이 템플릿 하나로 보여줄 수 있는 것
n8n 포트폴리오라고 하면 다들 AI 챗봇이나 RAG 파이프라인처럼 화려한 걸 먼저 떠올리지만, 실무에서 정말 자주 필요한 자동화는 사실 이런 것입니다. "데이터베이스에 있는 걸 스프레드시트로 정기적으로 옮겨줘." 이 템플릿은 그 요청에 정확히 답합니다.
면접에서 "정기적으로 데이터를 동기화해본 경험 있나요?"라는 질문을 받으면 이 템플릿으로 답할 수 있습니다. "MySQL 테이블을 주기적으로 조회해서 구글시트에 자동으로 옮기는 워크플로우를 n8n으로 만들어봤다"는 식입니다.
문장 하나지만 안에 들어간 역량은 세 가지입니다.
- 데이터베이스 연결과 쿼리 — n8n에서 MySQL에 직접 붙어 원하는 데이터를 뽑아온 경험
- 스케줄 기반 자동화 — 사람이 실행 버튼을 누르지 않아도 정해진 주기로 도는 흐름을 구성한 경험
- 이기종 시스템 간 동기화 — 데이터베이스와 스프레드시트처럼 성격이 다른 두 시스템을 자동화로 연결한 경험
이 세 가지는 매출 데이터를 대시보드용 시트로 옮기거나, 운영 DB의 특정 테이블을 DB에 접근 못 하는 팀원이 보기 편한 시트로 공유하는 등, "DB 안의 데이터를 DB 밖 사람에게 보여준다"는 유형의 자동화 전부에 그대로 쓰입니다.
이 템플릿은 무엇인가
이 워크플로우는 데이터팝콘이 만든 게 아닙니다. n8n 공식 템플릿 마켓플레이스(n8n.io/workflows)에 Import data from MySQL into Google Sheets라는 이름으로 공개된 템플릿이고, 제작자는 Lorena입니다. 카테고리는 Engineering으로 등록돼 있습니다.
이 시리즈에서 지금까지 다룬 템플릿 중 공식 설명이 가장 짧습니다. "How it works"도 "Setup"도 없이, 페이지에 적힌 설명은 딱 한 문장입니다. "This workflow queries a table in MySQL and inserts the data into Google Sheets." (이 워크플로우는 MySQL의 테이블을 조회해 그 데이터를 구글시트에 넣습니다.) 노드 미리보기에는 Cron, MySQL, Google Sheets 세 개가 표시되고 "+N개 더보기" 같은 표시는 없어서, 카드에 보이는 노드가 전부로 보입니다.
근거가 이 한 문장과 노드 이름 세 개뿐이라, 아래 구조·만들기 섹션은 공식 문서를 옮긴 게 아니라 이 정보만으로 데이터팝콘이 합리적으로 재구성한 내용입니다. 실제 템플릿에 쓰인 테이블명·컬럼·스케줄 주기는 공개돼 있지 않으므로 지어내지 않았습니다. 이 점을 먼저 밝혀둡니다.
n8n 설치나 기본 노드 조작법은 n8n으로 반복업무 자동화 포트폴리오 만들기에 정리돼 있으니, 이 글은 이 템플릿의 구조 자체에 집중합니다.
구조 — Trigger / Task / Target
- Trigger — Cron 노드가 정해진 주기마다 흐름을 시작합니다. 몇 시간 간격인지 하루 한 번인지는 공식 페이지에 나와 있지 않습니다.
- Task — MySQL 노드가 테이블 하나를 조회합니다. 어떤 테이블·어떤 쿼리인지는 공개되지 않았고, 조회된 행이 그대로 다음 노드로 넘어간다는 정도만 노드 이름에서 추론할 수 있습니다.
- Target — Google Sheets 노드가 조회된 행을 시트에 씁니다.
한 가지 짚어둘 점은 Cron이라는 노드 이름입니다. 이 템플릿은 등록된 지 오래돼 지금은 이름이 바뀐 노드를 쓰고 있습니다. 현재 n8n에서 같은 역할을 하는 노드는 Schedule Trigger이고, 새로 만든다면 Cron 대신 이걸 씁니다.
만들기
공식 페이지에는 번호가 매겨진 Setup 단계가 없습니다. 그래서 이 섹션은 "공식 단계를 따라간다"가 아니라, 이 3노드 구조를 직접 만든다면 각 자리에서 무엇을 준비해야 하는지를 일반적인 수준에서 정리한 것입니다. 구체적인 테이블명·컬럼·주기는 원문에 없으므로 채우지 않습니다.
1. 스케줄 정하기
Schedule Trigger 노드에서 몇 시간마다, 혹은 하루 한 번처럼 원하는 주기를 정합니다. 시트를 얼마나 자주 최신 상태로 유지해야 하는지가 이 값을 결정합니다.
2. MySQL 크리덴셜과 조회 쿼리
n8n에 MySQL 크리덴셜(호스트·포트·데이터베이스 이름·계정 정보)을 등록하고, MySQL 노드의 Operation을 Execute Query로 둔 뒤 옮기고 싶은 테이블을 조회하는 쿼리를 씁니다. SELECT * FROM 테이블명 같은 형태가 될 텐데, 실제 테이블명과 어떤 컬럼만 골라올지는 자신의 DB 구조에 맞게 채워야 합니다.
3. Google Sheets 노드 연결
Google Sheets 크리덴셜을 연결하고 대상 문서와 시트를 고른 뒤, MySQL 노드가 돌려준 컬럼을 시트 헤더와 맞춰줍니다. 컬럼명이 정확히 일치해야 값이 맞는 자리에 들어갑니다.
주의할 점 · 제약
공식 문서에 명시된 제약이 따로 없는 대신, 이 정도로 얕은 소스와 이 조합의 구조에서 반드시 짚어야 할 세 가지가 있습니다.
- 소스 자체가 이 시리즈에서 가장 얇습니다. How it works도 Setup도 없이 문장 하나와 노드 이름 세 개뿐이라, 이 글의 구조·설정 안내는 전부 재구성이며 원문에 없는 세부값은 다루지 않았습니다.
- n8n이 MySQL에 실제로 닿을 수 있어야 합니다. MySQL이 사내망이나 방화벽 뒤에 있다면, n8n cloud처럼 외부에 있는 인스턴스는 그 주소에 접근하지 못합니다. self-hosted n8n을 같은 네트워크에 두거나, MySQL을 외부에서 접근 가능하게 열어둬야 합니다.
- 덮어쓰기인지 추가인지는 원문에 나와 있지 않습니다. Google Sheets 노드는 매 실행마다 행을 계속 추가(Append)할 수도, 기존 행을 찾아 갱신(Update)할 수도 있습니다. 공식 페이지가 이 부분을 밝히지 않아서, 실행할 때마다 시트가 계속 길어지길 원하는지 최신 상태만 유지하길 원하는지는 직접 정해야 합니다.
포트폴리오·면접 포인트
포트폴리오에는 워크플로우 캔버스 스크린샷과, 실행 후 구글시트에 새 행이 채워진 화면 캡처 한 장이면 충분합니다.
이렇게 단순한 템플릿을 포트폴리오에 넣어도 되나 싶을 수 있는데, 오히려 이 단순함이 강점입니다. 실무에서 마주치는 정기 리포트·동기화 자동화의 상당수는 화려한 AI 없이 이 세 단계(트리거 → 조회 → 기록)로 끝납니다. 면접에서 "왜 이렇게 간단한 걸 골랐나요?"라고 물으면 "복잡한 AI 워크플로우 밑에도 결국 이런 기본적인 데이터 이동 패턴이 깔려 있고, 이걸 먼저 손에 익혀야 다음 단계로 넘어갈 수 있다고 생각했다"고 답할 수 있습니다.
다음 액션
다음 편에서는 도메인이 다시 보안 쪽으로 바뀝니다. Gmail로 받은 이메일의 헤더를 분석해 발신 IP의 평판과 스푸핑 여부를 확인하는 템플릿을 다루는데, 이번 편의 "정기적으로 데이터를 가져와 어딘가에 기록한다"는 뼈대와 달리 이메일 한 통이 들어올 때마다 여러 검증을 거치는 구조를 보게 됩니다.
