物理备份:备份库和表对应系统文件
cp -r /var/lib/mysql /dbdir.bak
cp -r /var/lib/mysql/mysql /dbdir.bak
cp -r /var/lib/mysql/mysql/db.* /root/
逻辑备份:执行备份命令时,根据备份的库表生产对应的sql命令,把命令保存在指定的文件里。恢复时,执行保存sql命令,把命令保存到指定的文件里。恢复时,执行保存sql命令的备份文件把数据写回数据库里。
完全备份 备份所有数据 (通常包括3类对象:一张表里的所有数据 一个库的所有表里的所有数据 一个库的所有表 一台数据库服务器的所有数据
只备份新产生的数据
差异备份:备份自完全备份,后所有新产生的数据
增量备份:备份上此备份,所有新产生的数据
完全备份 mysqldum -u用户名 -p密码 库名 > 目录名/文件名.sql 单个库
mysqldump -uroot -p123456 –all-databases所有库 或 -A 备份所有库
mysqldump -uroot -p123456 -B 库 库2 备份多改库库
mysqldump -uroot -p123456 库名.表名 恢复单张表
mysql -uroot -p密码 库名< 路径/文件名.sql
mysql
完全备份 source profile
完全恢复 mysql
binlog
1.启用Mysql服务自带的binlog日志文件
2.安装第三三方软件
binlog日志
服务日志文件中的一种(默认没有开启) 记录除查询之外的sql命令
启用binlog日志
/etc/f 增加
log-bin
server_id =1~255
binlog-format=”mixed”
mysql 下生成两个文件 当日志文件大于500M 生成第二个文件
索引文件show slave status;
查看日志
mysqlbinlog host**-bin.000001
只记录插入更新删除记录
binlog可以自定义日志文件路径
修改/etc/f
偏移量
时间点
–start-position 数字
–stop-position 数字
–start-datetime时间点
–stop-datetime时间点
mysqlbinlog –start-position=1373 –stop-position=1788 /logdir/db50.000001 | mysql -uroot -p123456从日志位移偏量恢复数据
mysqlbinlog –start-datetime=”-07-17 15:09:07” –stop-datetime=”-07-17 15:11:04” /logdir/db50.000001 | mysql -uroot -p123456 从日志时间点恢复数据
手动生成新的日志文件
1)mysqldump -uroot -p123456 –flush-logs > db.sql 选项 完全备份后手动生成新的日志文件
2)登陆状态下执行flush log 直接生成新的日志文件
3)重启mysqld服务直接生成新的
show master status 显示当前记录sql命令的日志信息
mysql> purge master logs to “db50.000001”;
mysql>reset master
rm -rf /logdir/*
安装 percona 依赖包 libev perl-DBD-mysql perl-Digest-MD5
完全备份
innobackupex –user root –password 123456 –databases=”mysql performance_schema sys gamedb” /allbak –no-timestamp 备份具体库
完全恢复
要求数据库目录必须是空的
准备恢复数据(回滚备份目录下日志信息)
innobackupex –user root –password 123456 –databases=”mysql performance_schema sys gamedb” –apply-log /allbak 把这三个库也备份上
systemctl stop mysqld
rm -rf /var/lib/mysql/*
innobackupex –user root –password 123456 –databases=”mysql performance_schema sys gamedb” –copy-back /allbak
chown -R mysql:mysql /var/lib/mysql/
systemctl restart mysqldyum
对数据做增量备份
innobackupex –user root –password 123456 –incremental /newdir –incremental-basedir=/fullbak –no-timestamp 增量部分 在上次备份基础上
ncremental-dir=/newdir 合并增量1的日志序列号和数据
[root@host50 ~]# innobackupex –user root –password 123456 –apply-log –redo-only /fullbak –incremental-dir=/new2dir合并增量2的日志序列号和数据
[root@host50 ~]# rm -rf /newdir/ /new2dir
停止服务 删掉数据库全部文件
[root@host50 ~]# innobackupex –user root –password 123456 –copy-back /fullbak/ 恢复数据
把备份目录的数据拷贝到数据库目录并修改所有者和组为mysql
启动数据库服务 登陆查看数据
使用innobackupex完全备份文件恢复单个表
[root@host52 ~]# innobackupex –user root –password 123456 –databases=”db1” –no-timestamp 先备份表所在的库
恢复前要创建表 表结构必须跟备份的表一样
恢复单个表
建立表结构
alter table gamedb.a discard tablespace 删除表空间 a.ibd
导出备份好的表信息
innobackupex –user root –password 123456 –apply-log –export /gamedbbak
cp /gamedbbak/gamedb/a.{ibd,cfg,exp} /var/lib/mysql/gamedb/
拷贝表信息到 数据库文件
chown mysql:mysql /var/lib/mysql/gamedb/a.* 修改文件所有者,组
alter table gamedb.a import tablespace;导入表空间 (表名与之前备份的要相同)