学习预览:
(一)mysql 运维基础篇(Linux云计算从入门到精通)
(三)mysql 触发器、存储过程和函数(数据库运维基础补充)
(五)mysql数据备份—物理备份(完备+lvm快照+xtrabackup)+逻辑备份(mysqldump+导入导出)
(六)mysql复制技术—M-S主从配置(传统+GTID)+M-M-S-S主从配置(GTID)
(七)mysql中间件mycat配置和部署(基于M-M-S-S)
(八) 数据库集群技术—Galera Cluster安装与配置
(九)数据库集群技术Galera+mycat(数据库运维学习终章)
CONTEND
5.1 MySQL数据备份技术概述
(1)所有备份数据都应放在非数据库本地,而且建议有多份副本。
测试环境中做日常恢复演练,恢复较备份更为重要。
(2)了解备份和冗余的概念:
备份:能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。
冗条:数据有多份冗余,但不等备份,只能防止机械故障还来的数据丢失,例如主备模式、数据库集群。
(3)备份过程中必须考虑因素(优先满足数据的一致性):
- 1.数据的一致性
- 2.服务的可用性
(4)备份方式(逻辑备份和物理备份)
逻辑备份:备份的是建表、建库、插入等操作所执行SQL语句( DDL DML DCL ),适用于中小型数据库,效率相对较低。
- mysqldump
- mydumper
物理备份:直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。
- tar,cp
- xtrabackup
- inbackup
- Ivm snapshot
(5)备份还有完全备份、增量备份和差异备份
- 完全备份当然就是全部都备份了
- 增量备份只备份一次完整的,然后每天只增加新增的内容

- 差异备份,还是制作一个完整的备份,后面每天只针对Sunday,做差异的备份。

5.2 完全物理备份
备份很简单直接tar一个命令就OK了,然后就开始还原(只还原到备份那一刻):
mkdir /backup
cd /var/lib/mysql
tar -cf /backup/`date +%F`.gz *
#开始还原
systemctl stop mysqld
rm -rf /var/lib/mysql/*
tar -xf /backup/2020-04-14.gz -C /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld
#登录测试数据库是否还在
mysql -p'Root@321'
show databases;
5.3 LVM快照实现物理备份
数据一致,服务可用。
注: MySQL数据 lv 和将要创建的 snapshot 必须在同一VG,因此VG必须要有一定的剩于空间
优点:
- 几乎是热备(创建快照前把表上锁,创建完后立即释放)
- 支持所有存储引擎
- 备份速度快
- 无需使用昂贵的商业软件(它是操作系统级别的)
缺点:
- 可能需要跨部门协调(使用操作系统级别的命令, DBA-般没权限)
- 无法预计服务停止时间
- 数据如果分布在多个卷上比较麻烦(针对存储级别而言)
5.3.1 手动配置
一定要准备lvm的,如果刚开始装mysql的时候,就可以准备了LVM了。但是mysql运行一段时间了,数据并没有存储LVM,下面我们先将现在的数据迁移到LVM。
一般步骤:加全局锁——>创建快照——>释放锁——>从快照中恢复——>移除快照——>快照恢复mysql
而快照恢复的流程:停止数据库——>清理环境——>导入数据——>修改权限——>启动数据库
#1、准备LVM及文件系统,我是虚拟机直接添加硬盘
lsblk #查看硬盘信息
vgcreate datavg /dev/sdb
vgs #查看lvm容量
lvcreate -L 2G -n mysql datavg #创建容量2G名为mysql的lvm
mkfs.xfs /dev/datavg/mysql #格式化
#2、数据迁移到lvm
systemctl stop mysqld
mount /dev/datavg/mysql /mnt/ #临时挂载点,注意mnt下不要有其他东西
cp /var/lib/mysql/* /mnt/ -a #将mysql数据拷到这里
umount /mnt/
vim /etc/fstab #编辑这个文件添加如下一行内容
/dev/datavg/mysql /var/lib/mysql xfs defaults 0 0
chown -R mysql:mysql /var/lib/mysql #最好设置下,免得有问题
systemctl start mysqld
#3、下面开始创建快照备份
echo 'flush tables with read lock;system lvcreate -L 500M -s -n lv-mysql-snap /dev/datavg/mysql;' |mysql -p'Root@321' #加全局锁、创建快照和释放锁要在同一会话中完成,所以这边释放锁就不需要了,自动释放了
#4、从快照中备份
mount -o ro,nouuid /dev/datavg/lv-mysql-snap /mnt/

最低0.47元/天 解锁文章
927

被折叠的 条评论
为什么被折叠?



