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

[经验分享] mysql进阶(一) mysql备份

[复制链接]

尚未签到

发表于 2018-10-9 06:38:50 | 显示全部楼层 |阅读模式
备份的目的:  
    实现灾难恢复:误操作、硬件故障、软件故障、自然灾害、******
  
注意的要点:
  
    1、能够容忍丢失多少数据
  
    2、恢复数据所用的时间
  
    3、备份需要的时间
  
    4、是否对业务有影响
  
    5、备份时服务器负载
  
备份类型
  
    完全备份:备份整个数据库的数据
  
    部分备份:备份指定的一部分数据
  
    增量备份:备份上一次备份后增加的数据
  
    差异备份:备份从最后一次完全备份后起发生改变的数据
  
    热备份:读写操作均可以进行
  
    温备份:只读
  
    冷备份:不可写,不可读
  
    逻辑备份:从数据库中导出数据,与存储引擎无关
  
    物理备份:直接复制数据文件
  

  
备份需要:
  
    数据
  
    二进制日志,事务日志
  
    配置文件
  
备份的设计方案:
  
    数据:完全+增量、完全+部分
  
    备份手段:逻辑或物理
  

  

  
常用的备份工具:
  
    mysqldump:mysql自带的备份工具,逻辑备份、完全备份、部分备份、温备
  
    lvm2快照:几乎热备,需要借助cp,tar等工具完成,lvm2只负责生成快照
  
    xtrabackup:支持对InnoDB的热备份(物理备份
  
    tar,cp:冷备份
  

  

  
    mysqldump工具使用:逻辑备份工具,在数据小于1G时可以使用,数据大于1G之后则不建议使用
  mysqldump [OPTIONS] database [tables]#不会自动创建数据库
  mysqldump [OPTIONS] --databases DB1 [DB2 ...]#备份指定数据库,会自动创建数据库
  mysqldump [OPTIONS] --all-databases #备份所有数据库,会自动创建数据库
  常用选项:
  -u#用户
  -p#密码
  --flush-logs #执行二进制日志文件滚动
  --single-transaction#对InnoDB存储引擎进行热备份(只有InnoDB支持)
  --master-data=2   #在数据文件中,记录备份那一刻二进制日志文件的位置,
  并注释主要用于参考,多用于进行基于时间点还原
  --lock-all-tables    #在执行备份时锁定所有库的所有表(二选一,必须)
  --lock-tables    #对单个数据库在备份时锁定所有表(二选一,必须)
  
        例:mysqldump -uroot -p123.com --databases --lock-tables --flush-logs
  
            --master-data=2 test > /tmp/mysql.back.`date "+%F__%R"`
  

  
    LVM2快照实现数据几乎热备
  
        实现条件:mysql数据存储在LVM逻辑卷中,需要有足够的空间做快照
  备份策略:
  1、创建全局锁
  mysql> FLUSH TABLES WITH READ LOCK;
  2、记录二进制日志文件及事件位置
  mysql -uroot -p123.com -e 'FLUSH LOGS;'#进行日志滚动
  mysql -uroot -p123.com -e 'SHOW MASTER STATUS;'>/tmp/test.`date +%F`
  #记录二进制日志位置
  3、创建LVM快照
  lvcreate -L 1GB -s -n test_snap /dev/vg_test/lv_test
  -L 1G #快照大小,一般和数据文件差不多
  -s    #表示创建快照
  -n test_snap #快照名
  /dev/vg_test/lv_test #要创建快照的逻辑卷
  4、释放全局锁
  mysql> UNLOCK TABLES;
  5、挂载快照卷
  mount /dev/vg_test/test_snap /mnt
  6、备份数据并删除快照卷
  cp -a /mnt/date/mysql /tmp#复制数据文件
  umount /mnt#卸载快照卷
  lvremove /dev/vg_test/test_snap #删除快照
  7、制定好备份计划,每隔一段时间对二进制文件进行备份
  每隔一段时间对mysql的二进制文件进行备份,以实现将来的基于时间点还原数据
  例:cp -p /data/mysql-bin.000007 /tmp/mysql_7.sql#备份二进制日志
  8、还原
  
            还原时只需要将数据文件复制到mysql的数据目录中,在使用二进制日志对数据进行时间点还原
  例:cp -a /tmp/mysql /data/mysql#还原数据
  mysql> source /tmp/mysql_7.sql;#进行基于时间点的还原
  

  

  xtrabackup实现mysql热备:
  注意:xtrabackup只能对InnoDB实现热备和增量备份
  https://www.percona.com/downloads/XtraBackup/LATEST/#下载地址
  安装:
  1、配置好epel源
  2、yum -y localinstall percona-xtrabackup-2.3.2-1.el6.x86_64.rpm    #安装
  

  备份工具:
  xtrabackup包含两个主要的工具,即xtrabackup和innobackupex
  innobackupex:是xtrabackup重封装的Perl脚本,能对innodb和myisam备份,
  对myisam不能实现热备和增量备份
  xtrabackup:xtrabackup只能备份innodb和xtradb两种引擎的表,
  而不能备份myisam引擎的表
  innobackupex基本使用
  常用参数:
  --help#查看帮助信息
  --backup#进行备份操作,可省,默认为执行备份操作
  --apply-log#恢复前必须的整理工作
  --defaults-file#指定配置文件路径,可省,会自动到数据库中读取
  --redo-only #在做整理操作时,未提交的数据不进行回滚,做增量备份恢复时必须加的选项
  --copy-back#执行还原操作
  --incremental#执行增量备份
  --user=name#指定用户名,默认为root
  --host=name#指定主机名,默认为host
  --port=#指定端口,默认为3306
  --password=name#指定密码,默认为空
  --databases='db1 bd2' #备份指定的数据库,
  --defaults-file=#指定配置文件,可省
  --no-timestamp=#自定义备份目录名
  incremental-basedir=#基于那一次备份做增量备份
  
    使用实例:
  innodb_file_per_table=1    #在mysql配置文件中添加,表示每个表使用单独的表空间文件
  datadir=/usr/local/mysql/data#在mysql配置文件中添加,表示指定数据文件位置
  mkdir /backups#创建备份文件存放目录
  
    全库完全备份:
  innobackupex --user=root --password=123.com /backups/
  /backups/#备份文件存放目录
  注意:结尾出现completed OK!则为成功,否则则为错误
  
    还原一个完全备份:
  innobackupex --apply-log /backups/2017-02-20_04-40-44/#对备份文件进行整理
  innobackupex --copy-back /backups/2017-02-20_04-40-44/#还原数据
  chown mysql:mysql /usr/local/mysql/*#修改权限
  
    增量备份:
  innobackupex --user=root --password=123.com  --incremental /backups/
  --incremental-basedir=/backups/2017-02-20_04-40-44/
  
            /backups/#增量备份存储位置
  --incremental-basedir#指定基于哪一个备份文件进行增量备份,通常都是上一个增量备份
  
    增量备份还原:
  
        innobackupex --apply-log  --redo-only /backups/2017-02-20_05-01-49/#整理完全备份
  
        innobackupex --apply-log  --redo-only /backups/2017-02-20_05-01-49
  
               --incremental-dir=/backups/2017-02-20_05-04-34#整理第一个增量备份
  
        innobackupex --copy-back /backups/2017-02-20_05-01-49/#还原数据
  
    部分备份:
  
        innobackupex --databases="testdb mysql" /backups/ --user=root --password=123.com
  
        #备份testdb和mysql数据库,不管备份那个数据库都应该备份mysql数据库
  
    还原部分备份:
  
        innobackupex --apply-log /backups/2017-02-20_05-24-07/#准备
  
        innobackupex --copy-back /backups/2017-02-20_05-24-07/#还原
  
        chown mysql:mysql /usr/local/mysql/*#修改权限
  




运维网声明 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-617930-1-1.html 上篇帖子: MySQL基础应用 下篇帖子: 12.关于mysql事物。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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