一次生產環境mysql遷移操做(一)數據歸檔

一次生產環境mysql遷移操做(一)數據歸檔mysql

一次生產環境mysql遷移操做(二)mysql空間釋放(碎片整理)sql

背景

在項目過程當中咱們常常要對數據庫進行遷移、歸檔、拆分等等操做,如今描述下幾種方案數據庫

  • mysqldump 該命令能夠指定導出數據庫,該命令可能用時好久
  • cp 直接拷貝mysql數據文件,這裏會影響業務須要下線mysql
  • 使用innobackupex 工具進行備份,這個不影響業務,速度稍快
  • 先打lvm快照,而後從快照中備份數據,節省時間

咱們有須要將物理盤上的mysql遷移到ssd上,先說一下生產環境一直有數據產生,且數據量達到500G。 方案一:使用mysqldump,無論是導入導出都太耗時,沒有一天拿不下 方案二:直接物理磁盤上拷貝也是很是耗時,拷貝過程當中須要停服務,這就致使停服務時間太長。 方案三:這個方案原本是頗有優點的,可是實際狀況導出導入也須要鎖表或鎖庫,也是須要停服務,原本咱們就不須要增量拷貝,innobackupex優點體如今增量拷貝。 方案四:拷貝速度快 綜合停服務時間以及操做難易度,最終選擇了方案四。 下面描述下操做步驟工具

環境準備

一、建立物理卷

在這裏插入圖片描述 執行命令ui

pvcreate /dev/vdb

二、建立卷組

vgcreate vgssd /dev/vdb

三、建立mysql數據分區

lvcreate --size280G -n mysql vgssd

四、移除mysql原有數據,並掛載

mv  /var/lib/mysql  /var/lib/mysql_bak
mount /dev/vgssd/mysql /var/lib/mysql

五、 拷貝線上數據到本地

cp -af remotepath /var/lib/mysql

chown mysql:mysql /var/lib/mysql

執行完上面步驟後,再開始進行歸檔操做.net

歸檔步驟

一、中止mysql以及其餘服務

systemctl stop httpd
systemctl stop supervisord
systemctl stop mariadb

umount /var/lib/mysql

執行umount時須要保證各終端退出該目錄code

二、查看磁盤狀況

在這裏插入圖片描述

三、建立快照卷

lvcreate -s --size 180G -n mysql_backup /dev/vgssd/mysql

四、從新綁定mysql,重啓服務

mount /dev/vgssd/mysql /var/lib/mysql

systemctl start mariadb
systemctl start httpd
systemctl start supervisord

五、掛載快照卷

mkdir -p /mnt/mysql_temp
mount -o ro,nouuid /dev/vgssd/mysql_backup /mnt/mysql_temp

ls /mnt/mysql_temp

六、拷貝數據,將數據拷貝到本地

mkdir -p /mnt/backup/mysql
cp -a /mnt/mysql_temp /mnt/backup/mysql

七、取消掛載,刪除快照卷

umount /mnt/mysql_temp

lvremove /dev/vgssd/mysql_backup

定時歸檔

暫定爲30天,這樣才能備份全部數據。 由於須要硬件準備,因此這裏只能手動操做blog

恢復數據

若是磁盤數據丟失須要恢復數據,則執行下面操做 一、關停mysql服務 systemctl stop mariadb圖片

二、修改/etc/my.conf datadir= /mnt/backup/mysqlrem

三、重啓服務 systemctl start mariadb

相關文章
相關標籤/搜索