当前位置:   article > 正文

MySQL 高级知识之使用 mysqldump 备份和恢复_mysql备份与恢复,用mysqldump

mysql备份与恢复,用mysqldump

一 前言

mysqldump是 MySQL 自带的备份工具,它可以实现对 MyISAM 表的温备份和对 innodb 表的热备份。但是它的还原速度很慢,在备份小型数据库时,使用很方便。

二 数据库备份类型

热备份 温备份 冷备份

  • 热备份:数据读写不受影响
  • 温备份:仅可以执行读操作
  • 冷备份:离线备份、读写均终止

物理备份 逻辑备份

  • 物理备份:复制数据文件
  • 逻辑备份:将数据导出成文本文件

完全备份 增量备份 差异备份

  • 完全备份:备份所有数据
  • 增量备份:仅备份上次完全备份或增量备份变化的数据
  • 差异备份:仅备份上次完全备份以来所有变化的数据

三 数据库备份

3.1 备份全库

  1. # 备份全库
  2. mysqldump -h192.168.1.11 -uroot -p123456 --all-databases > /opt/#{DATE}.sql

3.2 备份单库

  1. # 备份单库
  2. mysqldump -h192.168.1.11 -uroot -p123456 db-name > /opt/#{DATE}.sql
  3. # 还原单库
  4. mysql -uroot -p123456 db-name </opt/2021-11-12_10_29.sql

3.3 排除部分库备份

mysql -uroot -p'123456' -N -e "show databases;"|grep -Ev "information_schema|performance_schema|sys|mysql|database1"|xargs mysqldump -uroot -p'123456' --databases > /opt/#{DATE}.sql

3.4 备份脚本

创建备份脚本:vim backup.sh

  1. #!/bin/bash
  2. #备份 MySQL 数据库
  3. db_user=root
  4. db_password=123456
  5. # 排除库名称
  6. db_names="information_schema|mysql|performance_schema|sys"
  7. echo "MySQL 数据库备份开始时间:...............$(date "+%Y-%m-%d %H:%M:%S")">>/home/project/backup-mysql/logs.log
  8. mysql -u$db_user -p$db_password -N -e "show databases;"|grep -Ev $db_names|xargs mysqldump -u$db_user -p$db_password --databases |gzip > /home/project/backup-mysql/mysql-db-$(date "+%Y-%m-%d").sql.gz
  9. echo "MySQL 数据库备份结束时间:...............$(date "+%Y-%m-%d %H:%M:%S")">>/home/project/backup-mysql/logs.log

3.5 自动化备份脚本

创建备份脚本:vim backup.sh

  1. #!/bin/bash
  2. # 定义备份用户/密码
  3. DbUser=root
  4. DbPasswd=123456
  5. # 定义备份数据库
  6. DbName=("neworg_prod_project" "prod_project")
  7. # 定义备份目录
  8. Path=/home/project/backup-mysql/data
  9. # 定义备份数据保存天数 Mtime=3+1 天数也就是4天
  10. Mtime=3
  11. # 定时任务日志
  12. LogPath=/home/project/backup-mysql/db_backup.log
  13. Time=$(date +%F)
  14. CurrentPath=$(pwd)
  15. if ! [ -d ${Path} ];then
  16. mkdir ${Path}
  17. fi
  18. for i in ${DbName[@]};do
  19. if [ -d ${Path}/${Time} ];then
  20. cd ${Path}/${Time}
  21. else
  22. mkdir ${Path}/${Time} && cd ${Path}/${Time}
  23. fi
  24. mysqldump -f -x -u${DbUser} -p${DbPasswd} ${i} >${i}.sql
  25. zip ${i}.zip ${i}.sql
  26. rm -f ${i}.sql
  27. done
  28. cd ${Path} && find ${Path} -name '*.sql' -mtime +${Mtime}|awk -F"/" '{print $3}'|xargs rm -rf
  29. # 定时任务凌晨1点 自动添加
  30. if ! (grep -r ${CurrentPath}/${0} /var/spool/cron/root &>/dev/null);then
  31. echo >> /var/spool/cron/root
  32. echo "#DBServer: Backup Database" >> /var/spool/cron/root
  33. echo "0 0 1 * * ? bash ${CurrentPath}/${0} >> ${LogPath}" >> /var/spool/cron/root
  34. fi
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/459373
推荐阅读
相关标签
  

闽ICP备14008679号