LVM(LogicalVolumeManagement逻辑卷管理)实现几乎热备的原理:利用LVM的快照卷达到可以保存数据库在某一时刻的瞬时状态,只需把当时的快照备份出来即可。LVM的
LVM(Logical Volume Management逻辑卷管理)实现几乎热备的原理:利用LVM的快照卷达到可以保存数据库在某一时刻的瞬时状态,只需把当时的快照备份出来即可。
LVM的快照原理:简单的讲就是lvm对某个卷创建快照卷后,快照卷则作为原卷的另一个访问入口,当原卷的数据发生变化时,则先把原卷的内容先复制一份到快照卷,然后才会继续对原卷数据的修改,这也就是之所以快照卷的容量大小应该大于整个备份过程中数据库的变化量的原因。所以当备份完成以后,快照卷也就可以拆除了,它的作用就是在备份过程中把发生变化的数据的快照时状态先拷贝过来一个副本。
用lvm对mysql备份的前提:数据文件和事务日志文件应该在同一个卷上,否则快照卷数据和事务日志时间点不一致,恢复后会引起数据库错乱。
原理明白了,操作起来就比较简单了:
当然要首先准备好lvm卷且保证mysql的datadir和innodb_log_group_home_dir在这个卷上
/* 再开一个终端,前面mysql会话不要退出 */ [root@node1 ~]# mkdir /backup/mydata-`date +%F` /* 也可以将当前二进制位置保存到文件,以备恢复时查看 */ [root@node1 ~]# mysql -e 'SHOW MASTER STATUS;' > /backup/mydata-2014-07-29/bin-pos-`date +%F-%T` /* 保证有可用的vg */ [root@node1 ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 2 1 0 wz--n- 10.02g 7.02g vg0 3 1 0 wz--n- 29.29g 0 /* 创建快照卷,-L | --size (LogicalVolumeSize) 指定快照卷大小,一定不可以比变化量小,否则会引起快照卷崩溃,备份失败; -n | --name 指定快照卷名字; -p | --permission 指定快照卷权限 r只读, -s --snap-shot /dev/myvg/mylv 指定要对/dev/myvg/mylv创建快照卷 如果此时数据库服务器比较繁忙,则需要等待正在提交的日志刷写到磁盘等,,可能会需要一定等待时间*/ [root@node1 ~]# lvcreate -L 100M -n mydata-snap -p r -s /dev/myvg/mylv Logical volume "mydata-snap" created [root@node1 ~]# mkdir /mnt/snap [root@node1 ~]# mount /dev/myvg/mydata-snap /mnt/snap/ mount: block device /dev/mapper/myvg-mydata--snap is write-protected, mounting read-only [root@node1 ~]# cd /mnt/snap/ [root@node1 snap]# ls data lost+found [root@node1 snap]# ls data/ aria_log.00000001 ib_logfile0 mysql-bin.000001 mysql-bin.000005 node1.bob.org.err aria_log_control ib_logfile1 mysql-bin.000002 mysql-bin.000006 node1.bob.org.pid hellodb mydb mysql-bin.000003 mysql-bin.000007 performance_schema ibdata1 mysql mysql-bin.000004 mysql-bin.index test [root@node1 snap]# cp -ap /mnt/snap/data/ /backup/mydata-2014-07-29/ [root@node1 snap]# ls /backup/mydata-2014-07-29/data/ aria_log.00000001 ib_logfile0 mysql-bin.000001 mysql-bin.000005 node1.bob.org.err aria_log_control ib_logfile1 mysql-bin.000002 mysql-bin.000006 node1.bob.org.pid hellodb mydb mysql-bin.000003 mysql-bin.000007 performance_schema ibdata1 mysql mysql-bin.000004 mysql-bin.index test
备份完成回到mysql会话,解锁表
MariaDB [(none)]> UNLOCK TABLES; Query OK, 0 rows affected (0.01 sec)这样一个基于lvm快照的mysql备份就完成了,然后还可以结合二进制日志做增量备份和恢复等,可参照前一篇文章 MySQL 备份和恢复(一)mysqldump
本文出自 “不懂IT的中医不是好IT” 博客,请务必保留此出处

MySQLhandlesconcurrencyusingamixofrow-levelandtable-levellocking,primarilythroughInnoDB'srow-levellocking.ComparedtootherRDBMS,MySQL'sapproachisefficientformanyusecasesbutmayfacechallengeswithdeadlocksandlacksadvancedfeatureslikePostgreSQL'sSerializa

mySqlHandLestActionSefectefectionalytheinnodbengine,supportingAcidPropertiessimilartopostgresqlesqlandoracle.1)mySqluessRepeTableReadAbereadasTheDefaultIsolationLeleleteLevel,whatcanBeadJustEdToreDtoreDtoreDtoreadCommittedCommittenCommententCommittedForHigh-TrafficsCenarios.2)

最佳實踐包括:1)理解數據結構和MySQL處理方式,2)適當索引,3)避免SELECT*,4)使用合適的JOIN類型,5)謹慎使用子查詢,6)使用EXPLAIN分析查詢,7)考慮查詢對服務器資源的影響,8)定期維護數據庫。這些做法能使MySQL查詢不僅快速,還具備可維護性、可擴展性和資源效率。

MySQLisbetterforspeedandsimplicity,suitableforwebapplications;PostgreSQLexcelsincomplexdatascenarioswithrobustfeatures.MySQLisidealforquickprojectsandread-heavytasks,whilePostgreSQLispreferredforapplicationsrequiringstrictdataintegrityandadvancedSQLf

MySQL通過異步、半同步和組複製三種模式處理數據複製。 1)異步複製性能高但可能丟失數據。 2)半同步複製提高數據安全性但增加延遲。 3)組複製支持多主複製和故障轉移,適用於高可用性需求。

EXPLAIN語句可用於分析和提升SQL查詢性能。 1.執行EXPLAIN語句查看查詢計劃。 2.分析輸出結果,關注訪問類型、索引使用情況和JOIN順序。 3.根據分析結果,創建或調整索引,優化JOIN操作,避免全表掃描,以提升查詢效率。

使用mysqldump進行邏輯備份和MySQLEnterpriseBackup進行熱備份是備份MySQL數據庫的有效方法。 1.使用mysqldump備份數據庫:mysqldump-uroot-pmydatabase>mydatabase_backup.sql。 2.使用MySQLEnterpriseBackup進行熱備份:mysqlbackup--user=root--password=password--backup-dir=/path/to/backupbackup。恢復時,使用相應的命


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)