目录
1备份
1.1备份方式
裸文件(物理)备份:(授之以鱼)
文件内容是可读的,一般是文本文件。内容一般是由一条条SQL语句,或者是表内实际数据组成。这类方法的好处是可以观察导出文件的内容,一般适用于数据库的升级、迁移等工作。但其缺点是恢复所需要的时间往往较长。
逻辑备份:(授之以渔)
保存以逻辑数据库结构(create database和create table)和内容(insert)表示的信息,文件内容是可读的,一般是文本文件。内容一般是由一条条SQL语句,或者是表内实际数据组成。这类方法的好处是可以观察导出文件的内容,一般适用于数据库的升级、迁移等工作。但其缺点是恢复所需要的时间往往较长。你可以在其中编辑数据的值和表的结构,或者在不同机器架构上重新创建数据。
冷备(cold backup)
关闭mysql服务的情况下,复制相关数据库物理文件即可
热备(hot backup)
数据库运行中直接备份,对数据库操作没有任何影响
最普遍使用的方式
异地备份
scp
mysqldump
rsync(开源且免费,运行在tcp/ip)
Rsync远程同步_张会鑫的博客的博客-CSDN博客_rsync
异地备份的时间:考虑带宽,磁盘io
1.2备份数据库的内容
完全备份:对数据库进行一个完整备份
增量备份:在上一次完全备份的基础上,对更新的部分进行备份
差异备份:
日志备份:是指对MySQL数据库二进制日志的备份,通过对一个完全备份进行二进制日志的重做(replay)来完成数据库的point-in-time的恢复工作。
1.3问题
假设有一天5:30小王进行了全备,7:00的时候数据库被删除了,怎么还原数据库?
根据全备和二进制日志
模拟一下环境,来更加了解备份过程
备份:mysqldump
还原:mysql
查看二进制日志
基于时间点
1.删除所有日志文件
show BINARY LOGS;
reset master;
2,选择一个有数据的库,进行完备
create database meikoko;#建表
use meikoko;
CREATE TABLE PLAYERS(....);#创建有数据的库
insert into meikoko() values();
flush logs;#产生一个新的日志文件
mysqldump -uroot -p123456 meikoko PLAYERS >/scout/players_backup.sql##进行完备
3.做DMl操作增加或者修改数据
insert into meikoko() values();
4.做删除数据库的表的操作
drop table PLAYERS;
5.恢复全备
mysql -uroot -p123456 meikoko <players_backup.sql
6根据二进制文件做增量恢复
mysqlbinlog -v mysql_fns_ab-bin.000002|grep -C 20 "DROP"##查看起始时间和结束时间
[ root@master mysql]# mysqlbinlog-v --start-datetime="2022-05-25 10:28:46”--stop -datetime="2822-5-25 10:35:36" mysql_fns_ab-bin.000002 | mysql -uroot -p123456sc
2.主从复制
1.1为什么需要主从复制?
1.在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
2.做数据的热备
3.架构的扩展。业务量越来越大,