五、数据库的备份****
数据的备份是我们日常工作中最重要的一部分(没有之一)****
1、程序错误,防开发
2、误操作。用rsync要注意不要用源文件去同步
3、计算机损坏。服务器尽量是在保修期内,延保,
4、磁盘损坏,raid
5、不可抗力。在建数据中心的一般是建多个备用,遵循的原则是两地三中心
(两个地区,三中心)
数据备份要考虑经济成本原则****
1、企业不差钱 :多做数据中心
2、企业差钱:你可以用公有云做好的软支持(软件层次尽量保证他的安全)
数据备份类型:****
物理与逻辑角度分为:****
物理备份,直接将我的数据库安装路径打包备份。
逻辑备份,保存的是软件的操作过程或者相关文件。
从形式分为:冷备份 关机,复制粘贴(打包)****
热备份 在业务进行时不停机,msyql自带的mysqldump工具支持innodb引擎的热备
温备份 在执行备份的时候,锁库缩表。(innodb是行级缩表,myisam是表级缩表)
从策略上分:****
全备:把所有的数据库和表统一备份一遍
增备:只复制新增的,比较的前一天的
差异化备份:比较上一次全备的内容进行备份,不是比较前一天的
公司的业务量,中小型公司数量是几十个GB即可 。压缩的比例是4-8倍
备份命令****
mysqldump 热备 5.7以后以后的版本需要加上--set-gtid-purged=OFF避免出现警告信息
mysqldump -uroot -p123123 --set-gtid-purged=OFF yun1 >/backup/yun1.sql
指定具体某个库--databases (-B)
mysqldump -uroot --set-gtid-purged=OFF --databases yun1 >/backup/yun1.sql
备份多个库:mysqldump -uroot --set-gtid-purged=OFF --databases yun1 yunjisuan1 >/backup/yun.sql
备份某一个表:不用--database(-B)默认把第一个字段当初库,第二字段是表
mysqldump -uroot --set-gtid-purged=OFF yun1 t100w >/backup/yun.sql
导入的时候需要加库名
全备所有数据库--all-databases (-A)
mysqldump -uroot -p123123 --opt --all-databases --set-gtid-purged=OFF >/backup/all.sql
mysqldump -uroot -p123123 --opt -A --set-gtid-purged=OFF |gzip -9>/backup/all_$(date +%F).sql.gz
备份的压缩
mysqldump -uroot --opt --all-databases --set-gtid-purged=OFF |gzip -9>/backup/all_$(date +%F).sql.gz
备份表结构:mysqldump -uroot -p123123 --set-gtid-purged=OFF -d yun1 benet > b.sql
导入数据两种方式****
一种登录mysql,source表文件:source /backup/yun1.sql;
在Linux重定向方式:mysql -uroot -p123123 < /backup/yun1.sql
mysql -uroot -p123123 yun1< /backup/yun1.sql
备份脚本****
#!/bin/bash
[ -d /backup ] || mkdir -p /backup
for i in mysql -uroot -p123123 -e "show databases" 2>/dev/null |sed '1d' |egrep -v "schema|sys|mysql"
do
for a in mysql -uroot -p123123 -e "use $i;show tables" 2>/dev/null |sed '1d'
do
mysqldump -uroot -p123123 --set-gtid-purged=OFF ii ia>/backup/i_i\_i_a_$(date +%F).sql &>/dev/null
done
done
以上的方式算是全备
一般是采用全备+增备的方式
全备用mysqldump,增备用binlog日志
全备后,根据全备恢复情况,再用binlog日志提取恢复的内容
mysqlbinlog --skip-gtids --stop-datetime='23-03-25 11:24:22' mysql-bin.000008>yun3.sql
--start-position
--start-datetime