中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

菜鳥學Linux 第079篇筆記 mysql備份lvm

發布時間:2020-07-31 13:16:02 來源:網絡 閱讀:282 作者:Winthcloud 欄目:數據庫

菜鳥學Linux 第079篇筆記 mysql備份lvm




內容總覽

上節知識點補充

單表的導出導入

LVM創建快照實現數據庫備份






上節少了一點知識點

使用mysqldump備份還原時 要臨時將sql_log_bin關閉(臨時性的關閉二進制日志記錄)

因為還原時所生成的二進制日志對于下一次備份時是沒有用的,所以在還原時要關閉二進制

日志記錄  切記切記

SET sql_log_bin=0;   關閉


導入使用

mysql> \. /path/backup.sql


SET sql_log_bin=1;  開啟


mysqldump 

--databases DB1,DB2

--all-databases

--flush-logs

--routines

--triggers

--master-data={0|1|2}


MyISAM 溫備份

--lock-all-tables

--lock-table


InnoDB 熱備份

--single-transaction



邏輯備份

1. 浮點數據丟失精度;

2. 備份的數據更點用存儲空間,壓縮后可大大節省空間

3. 不適合對大數據庫做完全備份


INNODB

SHOW ENGINES INNODB STATUS;


mvcc, REPEATABLE-READ

--single-transaction




直接將表導出不添加任何信息

mysql> SELECT * INTO OUTFILE '/path/file_name.txt' FROM tb_name [WHERE]

mysql> SELECT * INTO OUTFILE '/tmp/tutor.txt' FROM tutors;

(注意所給的系統路徑 必須mysql用戶可以訪問的目錄 )


還原導出的表

導入之前需要重新建立表,和對應的列名稱及其屬性

mysql> CREATE TABLE tutor LIKE tutors;

mysql> LOAD DATA INFILE '/tmp/tutor.txt' INTO TABLE tutor;


此種方式僅做單張表備份,速度快 (且不會寫進二進制日志文件里)





幾乎熱備 LVM

snapshot


前提

1. 數據文件要在邏輯卷上

2. 此邏輯卷所在卷組必須有足夠空間使用快照卷

3. 使用快照熱備 數據文件和事務日志必須在一個邏輯卷里



1. 鎖表

mysql> FLUSH TABLES WITH READ LOCK;

mysql> FLUSH LOGS;

mysql> SHOW MASTER STATUS;


此時切記不要退出會話, 要新建立一個會話執行如下命令


# mkdir /backup

# mysql -e "SHOW MASTER STATUS\G;" > /backup/master-`date +%F`.info


2. 創建快照并備份數據

# lvcreate -L 50M -s -p r -n mydata-snap /dev/myvg/mydata


                釋放表鎖

mysql> UNLOCK TABLES;


# mount /dev/myvg/mydata-snap /mnt/ -o ro

# mkdir /backup/full-backup-`date +%F`

# cp -a /mnt/data/* /backup/full-backup-2017-01-13/

# rm -rf /backup/full-backup-2017-01-13/mysql-bin.*

(我這里是模擬的,其實二進制日志不應該也在數據文件里的所以刪除掉)

# cd

# umount /mnt

# lvremove --force /dev/myvg/mydata-snap


3. 備份二進制日志文件

# cat /backup/master-2017-01-13.info

會在此里邊查找到位置我的是107

二進制日志文件是mysql-bin.000005


# mysqlbinlog --start-position=107 /mydata/data/mysql-bin.000003

此句在于找出其開始時間,下一句是備份


# mysqlbinlog --start-datetime='2017-01-13' mysql-bin.000003 

mysql-bin.000004 mysql-bin.000005...  > /backup/binary/binary-`date %F`.sql



4. 模擬數據庫損壞并還原

將數據庫里所有信息刪除

# service mysqld stop

# rm -rf /mydata/data/*

# killall mysqld


實現還原

# cp -a /backup/full-backup-2017-01-13/* /mydata/data/

# ls /mydata/data

# service mysqld start


5. 即時點還原(導入二進制日志文件)

mysql> SET sql_log_bin=0;

mysql> SOURCE /backup/binary-2017-01-13.sql

mysql> SET sql_log_bin=1;



總結步驟

1.打開會話,施加讀鎖,鎖定所有表

mysql> FLUSH TABLES WITH READ LOCK;

mysql> FLUSH LOGS;


2.通過另一個終端,保存二進制日志文件及相關位置信息

# mysql -uroot -p -e "SHOW MASTER STATUS\g" > /path/master-`date +%F`.info


3.創建快照

# lvcreate -L # -s -p r -n LV_name /dev/path/source-lv


4.釋放鎖

mysql> UNLOCK TABLES;


5.掛載快照卷,備份

mount 

cp


6.刪除快照卷


7.增量備份二進制日志


8.還原時一定要記得將二進制日志給臨時性的關閉掉



InnoDB 數據庫一定要記得使用了

innodb_file_per_table           | ON


要不然備份單個數據庫使用快照這種方式就比較麻煩了


創建快照來備份數據庫比較適合進行所有庫備份




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

土默特左旗| 金阳县| 盘山县| 辽源市| 新宾| 资阳市| 阳东县| 浮梁县| 城步| 夏津县| 九寨沟县| 陵川县| 慈溪市| 郁南县| 府谷县| 肃宁县| 保定市| 霍林郭勒市| 胶南市| 宁波市| 茌平县| 杭州市| 大兴区| 永靖县| 华亭县| 宾阳县| 肥西县| 彰化市| 岗巴县| 政和县| 大石桥市| 焉耆| 广西| 普兰县| 浦江县| 儋州市| 建湖县| 平陆县| 连州市| 峨山| 江阴市|