80 lines
2.5 KiB
Markdown
80 lines
2.5 KiB
Markdown
# Database Backup Service
|
|
|
|
A Node.js application that continuously runs and creates backups of an MSSQL database, then uploads them to Amazon S3.
|
|
|
|
## Features
|
|
|
|
- Automatically backs up MSSQL database using T-SQL backup commands
|
|
- Uploads backup files to Amazon S3
|
|
- Runs continuously with scheduled backups
|
|
- Configurable backup interval
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js (v14 or higher recommended)
|
|
- Access to an MSSQL database server
|
|
- AWS S3 bucket and credentials
|
|
|
|
## Setup
|
|
|
|
1. Clone this repository
|
|
2. Install dependencies:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. Configure environment variables:
|
|
Copy the `.env.example` file to `.env` and fill in your credentials:
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Then edit the `.env` file with your actual credentials:
|
|
- AWS_ACCESS_KEY_ID: Your AWS access key ID
|
|
- AWS_SECRET_ACCESS_KEY: Your AWS secret access key
|
|
- AWS_REGION: Your AWS region (e.g., us-east-1)
|
|
- S3_BUCKET_NAME: Your S3 bucket name
|
|
- MSSQL_SERVER: Your MSSQL server address
|
|
- MSSQL_PORT: Your MSSQL server port (default: 1433)
|
|
- MSSQL_USER: Your MSSQL username
|
|
- MSSQL_PASSWORD: Your MSSQL password
|
|
- MSSQL_DATABASE: Your database name (default: eazybusiness)
|
|
- BACKUP_FILE_PATH: Path where backup file is created on MSSQL server (default: F:\ez.bak)
|
|
- SMB_ADDRESS: Your SMB share address (e.g., //server/share)
|
|
- SMB_USERNAME: Your SMB username
|
|
- SMB_PASSWORD: Your SMB password
|
|
- SMB_DOMAIN: Your SMB domain (optional)
|
|
- SMB_LOCAL_DOWNLOAD_PATH: Local path to download backup files (default: ./downloads)
|
|
|
|
## Running the Application
|
|
|
|
Start the backup service:
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
For development with auto-restart:
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
## How It Works
|
|
|
|
1. The application connects to your MSSQL database using the provided credentials
|
|
2. It executes a T-SQL backup command to create a backup file on the MSSQL server
|
|
3. The backup file is downloaded from the SMB share to a local directory
|
|
4. The local backup file is then uploaded to your specified S3 bucket
|
|
5. This process repeats every 24 hours (configurable in the code)
|
|
|
|
## Configuration
|
|
|
|
The backup interval can be adjusted in `index.js` by modifying the `setInterval` parameter:
|
|
```javascript
|
|
// Currently set to 24 hours (86400000 milliseconds)
|
|
setInterval(runBackupProcess, 86400000);
|
|
```
|
|
|
|
## File Path Note
|
|
|
|
The backup file is created on the MSSQL server at the path specified by BACKUP_FILE_PATH environment variable (default: F:\ez.bak). Make sure this path is accessible on your MSSQL server and has appropriate permissions.
|