设为首页 收藏本站
查看: 877|回复: 0

[经验分享] mysql之备份恢复

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-10-3 11:13:13 | 显示全部楼层 |阅读模式
  一、为什么要备份?
  灾难恢复
  需求改变
  测试
  二、事先考虑的问题
  可以容忍丢失多长时间的数据?
  恢复要在多长时间内完成?
  是否需要持续提供服务?
  需要恢复什么,整个数据库服务器?单个数据库?一个或多个表?某个语句?
  三、备份类型
  根据是否需要数据库离线分为:
  冷备:cold backup,关闭mysql服务,或不允许读写请求
  温备:warm backup,备份的同时仅支持读请求
  热备:hot backup,备份的同时,业务功能不受影响,需要工具和数据库引擎支持
  根据要备份的数据范围可分为:
  完全备份:full backup,备份全部数据集,服务器、数据库等根据关注点觉定
  增量备份:incremental backup,上次完全备份或增量备份以来改变了的数据;
  差异备份:differential backup,上次完全备份以来改变了的数据
  根据备份数据或是文件,可以分为:
  物理备份:直接备份数据文件
  逻辑备份:备份表中数据和库代码等
  四、备份对象:
  数据:
  配置文件:经常备份/etc目录
  代码:存储过程、存储函数、触发器等;
  OS相关的配置文件:
  二进制日志:
  注:备份完成后在测试机上测试备份内容
  mysql> CHECK TABLES
  五、备份工具:
  mysqldump:
  逻辑备份工具
  InnoDB支持热备、MyISAM仅温备
  备份和恢复的速度较慢
  mydumper:
  多线程备份工具
  lvm-snapshot:
  接近于热备的工具
  物理备份
  备份和恢复较快
  SELECT INTO OUTFILE  通常备份单表
  LOAD DATA INFILE   使用LOAD加载恢复数据
  逻辑备份工具
  ibbackup:
  Xtrabackup:开源版ibbackup
  物理备份工具
  支持InnoDB热备、MyISAM温备
  速度快
  mysqlhotcopy:冷备工具
  六、恢复操作:
  1.停止MySQL服务
  2.记录服务的配置和文件权限
  3.复制备份文件至数据目录
  4.按需调整配置
  5.按需调整文件权限
  6.尝试启动服务
  7.装载逻辑备份
  8.检查和重放二进制日志
  9.确定数据还原正常完成
  10.以完全权限重启服务器
  例一:使用SELECT INTO OUTFILE备份恢复单表
  mysql> SELECT * FROM test1 INTO OUTFILE '/tmp/sql1.backup'  
  mysql> DELETE FROM TABLE
  
  myslq> LOAD DATA INFILE '/tmp/sql1.backup' INTO TABLE test1
  例二:mysqldump的MySQL客户端工具使用
  mysqldump可以备份整个服务器,单个或部分数据库,单个或部分表,表中某些行,存储过程,存储函   数,触发器
  能自动记录备份时的二进制日志文件及相应position
  -uusername  -hhostname  -ppassword
  -B, --databases dbname 备份指定数据库
  -x,--lock-all-tables 锁定所有表
  -l,--lock-tables 锁定单张表
  --master-data=[0|1|2]  0不启用,1启用,2记录正在访问的二进制日志并记录访问点
  --single-transaction  基于此选项能实现InnoDB热备,不需要同时使用--lock-all-tables;
  -A,--all-databases;备份整个服务器上的所有库
  mysql> FLUSH TABLES WITH READ LOCK;请求关闭所有表  
  mysql> SHOW ENGINE INNODB STATUS; 查看INNODB状态,确保不再有写入
  
  [root@localhost ~]# mysqldump -uroot -pmysql --databases TESTDB --lock-all-tables >         /tmp/backupdb.sql
  
  mysql> DROP DATABESE TESTDB;
  
  mysql> source /tmp/backupdb.sql
  
  mysql> UNLOCK TABLES; 释放锁
  注:恢复时注意当前所在库,如果原库不存在请新建并use.
  myslqdump热备-->   完全备份 + 增量备份 + 二进制
  # mysqldump -uroot -pmypass --single-transaction --master-data=2 --all-databases >  
    /backup/`date +%F`.sql     完全备份
  
  # mysqlbinlog --start-position=4579 --stop-position=4868 mysql-bin.000021 >
  
    /backup/`date +%F_%H`.sql   增量备份
  
  # mysqlbinlog --start-position=4868 --stop-position=5062 mysql-bin.000021 >
  
    /tmp/backup.sql   最近一次增量备份之后的数据从二进制文件导出
  备份恢复需要mysql服务器离线,
    mysql> SET sql_log_bin=0; 停止二进制日志  
    mysql> flush logs;  滚动日志
  
    mysql> source /backup/filename.sql   完全备份文件恢复
  
    mysql> source /backup/filename.sql   增量备份文件恢复
  
    mysql> source /backup/filename.sql   二进制文件恢复
  注:也可以使用mysql -uroot -pmypass < /backup/filename.sql 输入重定向恢复
  例三:使用二进制日志操作
  mysql> SHOW {BINARY| MASTER} LOGS; 查看二进制和主服务器日志  
  mysql> SHOW MASTER STATUS;查看当前正在使用的二进制日志及当前所处位置
  
  mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000021' FROM 3321(指定查看位置); 查看日志内容
  
  mysql> FLUSH LOGS; 滚动日志,可以理解为建立并使用新的二进制日志
  
  mysql> PURGE BINARY LOGS TO 'mysql-bin.000010';清除10以前的日志(不建议清除或备份后再清     除)
  误操作恢复:
  mysql> drop database test;  
  [root@charce data]# mysqlbinlog mysql-bin.000021 查看二进制日志的操作位置
  
  [root@charce data]# mysqlbinlog --stop-position=3447 mysql-bin.000021 > /tmp/a.sql
  mysql> source /tmp/a.sql;  
  mysql> SHOW DATABASES;
  
  mysql> SHOW TABLE test;
  注:在恢复的过程中如果继续有二进制日志写入,则需FLUSH LOGS之后再恢复。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-609072-1-1.html 上篇帖子: mysql备份以及恢复 下篇帖子: mysql 链式复制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表