• backup.md dd 2.48 kB 2022-07-18 12:54
  • Position: backup.md

    # 可道云备份
    
    可道云备份分为两部分:
    > 需要注意:物理数据和MySQL数据库备份时间不能相隔太久,因为数据库中存储着物理文件记录,两者备份时间相隔太久可能出现记录不一致,会导致文件无法下载等问题。
    
    1. 物理数据备份
        * 建议做整站备份,也就是备份整个网站目录。
        * 默认情况下,数据都存放在站点下./data/files目录,如果还有其他存储,也要一并备份。
    2. MySQL数据库备份
        * 逻辑备份:导出sql是最快的备份方式。
    
    ## 1. 物理数据备份
    
    ### 1.1 备份到Linux
    
    ### 1.2 备份到Windows
    
    1. 下载[cwrsync_6.2.4_x64_free.zip](https://itefix.net/dl/free-software/cwrsync_6.2.4_x64_free.zip),解压内容拷贝到目录 `C:\cwrsync`
    2. 打开powershell窗口,执行rsync同步命令
    
        ```bash
        #其中root@172.28.x.x代表服务器地址账号,/var/www/html 代表可道云目录,/d/backup/ 代表windows备份目录d:\backup
        c:\cwrsync\bin\rsync.exe -e 'c:\cwrsync\bin\ssh.exe' -avP root@172.28.x.x:/var/www/html /cygdrive/d/backup/
        ```
    
    ## 2. MySQL数据库备份
    
    ### 2.1 逻辑备份
    
    mysqldump 是 MySQL自带的备份工具,比较常见。
    
    * 备份一次,其中
      * `BACKUP_DB`:数据库名称
      * `BACKUP_USER`:数据库用户名
      * `BACKUP_PWD`:数据库密码
      * `BACKUP_DIR`:备份指定目录
    
        ```sql
        mysqldump --single-transaction -u BACKUP_USER -p'BACKUP_PWD' BACKUP_DB > BACKUP_DIR/kodbox.sql
        ```
    
    * 使用脚本定时备份
      * 脚本内容
    
        ```bash
        #!/bin/bash
        # Set the backup date
        BACKUP_TIME=`date +%Y%m%d%H%M%S`
        BACKUP_DIR=/var/mysql_backups
        BACKUP_HISTORY=3
        BACKUP_USER=xxx
        BACKUP_PWD=xxx
        BACKUP_DB=xxx
    
        [ -d ${BACKUP_DIR} ] || mkdir ${BACKUP_DIR}
    
        # Dump database kodbox. 
        mysqldump --single-transaction -u ${BACKUP_USER} -p'${BACKUP_PWD}' ${BACKUP_DB} | gzip -9 > ${BACKUP_DIR}/BACKUP_DB_${BACKUP_TIME}.sql.gz
        if [ $? -ne 0  ];then
            echo "${BACKUP_TIME} mysqldump error " >>  ${BACKUP_DIR}/dump.log
            exit 1
        fi
    
        # restore with:
        # zcat xxx.sql.gz | mysql -u username -p your_db_name
    
        find ${BACKUP_DIR} -name "*.sql.gz" -mtime +${BACKUP_HISTORY} |xargs rm -f;
        exit 0
        ```
    
      * 写入Linux系统计划任务,其中`${BAK_SCRIPT}`换成脚本位置
      
        ```bash
        crontab -l | { cat; echo "0 1 * * * ${BAK_SCRIPT} "; } | crontab -
        ```
    

    Powered by kodbox V1.36

    Copyright © kodcloud.com.

    Files