Loading... <h1>Mysql备份I</h1> <p>I备份在什么时候会被需要</p> <pre>硬件故障 机器无法启动 机器突然消失了怎么办 业务出现异常 一定要先select 在操作 类似drop或delete的操作 攻击 程序bug 业务特殊需求 重要数据多处多次多版本备份 至少有2份远程备份文件2处本地备份</pre> <p>II哪些东西需要备份</p> <pre>My.cnf innodb大小写不一样起不来 和数据放到一起备份(机器突然消失了怎么办) Cron 也要备份 数据库中的数据 Logfiles and position 配置文件 my.cnf和cron 要经常验证备份的有效性</pre> <p>III什么时候开始备份</p> <pre>负载小的时候 业务少的时候</pre> <p>IV备份数据放到哪里</p> <pre>优先考虑本地 数据大的时候怎么备份 专用存储 IPSAN NAS 大容量PCServer 分布式文件系统HDFS 磁带或光盘等其他介质</pre> <p>V怎样备份</p> <p>V.I备份策略的确定</p> <pre>1数据恢复或还原的速度 2数据丢失的允许程度 3数据的大小与成本的平衡 制定备份计划 备份周期 备份容量 恢复速度评估 对于小型等级业务量的系统来说,直接每天全量备份,定期删除就可以了50G< >50G 主从 对于中等级别业务量的系统来说,备份策略可以这么定:第一次全量备份,每天一次增量备份,每周再做一次全量备份,如此一直重复。而对于重要的且繁忙的系统来说,则可能需要每天一次全量备份,每小时一次增量备份,甚至更频繁。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在 slave 机器上做备份 出现操作系统崩溃或电源故障时,InnoDB自己可以完成所有数据恢复工作。应遵从下面的指导: · 一定用--log-bin或甚至--log-bin=log_name选项运行MySQL服务器,其中日志文件名位于某个安全媒介上,不同于数据目录所在驱动器。如果你有这样的安全媒介,最好进行硬盘负载均衡(这样能够提高性能)。 · 定期进行完全备份,使用mysqldump命令进行在线非块备份。 · 用FLUSH LOGS或mysqladmin flush-logs清空日志进行定期增量备份。</pre> <p>V.II备份方式的选择</p> <pre>热备 不停业务的备份 Xtrabackup 双机热备份 双机热备份通过日志文件来传输入服务器上数据的变化。主服务器进程在数据被更新时触发。并将相应的日志文件发送到从服务器。从服务器进程接收到主服务器发送的日志文件,做出相应的更改操作 主服务器的配置 编辑my.cnf文件,定义到mysqld,加入内容 Server-id=1 Log-bin=c:/log-bin.log Binlog-do-db=dbname 创建dbname数据库 进入mysql操作,为从服务器授权访问数据库的用户名和密码 grant replication slave on *.* to ‘root’@从服务器IP identified by ‘密码’ 重启MySQL服务器,使更改生效 重新进入到MySQL的命令,执行命令检测配置是否生效: Show master status\G 从服务器的配置 在从服务器中创建与主服务器中相同的数据库 找到从服务器中的my.cnf文件,定位到[mysqld],加入以下内容: Server-id=2 Master-host=主服务器IP Master-port=3306(主服务器端口号) Master-user=root(主服务器用户名) Master-password=密码(主服务器密码) Master-connect-retry=60(等待尝试重新连接的秒数) 重新启动MySQL服务器,使配置生效 进入到从服务器MySQL操作,执行启动进程 Slave start 冷备 停掉业务或DB进行备份 停止的库上做tar,copy,rsync等备份</pre> <p>V.III备份方式</p> <p>V.III.I逻辑备份 logical backup 导出为.sql文件的备份</p> <pre>MySQLdump MySQLdumper</pre> <p>V.III.II物理备份 physical backup对文件进行备份</p> <pre>备份binlog, 基于slave的xtrabackup,tar,copy,mylvmbackup,Rsync</pre> <p>V.III.III本地备份 local backup</p> <pre>优先考虑本地 远程备份网络和恢复速度会有影响</pre> <p>V.III.IV远程备份 remote backup</p> <p>V.III.V全量备份 full backup</p> <pre>不依赖文件的存盘属性来确定备份哪些文件。 任何现有的标记都被清除,每个文件都被标记为已备份,清除存盘属性 备份速度慢,恢复时间长,使用空间大</pre> <p>V.III.VI增量备份 incremental backup</p> <pre>做完全量备份之后,开始做的binlog备份 备份上一次的完全备份后发生变化的所有文件 备份速度快,恢复时间长,使用空间小 如果要还原一个备份档案,必须把所有增量备份的磁盘都找一遍,直到找到为止,要复原整个档案系统,那就得先复原最近一次的完整备份,然后复原一个又一个的增量备份。</pre> <p>V.III.VII差异备份(differential backup)</p> <pre>是复制上次全备份以来所有变更数据的一种备份 恢复速度快,恢复需要的备份档少 一个档案只要自上次完整备份后,曾被更新过,那么接下来每次做差异备份时,这个档案都会被备份直到下一次完整备份为止。 差异备份过程中,只备份有标记的那些选中的文件和文件夹 不将文件标记为已经备份备份后不标记为已备份文件,换言之,不清除存盘属性 这表示差异备份中的档案,都是自上次完全备份之后,曾被改变的档案。如果要复原整个系统,只要先复原完全备份,再复原最后一次的差异备份即可。 号 mysqladmin flush-logs 1.运行mysql的时候加上 --log-update=/tmp/mysql.update.log 2.给差分文件创建编号 mysqladmin flush-logs 3.恢复按编号从小到大的顺序 mysql -D mydatabase < /tmp/mysql.update.log.001</pre> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信