的lvm快照热备份使用虚拟机环境,首先在虚拟机中添加一块新硬盘。然后分区硬盘。注意赋予相关目录的权限。如果权限不够,可能会报错。如/mnt,/var/lib/mysqlfdisk-l#查看分区信息pvcreatemysql_pv/dev/sdb#创建物理卷vgcreatevgmysql/dev/sdb#创建卷组lvcreate-L3G-nlv0vgmysql#创建逻辑卷mkfs.ext4/dev/vgmysql/lv0#格式化挂载mount/dev/vgmysql/lv0/mnt#挂载逻辑卷servicemysqldstop#关闭mysql服务cp-a/var/lib/mysql/*/mnt#将数据库数据复制到mnt目录umount/dev/vgmysql/lv0#删除挂载信息mount/dev/vgmysql/lv0/var/lib/mysql/servicemysqldstart#重启mysqld服务mkdir/backup/mysql/binlogmysql-uroot-p123456-e"SHOWMASTERSTATUS;“>/backup/mysql/binlog/binlog.pos设置开机自动挂载,在/etc/fstab文件中配置。最好不要在/etc/fstab中直接指定分区(如/dev/sdb1),因为在关闭或打开服务器的过程中,设备的序列码可能会发生变化,例如/dev/sdb1可能成为/dev/sdb2。推荐使用UUID配置自动挂载数据盘。查询磁盘分区的UUIDblkid/dev/sdb1UUID=一串数字:要挂载的磁盘分区的UUID/var/lib/mysql:挂载目录ext4:分区格式为ext4defaults:要设置的参数挂载时(只读、读写、启用配额等),inputdefaults包含的参数有(rw,dev,exec,auto,nouser,async)0:使用dump时是否记录,0为不需要,1是必须的2:2是开机时检查的顺序是1检查引导系统文件,2检查其他文件系统。如果不检查,就是0**innodb表。一般需要开启独立表空间模式innodb_file_per_table,并将其值设置为1。查看独立表是否为Openmysql>showvariableslike"%per_table%";Variable_nameValueinnodb_file_per_tableON1rowinset(0.00sec)**表库名称文件夹中的文件只是结构。ibdata1文件是数据库真正的数据存储文件。新版Mysql默认引擎是innodb,所以默认会有一个ibdata1文件。mysql以缓冲的方式将数据写入ibdata1文件。mysql运行时复制ibdata1会导致ibdata1文件数据错误。所以备份的时候要关闭mysql服务。ibdata1文件将继续增长,无法将空间回收给操作系统。容易导致在线出现过大的共享表空间文件,导致当前空间满。当ibdata1文件达到一定程度时,会影响insert和update的速度。如果经常删除表,共享表空间的碎片会更多。开辟一个独立的表空间,方便对InnoDB表进行碎片整理。使用myISAM表引擎的数据库会创建三个文件:表结构、表索引和表数据空间。可以直接将数据库目录迁移到其他数据库,并且可以正常工作。使用InnoDB时,所有数据库InnoDB引擎的表数据默认存储在一个共享空间:ibdata1文件。添加或删除数据库时,ibdata1文件不会自动收缩。单独的数据库备份成为一个问题。因此,将innodb_file_per_table的值设置为1,会将innodb修改为独立的表空间模式,这样每个数据库的每个表都会生成一个数据空间。在InnoDB表中,即使申请了读锁,InnoDB在后台仍然可能有事务进行读写操作。所以在备份前显示引擎innodb状态;检查后台进程状态,没有写请求后做备份。在对lv0进行快照之前,使用FLUSHTABLES和FLUSHTABLESWITHREADLOCK强制将所有OSbuffer数据写入磁盘(类似于操作系统的sync命令),并设置数据库为全局只读。并显示引擎innodb状态。检查进程状态,如果没有请求,再备份。快照完成后,使用UNLOCKTABLES解锁。那么你只需要挂载快照,复制其中的数据,复制完成后删除快照即可!/bin/bashDATE=日期+%Y%m%dTIMESTAMP=日期+%Y%m%d%H%M%SHOSTNAME="127.0.0.1"USERNAME="root"PASSWORD=""MYSQL="/usr/bin/mysql"LVCREATE="/sbin/lvcreate"LVREMOVE="/sbin/lvremove"MOUNT="/bin/mount"UMOUNT="/bin/umount"TAR="/bin/tar"SNAP_SIZE=0.3GSNAP_MYSQL=mysql_snapshotMOUNT_POINT=/mntEXEC_MySQL="FLUSHTABLES;FLUSHTABLESWITHREADLOCK;FLUSHLOGS;!$LVCREATE-s-L$SNAP_SIZE-n$SNAP_MYSQL/dev/vgmysql/lv0UNLOCKTABLES;"echo"$EXEC_MySQL"|$MYSQL-u$USERNAME-p$PASSWORD-h$HOSTNAMEif[!-d$MOUNT_POINT/$DATE];thenmkdir$MOUNT_POINT/$DATEchmod-R777$MOUNT_POINT/$DATEfi$MOUNT/dev/vgmysql/$SNAP_MYSQL$MOUNT_POINT/$DATEcd/root$TAR-zcvf${TIMESTAMP}.tgz$MOUNT_POINT/$DATE$UMOUNT$MOUNT_POINT/$DATE$LVREMOVE-f/dev/vgmysql/$SNAP_MYSQLmysql备份学习参考https://cloud.tencent.com/dev...
