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

[经验分享] mysql数据备分与步聚

[复制链接]

尚未签到

发表于 2018-10-4 11:02:13 | 显示全部楼层 |阅读模式
  mysql备份和恢复:
  1、灾难恢复;
  2、审计;
  3、测试;
  备份:目的用于恢复;对备份数据做恢复测试;
  备份类型:
  根据备份时,数据库服务器是否在线:
  冷备:cold backup
  温备:warm backup
  热备:hot backup
  根据备份的数据集:
  完全备份:full backup
  部分备份: partial backup
  根据备份时的接口(直接备份数据文件还是通过mysql服务器导出数据):
  物理备份:直接复制(归档)数据文件的备份方式;physical backup
  逻辑备份:把数据从库中提出出来保存为文本文件;logical backup
  mysqldump
  根据备份时是备份整个数据还是仅备份变化的数据:
  完全备份:full backup
  增量备份:incremental backup
  差异备份:differential backup
  备份策略:
  选择备份方式
  选择备份时间
  考虑到恢复成本
  恢复时长
  备份成本:
  锁时间
  备份时长
  备份负载
  备份对象:
  数据
  配置文件
  代码:存储过程,存储函数,触发器
  OS相关的配置文件,如crontab配置计划及相关的脚本
  跟复制相关的配置;
  二进制日志文件
  备份工具:
  mysqldump:逻辑备份工具
  InnoDB热备、MyISAM温备、Aria温备
  备份和恢复过程较慢
  mysqldumper: 多线程的mysqldump
  很难实现差异或增量备份;
  lvm-snapshot:
  接近于热备的工具:因为要先请求全局锁,而后创建快照,并在创建快照完成后释放全局锁;
  使用cp、tar等工具进行物理备份;
  备份和恢复速度较快;
  很难实现增量备份,并且请求全局需要等待一段时间,在繁忙的服务器上尤其如此;
  SELECT clause INTO OUTFILE '/path/to/somefile'
  LOAD DATA INFILE '/path/from/somefile'
  部分备份工具, 不会备份关系定义,仅备份表中的数据;
  逻辑备份工具,快于mysqldump
  Innobase: 商业备份工具, innobackup
  Xtrabackup: 由Percona提供的开源备份工具
  InnoDB热备,增量备份;
  MyISAM温备,不支持增量;
  物理备份,速度快;
  mysqlhotcopy: 几乎冷备
  mysqldump:
  mysqldump [options] [db_name [tbl_name ...]]
  备份单个库:mysqldump [options] db_name
  恢复时:如果目标库不存在,需要事先手动创建
  --all-databases: 备份所有库
  --databases db1 db2 ...: 备份指定的多个库
  注意:备份前要加锁
  --lock-all-tables:请求锁定所有表之后再备份,对MyISAM、InnoDB、Aria做温备
  --single-transaction: 能够对InnoDB存储引擎实现热备;
  备份代码:
  --events: 备份事件调度器代码
  --routines: 备份存储过程和存储函数
  --triggers:备份触发器
  备份时滚动日志:
  --flush-logs: 备份前、请求到锁之后滚动日志;
  复制时的同步位置标记:
  --master-data=[0|1|2]
  0: 不记录
  1:记录为CHANGE MASTER语句
  2:记录为注释的CHANGE MASTER语句
  使用mysqldump备份:
  请求锁:--lock-all-tables或使用--singe-transaction进行innodb热备;
  滚动日志:--flush-logs
  选定要备份的库:--databases
  记录二进制日志文件及位置:--master-data=
  恢复:
  建议:关闭二进制日志,关闭其它用户连接;
  备份策略:基于mysqldump
  备份:mysqldump+二进制日志文件;
  周日做一次完全备份:备份的同时滚动日志
  周一至周六:备份二进制日志;
  恢复:
  完全备份+各二进制日志文件中至此刻的事件
  对MySQL配置文件,以及与MySQL相关的OS配置文件在每次修改后都应该直接进行备份;
  备份步骤:
  1、请求全局锁,并滚动日志
  mysql> FLUSH TABLES WITH READ LOCK;
  mysql> FLUSH LOGS;
  2、做二进制日志文件及位置标记(手动进行);
  # mysql -e 'show master status' > /path/to/somefile
  3、创建快照卷
  # lvcreate -L   -s -n    -p r  /path/to/some_lv
  4、释放全局锁
  mysql> UNLOCK TABLES;
  5、挂载快照卷并备份
  # cp
  6、备份完成之后,删除快照卷
  恢复:
  1、二进制日志保存好;
  提取备份之后的所有事件至某sql脚本中;
  2、还原数据,修改权限及属主属组等,并启动mysql
  3、做即时点还原
  mylvbackup: perl脚本,快速基于Lvm备份mysql
  xtrabackup:
  备份 注意:
  1、将数据和备份放在不同的磁盘设备上;异机或异地备份存储较为理想;
  2、备份的数据应该周期性地进行还原测试;
  3、每次灾难恢复后都应该立即做一次完全备份;
  4、针对不同规模或级别的数据量,要定制好备份策略;
  5、二进制日志应该跟数据文件在不同磁盘上,并周期性地备份好二进制日志文件;
  从备份中恢复应该遵循步骤:
  1、停止MySQL服务器;
  2、记录服务器的配置和文件权限;
  3、将数据从备份移到MySQL数据目录;其执行方式依赖于工具;
  4、改变配置和文件权限;
  5、以限制访问模式重启服务器;mysqld的--skip-networking选项可跳过网络功能;
  方法:编辑my.cnf配置文件,添加如下项:
  skip-networking
  socket=/tmp/mysql-recovery.sock
  6、载入逻辑备份(如果有);而后检查和重放二进制日志;
  7、检查已经还原的数据;
  8、重新以完全访问模式重启服务器;
  注释前面在my.cnf中添加的选项,并重启;
  SELECT clause INTO OUTFILE ''
  LOAD DATA INFILE '' INTO TABLE tb_name


运维网声明 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-611789-1-1.html 上篇帖子: ​Mysql数据库优化总结 下篇帖子: MySQL主从复制实战
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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