栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mysql单个数据库备份和恢复、mysqldump、定时备份

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql单个数据库备份和恢复、mysqldump、定时备份

prod数据库异常时,处理故障思路
  1. 暂停业务避免数据的二次伤害

  2. 找一个临时的库,恢复前一天的全备

  3. 截取${完整备份时间点}到${异常发生时间点}之间的binlog,恢复到临时库

  4. 测试可用性和完整性

  5. 开启业务前的两种方式
    1)直接使用临时库顶替原生产库,前端应用割接到新
    2)将误删除的表单独导出,然后导入到原生产环境

  6. 测试可用性和完整性

  7. 对外开放业务

  • 数据库备份策略:mysqldump+复制bin logs

先使用mysqldump对数据库进行完全备份, 然后定期备份BINARY LOG达到增量备份的效果

一、查看当前使用的binlog

mysql>show master status;

二、全备
[root@db01 ~]# mkdir /backup 
## 文件太大时可以压缩 gzip ,但是gzip不属于mysql独有的命令,可以利用管道 

[root@db01 ~]# mysqldump -uroot -p --master-data=2 --single-transaction --lock-tables -F -R --databases xcapp_fund_open |gzip > /mysqlbak/fund_open_$(date +%F).sql.gz 

## 没有从库的时候,加参数--set-gtid-purged=on报这个错Error: Server has GTIDs disabled. [root@db01 ~]# mysqldump -uroot -p --master-data=2 --single-transaction --lock-tables -F -R --databases xcapp_fund_open |gzip > /mysqlbak/fund_open_$(date +%F).sql.gz
语法:mysqldump  -h 服务器  -u用户名  -p密码  选项与参数 > 备份文件.sql
此命令涉及到的选项与参数:
  1. --master-data=2    备份文件中 change master语句是被注释的,如果是想扩展一个从库,值为1,且change master语句是不被注释的,默认为1

  2. --single-transaction    指定 --single-transaction 参数,那么导出过程中只能保证每个表的数据一致性(利用多版本特性实现,目前只能针对InnoDB事务表)。
    比如有一个大表,mysqldump对该表的导出需要1分钟,那么在这1分钟的过程中,该表时可以被正常访问的。
  3. --lock-tables   如果是备份所有库,那么备份到某个库时只锁某个库,其他库可写

  4. -F  备份的同时刷新binlog
  5. -R  备份存储过程等
  6. --databases 加了后导入时不需要创建数据库,不加得手动create database 数据库
三、自动备份脚本
[root@VM-12-10-centos sh]touch mysql_bak.sh
[root@VM-12-10-centos sh]vi /mysql_bak.sh
#!/bin/bash
back_dir=/mysqlbak
back_file=study_$(date +%F).sql.gz
user=root
 
if [ ! -d /backup ];then
 mkdir -p /backup
fi
 
 
# 备份并截断日志
mysqldump -u${user} -p --master-data=2 --single-transaction --lock-tables -F -R --databases study |gzip > ${back_dir}/${back_file}
 
# 只保留最近一月的备份
cd $back_dir
find . -mtime + 30 -exec rm -rf {} ;

参考:Centos7中find命令的用法,以及find+exec,find+xargs_Kong_Cc的博客-CSDN博客_centos7find命令

 ## -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
 ## -exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

手动测试
[root@VM-12-10-centos sh]# chmod a+x /mysql_bak.sh

[root@VM-12-10-centos sh]# chattr +i /mysql_bak.sh

[root@VM-12-10-centos sh]# bash /mysql_bak.sh

chmod a+x /mysql_bak.sh意思是给所有的用户添加执行mysql_bak.sh这个文件的权限

a是指所有的用户组,包括root用户组,文件拥有者的用户组,还有其他用户组。
+x是指添加执行权限。
+x是执行权限,+r是阅读权限,+w是写入权限

chattr +i /mysql_bak.sh意思是让一个文件“不能被删除、改名,设置连接也无法写入或添加据。” 

四、脚本执行时间设置
配置cron:
[root@egon ~]# crontab -e 0 2 * * * /mysql_bak.sh

Linux crontab 命令 | 菜鸟教程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035077.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号