菜鸟学Linux 第079篇笔记 mysql备份lvm
admin
2023-05-28 14:01:34
0

菜鸟学Linux 第079篇笔记 mysql备份lvm




内容总览

上节知识点补充

单表的导出导入

LVM创建快照实现数据库备份






上节少了一点知识点

使用mysqldump备份还原时 要临时将sql_log_bin关闭(临时性的关闭二进制日志记录)

因为还原时所生成的二进制日志对于下一次备份时是没有用的,所以在还原时要关闭二进制

日志记录  切记切记

SET sql_log_bin=0;   关闭


导入使用

mysql> \. /path/backup.sql


SET sql_log_bin=1;  开启


mysqldump 

--databases DB1,DB2

--all-databases

--flush-logs

--routines

--triggers

--master-data={0|1|2}


MyISAM 温备份

--lock-all-tables

--lock-table


InnoDB 热备份

--single-transaction



逻辑备份

1. 浮点数据丢失精度;

2. 备份的数据更点用存储空间,压缩后可大大节省空间

3. 不适合对大数据库做完全备份


INNODB

SHOW ENGINES INNODB STATUS;


mvcc, REPEATABLE-READ

--single-transaction




直接将表导出不添加任何信息

mysql> SELECT * INTO OUTFILE '/path/file_name.txt' FROM tb_name [WHERE]

mysql> SELECT * INTO OUTFILE '/tmp/tutor.txt' FROM tutors;

(注意所给的系统路径 必须mysql用户可以访问的目录 )


还原导出的表

导入之前需要重新建立表,和对应的列名称及其属性

mysql> CREATE TABLE tutor LIKE tutors;

mysql> LOAD DATA INFILE '/tmp/tutor.txt' INTO TABLE tutor;


此种方式仅做单张表备份,速度快 (且不会写进二进制日志文件里)





几乎热备 LVM

snapshot


前提

1. 数据文件要在逻辑卷上

2. 此逻辑卷所在卷组必须有足够空间使用快照卷

3. 使用快照热备 数据文件和事务日志必须在一个逻辑卷里



1. 锁表

mysql> FLUSH TABLES WITH READ LOCK;

mysql> FLUSH LOGS;

mysql> SHOW MASTER STATUS;


此时切记不要退出会话, 要新建立一个会话执行如下命令


# mkdir /backup

# mysql -e "SHOW MASTER STATUS\G;" > /backup/master-`date +%F`.info


2. 创建快照并备份数据

# lvcreate -L 50M -s -p r -n mydata-snap /dev/myvg/mydata


                释放表锁

mysql> UNLOCK TABLES;


# mount /dev/myvg/mydata-snap /mnt/ -o ro

# mkdir /backup/full-backup-`date +%F`

# cp -a /mnt/data/* /backup/full-backup-2017-01-13/

# rm -rf /backup/full-backup-2017-01-13/mysql-bin.*

(我这里是模拟的,其实二进制日志不应该也在数据文件里的所以删除掉)

# cd

# umount /mnt

# lvremove --force /dev/myvg/mydata-snap


3. 备份二进制日志文件

# cat /backup/master-2017-01-13.info

会在此里边查找到位置我的是107

二进制日志文件是mysql-bin.000005


# mysqlbinlog --start-position=107 /mydata/data/mysql-bin.000003

此句在于找出其开始时间,下一句是备份


# mysqlbinlog --start-datetime='2017-01-13' mysql-bin.000003 

mysql-bin.000004 mysql-bin.000005...  > /backup/binary/binary-`date %F`.sql



4. 模拟数据库损坏并还原

将数据库里所有信息删除

# service mysqld stop

# rm -rf /mydata/data/*

# killall mysqld


实现还原

# cp -a /backup/full-backup-2017-01-13/* /mydata/data/

# ls /mydata/data

# service mysqld start


5. 即时点还原(导入二进制日志文件)

mysql> SET sql_log_bin=0;

mysql> SOURCE /backup/binary-2017-01-13.sql

mysql> SET sql_log_bin=1;



总结步骤

1.打开会话,施加读锁,锁定所有表

mysql> FLUSH TABLES WITH READ LOCK;

mysql> FLUSH LOGS;


2.通过另一个终端,保存二进制日志文件及相关位置信息

# mysql -uroot -p -e "SHOW MASTER STATUS\g" > /path/master-`date +%F`.info


3.创建快照

# lvcreate -L # -s -p r -n LV_name /dev/path/source-lv


4.释放锁

mysql> UNLOCK TABLES;


5.挂载快照卷,备份

mount 

cp


6.删除快照卷


7.增量备份二进制日志


8.还原时一定要记得将二进制日志给临时性的关闭掉



InnoDB 数据库一定要记得使用了

innodb_file_per_table           | ON


要不然备份单个数据库使用快照这种方式就比较麻烦了


创建快照来备份数据库比较适合进行所有库备份




相关内容

热门资讯

房主任塌房,互联网装不下“农村... 作者/富十几 编辑/章鱼房主任,塌房了。这些天,只要你打开社交平台就会发现,这位50岁脱口秀演员风评...
美媒爆料:特朗普与美防长爆发激... 据《华盛顿邮报》8月5日报道,在上周末戴维营峰会上,特朗普总统就弹药库存极度短缺一事怒火难平,向美防...
马桶水箱烂了能补吗 解决方法:当然是可以修补的,首先你把水箱的水放干,用卫生纸把洞口水渍污垢擦干,如果洞口很小的话,直接...
九牧马桶冲水无力怎么处理 进水阀的水位比较低,冲水压力小导致。将进水阀拆掉,把里面的卡扣逆时针旋转到适当的调整高度,再拧紧连接...
海尔油烟机好用吗 你好,个人觉得海尔油烟机还是非常不错的,我家目前也是选择购买的海尔油烟机,目前使用了这么久基本没有出...
智能马桶漏水的原因和处理方法有... 1、可能是因为异物进入智能马桶中,建议寻找专业的维修人员进行维修,在维修之前一定要先断电,避免发生危...
toto智能马桶漏水怎么修 TOTO 智能马桶漏水可能是由多种原因引起的,以下是一些常见的修复方法:1. 检查水箱:确保水箱内的...
周杰伦被传有私生子,公司发声明 8月5日,知名狗仔卓伟通过视频爆料称,一位华语乐坛三字歌唱天王疑有十余岁私生子,但全程未点名、未出示...
中方接连出手反制 商务部5日公布多项对美反制和出口管制措施:对7家美国实体采取反制措施,加强无人机相关两用物项对美国出...
美国司法部被起诉:交出爱泼斯坦... 据路透社8月6日报道,美国新墨西哥州政府日前起诉美国司法部,要求获取涉及已故性犯罪者杰弗里·爱泼斯坦...