使用lvm快照实现物理备份

优点:

几乎是热备(创建快照前把表上锁,创建完后立即释放)

支持所有存储引擎

备份速度快

无需使用昂贵的商业软件(它是操作系统级别的)

缺点:

可能需要跨部门协调(使用操作系统级别的命令,DBA一般没权限)

无法预计服务停止时间

数据如果分布在多个卷上比较麻烦(针对存储级别而言)

操作流程:

1、flush table with read locak;

2、create snapshot

3、show master status; show slave status;

4、unlock tables;

5、copy data from cow to backup

6、remove snapshot

正常安装MySQL:

1. 安装系统

2. 准备LVM,例如 /dev/vg_localhost/lv-mysql,mount /usr/local/mysql

3. 源码安装MySQL到 /usr/local/mysql

可选操作: 将现在的数据迁移到LVM

1. 准备lvm及文件系统

[root@localhost ~]# lvcreate -L 2G -n lv-mysql vg_localhost
[root@localhost ~]# mkfs.ext4 /dev/vg_localhost/lv-mysql

2. 将数据迁移到LVM

[root@localhost ~]# service mysqld stop
[root@localhost ~]# mount /dev/vg_localhost/lv-mysql /mnt/ //临时挂载点
[root@localhost ~]# rsync -va /usr/local/mysql/ /mnt/ //将MySQL原数据镜像到临时挂载点
[root@localhost ~]# umount /mnt/
[root@localhost ~]# mount /dev/vg_localhost/lv-mysql /usr/local/mysql //加入fstab开机挂载
[root@localhost ~]# df -Th
/dev/mapper/vg_localhost-lv--mysql ext4 2.0G 274M 1.7G 15% /usr/local/mysql
[root@localhost ~]# service mysqld start

手动基于LVM快照实现备份:

1. 加锁

mysql> flush table with read lock;

2.创建快照

# lvcreate -L 500M -s -n lv-mysql-snap /dev/vg_localhost/lv-mysql

# mysql -uroot -p123 -e 'show master status' > /backup/`date +%F`_position.txt

mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| mysqld-bin.000016 | 542 | | | |
+-------------------+----------+--------------+------------------+-------------------+

3. 释放锁

mysql> unlock tables;

4. 从快照中备份

[root@localhost ~]# mount -o ro /dev/vg_localhost/lv-mysql-snap /mnt/
[root@localhost ~]# mkdir /backup/`date +%F`
[root@localhost ~]# rsync -a /mnt/ /backup/2014-09-02/

5. 移除快照

[root@localhost ~]# umount /mnt/
[root@localhost ~]# lvremove -f /dev/vg_localhost/lv-mysql-snap

脚本 + Cron

#!/bin/bash
#LVM backmysql...
back_dir=/backup/`date +%F` [ -d $back_dir ] || mkdir -p $back_dir mysql -uroot -p678 -e 'flush table with read lock'
lvcreate -L 500M -s -n lv-mysql-snap /dev/vg_localhost/lv-mysql
mysql -uroot -p678 -e 'show master status' |grep mysql > $back_dir/position.txt
mysql -uroot -p678 -e 'flush logs'
mysql -uroot -p678 -e 'unlock tables' mount -o ro /dev/vg_localhost/lv-mysql-snap /mnt/ rsync -a /mnt/ $back_dir if [ $? -eq 0 ];then
umount /mnt/
lvremove -f /dev/vg_localhost/lv-mysql-snap
fi

mylvmbackup

功能:利用LVM快照实现物理备份,即LVM快照备份的自动版

安装perl模块

1. 在线安装

http://www.lenzg.net/mylvmbackup

它依赖于perl 模块,可用以下命令安装

perl -MCPAN -e 'install Config::IniFiles'

2. 离线安装

# yum -y install atrpms-77-1.noarch.rpm perl-Config-IniFiles-2.72-3.em.el6.noarch.rpm perl-File-Copy-Recursive-0.38-1.el6.rfx.noarch.rpm perl-IO-stringy-2.110-8.el6.noarch.rpm

安装mylvmbackup软件包

# yum -y install mylvmbackup-0.15-0.noarch.rpm

备份方法一:

# mylvmbackup --user=root --password=111 --host=localhost --mycnf=/etc/my.cnf --vgname=vg_localhost --lvname=lv-mysql --backuptype=tar --lvsize=100M --backupdir=/
backup
[root@localhost backup]# tar xf backup-20140903_000236_mysql.tar.gz
[root@localhost backup]# ls
backup backup-cnf-20140903_000236_mysql
backup-20140903_000236_mysql.tar.gz backup-pos

备份方法二:

[root@server ~]# vim /etc/mylvmbackup.conf
[mysql] #连接数据库配置
user=root
password=123456
host=localhost
port=3306
socket=/tmp/mysql.sock
mycnf=/etc/my.cnf
[lvm] #LVM逻辑卷的配置
vgname=vg_server #卷组名称
lvname=lv_mysql #逻辑卷名称
backuplv=mysql_snap #快照卷名称
lvsize=500M
[fs] #文件系统配置
xfs=0
mountdir=/var/tmp/mylvmbackup/mnt/ #挂载目录
backupdir=/backup #备份目录,也可以备份到行程主机
[misc] #定义备份选项
backuptype=tar #定义备份的类型
backupretention=0
prefix=backup #定义备份文件名前缀
suffix=_mysql #定义备份文件名后缀
tararg=cvf #定义tar参数,默认为cvf
tarfilesuffix=.tar.gz #定义备份文件后缀名格式
datefmt=%Y%m%d_%H%M%S #定义备份文件名时间戳格式
keep_snapshot=0 #是否保留snaphot
keep_mount=0 #是否卸载snaphot
quiet=0 #定义记录日志类型
注释:其他配置保持输入即可

然后直接执行mylvmbackup即可

MySQL数据物理备份之lvm快照的更多相关文章

  1. MySQL数据物理备份之xtrabackup

    percona-xtrabackup 它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份.它不暂停服务创建Innodb热备份: 为mysql ...

  2. MySQL数据物理备份之tar打包备份

    复制数据文件方式,可以使用cp或tar 1.停止服务 [root@localhost mysql]# systemctl stop mysqld [root@localhost mysql]# net ...

  3. Mysql数据库备份—-通过LVM快照实现备份还原

    一.实验环境 一台测试机:A(172.18.30.1) 操作系统:Centos7 操作对象数据库版本:mariadb-10.2 二.实现目的 从A机器(172.18.30.1)简单搭建数据库,创建测试 ...

  4. mysql数据的备份

    一.备份方式 1.备份:逻辑备份(mysqldump,mydumper).物理备份(xtrabackup.tar.cp.rsync)    2.冗余:主备模式.数据库集群 二.备份对象 1.数据(库. ...

  5. 使用 xtrabackup 进行MySQL数据库物理备份

    0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...

  6. MySQL 逻辑物理备份测试

    目录 逻辑备份 mysqldump 普通备份 mysqlpump 并行备份 mysqlpump 压缩并行备份 mydumper 并行备份 mydumper 并行压缩备份 小结 物理备份 xtrabac ...

  7. MySQL数据逻辑备份

    逻辑备份: 备份的是建表.建库.插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低. mysqldump mydumper使用mysqldump实现逻辑备份 语法: # mysqldump ...

  8. Centos中MySQL数据的备份和恢复

    1.MySQL数据备份 MySQL在Centos备份中用到了mysqldump这个文件,首先得把它找出来: [root@instance-3snz20bz ~]# whereis mysqldump ...

  9. mysql 数据表备份导出,恢复导入操作实践

    因为经常跑脚本的关系, 每次跑完数据之后,相关的测试服数据库表的数据都被跑乱了,重新跑脚本恢复回来速度也不快,所以尝试在跑脚本之前直接备份该表,然后跑完数据之后恢复的方式,应该会方便一点.所以实践一波 ...

随机推荐

  1. Python进阶-V 迭代器(Iterator)、生成器(Generator)函数

    一.迭代器 1.可循环的有哪些,即可用for语句或者while语句的数据类型有哪些? 字符串(str).列表(list).元组(tuple).字典(dic).集合(set).枚举类(enumerate ...

  2. HDU 6588 Function

    [传送门] 求$$\sum_{i=1}^{n} \gcd(\lfloor \sqrt[3]{i} \rfloor, i)$$题解写的很清楚,自己重新推一推. $$\sum_{i=1}^{n} \gcd ...

  3. nwjs-打包

    1: 将项目内所有文件压缩成一个压缩包 app.zip 2: 将压缩包重命名为 app.nw 3: 将压缩包放置到 下载解压后的 nw.js 根目录下 4: shift+鼠标右键 选择在此处打开命令窗 ...

  4. RHEL7 安装Docker-CE

    rhel7官方有源可以直接使用,前提是需要订阅, 参考地址 通过添加CentOS7 源,进行安装: 通过添加CentOS7 源,进行安装 参考博客 安装container-selinux依赖(Requ ...

  5. <BackTracking> Combination, DFS :216 DP: 377

    216. Combination Sum III 保证subset.size( ) == k && target == 0的时候结束DFS subset.size( ) > k ...

  6. CF1217E Sum Queries? (线段树)

    完了,前几天才说 edu 的 DEF 都不会,现在打脸了吧 qwq 其实在刚说完这句话 1min 就会了 D,3min 就会了 E 发现,对于大小 \(\ge 3\) 的不平衡集合,它至少有一个大小为 ...

  7. [LeetCode] 30. Substring with Concatenation of All Words 串联所有单词的子串

    You are given a string, s, and a list of words, words, that are all of the same length. Find all sta ...

  8. 推荐WEB 端批量移动设备管理控制工具STF

    推荐WEB 端批量移动设备管理控制工具STF 1 官方网站 https://openstf.io/ 2 github https://github.com/openstf/stf 后面有时间了,抽空也 ...

  9. python读写符号的含义

    r 打开只读文件,该文件必须存在. r+ 打开可读写的文件,该文件必须存在. w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件. w+ 打开可读写文件,若文件 ...

  10. Loj #3111. 「SDOI2019」染色

    Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...