分享点自己近年来接触MySQL数据备份这一块的关于小经验。数据是据库一个互联网公司的命脉,数据库的份方安全以及备案的完整性是至关重要的,所以我们需要在工作中要很熟练的关于掌握数据的备份与恢复,这也是一个合格的运维DBA必须具有的职业技能。 我这里简单总结MySQL的据库备份分为3种:分为冷备份,逻辑备份,份方热备份。关于 1、据库冷备份: 一般主要用于非核心业务,份方这类业务一般都是关于允许业务中断的,冷备份的据库特点就是数度快,恢复时也最为简单。份方通常直接复物理文件来实现冷备份。关于 1.1备份过程: ***关闭mysql服务 第二步就是据库把datas数据目录(包含ibdata1)和日志目录(包含ib_logfile0,ib_logfile1,ib_logfile2)复制到磁盘,或者本地的份方另一块磁盘里 1.2恢复过程: ***使用复制的亿华云数据目录和日志目录替换原有的目录 第二就是启动mysql 2、逻辑备份MySQLdump 生产场景备份的命令: 生产场景不同引擎mysqldump备份命令 myisam引擎企业生产备份命令(适合所有引擎或混合引擎): 提示:-F也可以不用,与--master-data有些重复。 innodb引擎企业生产备份命令:推荐使用的 提示:-F也可以不用。与--master-data有些重复。 --default-character-set=utf8 指定备份出的sql数据的字符集为utf8,当然,这个要提前知道线上的mysql库全部采用的字符集都是utf8,否则在恢复到线上的库会出现字符集不一致的问题出现乱码 提示:逻辑备份一般是数据迁移或者数据量很小时采用,逻辑备份采用的是数据导出的方式 2.1mysqldump库表等备份说明: 全备: 导出多个数据库: 导出一个test库的某张wjw01表: 只导出表结构: 只需要导出储存过程时: 只需要导出触发器: 只需要导出事件: 只需要导出数据: 要想在线上建立一台新的slave,则在master上执行如下命令: 提示:在mysql5.5里增加了一个新的参数:--dump-slave,使用该参数可在slave端dump数据,建立新的slave,其目的是源码库为了防止对主库造成过大的压力。 在slave上执行以下命令: 查看alls.sql 里面会记录slave上的那个点。 注意:--dump-slave用于在slave上dump数据,建立新的slave 2.2Mysqldump优缺点以及使用场景 优点: 缺点: 使用场景:对于MySQL数据库数据量不是很大的场景,建议使用。因为备份方便,简单灵活,易操作 当数据库特别的时候,比如30G以上时,备份MySQL数据时,也就建议不要采用mysqldump了,因为备份的时间以及恢复数据库的时间太长了,会对库表造成锁,高防服务器对线上的业务影响还是比较大的 2.3简单介绍下MySQL全量备份+增量备份binlog 注意:生产上强烈建议MySQL开启Row格式来记录binlog,尽管这样对磁盘的IO以及磁盘的空间的消耗是比较大,但是和数据的安全性、完整性相比,磁盘资源那都是小事 全量备份脚本内容: 说明:这个全量备份脚本,会在导出的时候锁住全局表,并且此时刷新产生一个新的bin-log,期间会产生写操作的等待,直到导出结束后才会写入新产生的bin-log文件,然后旧的bin-log 文件会被删除删除掉,一般在晚上2:00业务低峰期执行操作 进行本地bin-log增量备份 在执行完全量备份脚本后,就可以执行增量备份脚本了。 增量备份脚本思路很简单: 先mysqladmin -uroot -p123456 flush-logs 刷新新的binlog文件,此时mysql写入到新的binlog文件中。 然后把当前mysql数据库存放binlog的目录中抛去刚才***生成的binlog文件,其余旧的binlog文件全部cp到本地服务器/backup/binlog binlog的备份目录下。 ***在登录MySQL清除当前的binlog文件数减一 3.热备份与恢复 热备份的方式也是直接复制数据物理文件,和冷备份一样,但是热备份可以不停机直接复制,一般用于7*24小时不间断的重要核心业务。Mysql的社区版本热备份工具InnoDB Hot Backup是付费的,只能试用30天,商业版才可以***的使用, Percona公司发布一个xtrabackup热备工具,和付费的工具一样,支持在线热备(备份时不影响数据的读写)是商业工具InnoDB Hot Backup的一个很好的替代。 xtrabackup热备工具是一个开源的工具,他可以非常快速的备份和恢复mysql数据库。由于Xtrabackup支持备份innodb表,实际生产环境中我们使用的工具是innobackupex,它是对xtrabackup的一层封装。innobackupex脚本用来备份非 InnoDB 表,同时会调用 xtrabackup命令来备份 InnoDB 表,innobackupex的基本流程如下: 具体使用请参考:https://www.linuxidc.com/Linux/2018-08/153635.htm 关于MySQL数据库的备份方案到此处就介绍完了,如有不对,请及时指出。欢迎一起交流学习。 Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx 本文***更新链接地址:https://www.linuxidc.com/Linux/2018-08/153634.htm