🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一、备份类型 (1) 热备:在数据库运行时,直接进行备份,对运行的数据库没有影响; (2) 温备:同样是在数据库运行的时候进行备份的,但对当前数据库的操作会产生影响; (3) 冷备:在数据库停止运行的时候进行备份,这种备份方式最为简单,只需要拷贝数据库物理文件即可; ## 二、mysqldump ## **用法** 这里仅仅将我们一般会用到的选项进行介绍; ``` mysqldump --quick --single-transaction -uiot -p'mypassword' -R db -e --max_allowed_packet=524288000 --net_buffer_length=16384 >/usr/lib/app/db.sql ``` >[danger] >--opt:这个参数包含了quick,add-drop-table,add-locks,extended-insert,lock-tables等;默认开启,会锁表,如果运行期间备份,为了避免对系统的影响,加上--skip-opt; > --quick:用于转储大的表。它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行并在输出前将它缓存到内存中; > -R:导出函数和存储过程(默认不导出); > -d:仅导出数据库的结构; > --skip-opt:禁用--opt(因为默认的是开启--opt的); > --single-transaction:一致性读,仅针对InnoDB有效,实现一致性备份,而且不会锁表,如果不加这个选项,则是通过全局锁表实现一致性; > 注意:--single-transaction选项和--lock-tables选项是互斥的,因为lock tables会使任何挂起的事务隐含提交; ## **其他备份** 另外,xtrabackup:是第三方物理热备工具,可以做增量备份; ## 三、云服务器快照备份 综合评估,中小型没有专职运维团队的业务系统,用这种方案最好; 以百度云服务器为例说明; 快照是一种高可靠性的数据备份方式,可以通过创建快照作为某一时间云磁盘数据状态的备份,用于日常数据备份、服务器重大更新备份、磁盘数据回滚、制作自定义镜像等场景; [云服务器BCC - 快照概述 | 百度智能云文档 (baidu.com)](https://cloud.baidu.com/doc/BCC/s/Ukbah1tj0) ## 四、自动备份 备份脚本: ``` #!/bin/bash backupdir=/usr/lib/app destDb=sale user=root password='ioT@$ray999' time=`date +%Y%m%d%H%M%S` mysqldump -u$user -p$password $destDb | gzip > $backupdir/$destDb$time.sql.gz #保留10日 find $backupdir -name "$destDb_*.sql.gz" -type f -mtime +10 -exec rm -rf {} \; ``` 创建可执行脚本文件: ``` vi backup.sh chmod 777 backup.sh ``` 配置定时执行: ``` crontab -e ``` 在crontab中增加一条指令; ``` 30 23 * * * /usr/lib/app//backup.sh ``` ## 五、自动上传云盘 安装python3及bypy; ``` sudo dnf install python3 ``` ``` pip3 install requests pip3 install setuptools pip3 install bypy ``` 在当前百度客户端,建一个bypy目录; ``` bypy info ``` ![](https://img.kancloud.cn/f9/68/f968dddf1c8c6e37b88d7ffbb47f000c_1053x161.png) 复制地址链接到浏览器,获得授权码: ![](https://img.kancloud.cn/47/43/474310fce21ca1bc0964a5052b26ffca_1366x736.png) 把授权码复制回终端: ![](https://img.kancloud.cn/86/db/86db84a7273d4ac4b02e2dd699083d7c_1051x170.png) 认证通过后, 待验证通过,就可以用bypy来跟百度云盘通讯了; ``` bypy upload /usr/lib/app/mysql20210912090000.sql bypy list ```