어떻게 정시에 데이터베이스를 백업하고 칠우운을 업로드합니까

7904 단어
선언: 이 글은 주로 자신이 백업 데이터베이스 파일에서 밟은 구덩이와 해결 방법을 기록한다.

서버 데이터베이스 백업 파일을 칠우 클라우드에 업로드

  • 데이터베이스 파일 백업
  • 서버 루트 디렉터리에서/backup/qiniu/를 만듭니다.backup.sh
        #!/bin/bash
        # vuemall   
        # blog_runner  vuemall  
        # admin        vuemall 
        
        #    
        backUpFolder="/home/Garen/work/dbbackup/vuemall"  //   
         date_now=`date +%Y_%m_%d_%H%M`
        backFileName=vuemall_$date_now
        
        #   ,  
        cd $backUpFolder
        mkdir -p $backFileName
        
        mongodump -h 127.0.0.1:27017 -d vuemall -u blog_runner -p admin -o $backFileName
        
        #  
        tar zcvf $backFileName.tar.gz $backFileName
        
        #     
        rm -rf $backFileName
        
       
    
  • 7 소의 프로필을 만들어서 token

    파일 업로드

    1을 생성하고 AccessKey + SecretKey(개인센터='비키 관리에서 볼 수 있음) + bucket(스토리지 공간 이름)에 따라 token을 생성합니다.2. 이미지 원본(파일 흐름/파일 주소)과 token을 사용하여 칠우 저장 이미지에 정보를 제출한다.

    업로드 경로

    1. 서버 사이드 업로드: 로컬 파일 업로드, 바이트 그룹 업로드로 나뉜다.2. 클라이언트 업로드: Base64 모드 업로드, Blob 모드 업로드;

    서버 nodjs 업로드

    경로가/backup/qiniu/에서 실행npm init 생성==qiniu_config.js==
    npm i qiniu  //  SDK
    
    다음은 qiniu_config.js의 내용
        'use strict';
    
        import * as qiniu from 'qiniu'
        
        export const getToken = (bucket) => {
                var accessKey = ' accesskey';
                var secretKey = ' secretKey;
                var bucket = bucket
                var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
        
                var options = {
                        scope: bucket
                }
        
                var putPolicy = new qiniu.rs.PutPolicy(options);
        
                return  putPolicy.uploadToken(mac);
        }
        
    
    upload를 만듭니다.js
        'use strict';
    
        import * as qiniu from 'qiniu'
        
        import  {getToken} from  './qiniu_config.js'
        
        const uploadToken = getToken('blog_node') // blog_node  
        
        console.log(uploadToken)
        
        const config = new qiniu.conf.Config();
        config.zone = qiniu.zone.Zone_z0; //  
        const formUploader = new qiniu.form_up.FormUploader(config);
        const putExtra = new qiniu.form_up.PutExtra();
        
        
        const parts  = process.env.NODE_ENV.split('@')
        const file = parts[1] + '.tar.gz'
        const filePath = parts[0] + '/' + file
        
        const key=file;  // 
        const localFile = filePath; //  
        formUploader.putFile(uploadToken, key, localFile, putExtra, function (respErr,
          respBody, respInfo) {
          if (respErr) {
            throw respErr;
          }
          if (respInfo.statusCode == 200) {
            console.log('  ')
            console.log(respBody);
          } else {
            console.log(respInfo.statusCode);
            console.log(respBody);
          }
        });
    
    
    그 중에서 대응하는 기계실은 다음과 같다. 1. 화동qiniu.zone.Zone_z012, 화북qiniu.zone.Zone_화남qiniu.zone.Zone_z24, 북미qiniu.zone.Zone_na0

  • node를 사용하여 업로드를 실행하기 때문입니다.js에서 오류가 발생합니다.
        SyntaxError: Unexpected token import
    

    그 이유는 현재 node는 일부 ES6의 문법만 지원하고 일부 ES6 문법은 지원하지 않으며import가 그 중의 하나이기 때문이다.이 문제를 해결하려면 대체할 방안을 찾을 수 있다
  • Babel-cli 플러그인 사용
  • node 8.5를 업그레이드할 때 experimental-modules 파라미터를 사용합니다.모든 파일 이름 접미사를 mjs
    node  –experimental-modules index.mjs
    
  • 로 수정해야 한다는 점에 유의하십시오.
  • babel-regiser
      npm i  babel-register babel-preset-env --save-dev
    
    를 설치하여 만듭니다.babelrc
    {
      "presets": [
          ["env", {
            "targets": {
              "node": "current"
            }
          }]
        ]
     }
    

  • 새 포털 파일은 원래 포털 파일require를 들어옵니다.
       require('babel-register')({
           presets: [ 'env' ]
       })
    
       // Import the rest of our application.
       module.exports = require('./upload.js')
    

    본고는 babel-resiger 설치 방법으로 디렉터리에 생성start.js따라서 .backup.sh 스크립트의 마지막 줄에
        #      
        NODE_ENV=$backUpFolder@$backFileName node /backup/qiniu/start.js 
    

    스크립트.backup.sh를 실행하면 칠우운 백엔드에서 이미 백업된 데이터베이스 파일을 볼 수 있다

    정시 작업 시작


    우리는 백업을 자동으로 실행하고 칠우운에 업로드하는 시간을 설정하고 싶습니다. 크론탭 아래는crontab의 사용법입니다.일반적으로centos에서는 자동으로 설치됩니다.자세한 설정은 스크립트 설정을 참조할 수 있습니다
  • crontab 설치
  • yum install crontabs
    
  • 서비스 개시
  • service crond start  // 
    service crond stop   // 
    service crond restart   //  
    service crond reload    // 
    service crond status   // 
    ntsysv   // crontab 
    tail -f /var/log/cron  //   
    
  • 실행 스크립트 편집vim/etc/crontab를 설정합니다. 기본 형식은 다음과 같습니다
  • SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
                                         
    

    매일 02:00을 루트 사용자로 설정
     0 2 *  *  * root  sh  /backup/qiniu/.back.sh                    
    

    이 시간에 스크립트를 시작하여 데이터베이스 백업을 실행하고 칠우운에 업로드하는 데 성공했습니다!

    좋은 웹페이지 즐겨찾기