真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

初識MariaDB之3——MariaDB備份與還原

一、基礎知識

公司主營業(yè)務:網站設計制作、網站設計、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出臨桂免費做網站回饋大家。

數據的重要性無需多說,需要強調的是備份不是目的,能恢復才是目的,以下就Mariadb的一些概念進行說明。

1.存儲引擎的分類

Mariadb5.1以后的版本,默認使用支持事務的InnoDB存儲引擎,之前的MyISAM存儲引擎不支持事務,所謂事務型存儲引擎,必須滿足ACID原則:

A:atom(原子性),即一個事務中所有的操作必須全部完成執(zhí)行或不執(zhí)行

C:consistent(一致性),一個事務從開始到結束狀態(tài)必須保持一致

I:isolation(隔離性),相同的數據不允許多個事務同時訪問

D:durability (持久性),一經修改永久保存

2.事務隔離級別

InnoDB存儲引擎分為4種隔離級別:

read-uncommitted:讀未提交,可以讀取其他會話未提交的事務,稱為臟讀

read-committed:讀提交,可以讀取其他會話已提交的事務,解決了臟讀,引發(fā)不可重讀

repeatable-read:可重讀(默認),通過MVCC多版本機制讓已發(fā)起的事務在提交前讀取到的數據不發(fā)生變化,即使有其他會話已提交了事務,解決了不可重讀,引發(fā)幻讀

serializable:串行提交,在每個讀的行上施加共享鎖,在寫的行上施加排他鎖,解決了幻讀,但是降低了并發(fā)

3.鎖機制

行鎖和表鎖:依據粒度不同進行的劃分,行鎖的并發(fā)能力更強

讀鎖和寫鎖:讀鎖又稱共享鎖,施加讀鎖后所有事務只能進行讀操作,不能再進行寫操作;寫鎖又稱排他鎖,施加寫鎖后除當前事務外的其他事務不能進行讀寫操作

InnoDB存儲引擎的行鎖其實是加在索引上的

4.備份方式

數據庫按照備份方法分為物理備份和邏輯備份,按照服務運行的狀態(tài)又可以分為冷備和熱備,對于不支持事物的MyISAM存儲引擎,可以采用溫備的方式進行(前提是必須使用lvm2或者Btree文件系統(tǒng))。

物理備份:基于文件系統(tǒng)層的備份,優(yōu)點是速度快,缺點是收到文件系統(tǒng)的約束

邏輯備份:備份時將數據庫抽取為sql語句,優(yōu)點是不受操作系統(tǒng)約束,可移植性強,缺點是當數據庫較大時速度慢

二、使用工具

1.MySQLdump

--single-transaction 只對InnoDB引擎有效,用于保護數據的一致性,備份發(fā)起前,創(chuàng)建一個數據快照,直到備份結束都不會讀取備份開始后提交的任何事務

--quick 配合--single-transaction加速大空間表備份

--all-databases(-A) 備份所有數據庫

--where(-w) 按條件篩選要備份的數據

--databases(-B) 備份指定數據庫,多個數據庫之間用","分隔

--master-date=VALUE VALUE值有1|2兩個值,如果是1會在備份出的文件添加一個CHANGE MASTER TO語句;如果是2會在備份出的文件添加一個CHANGE MASTER TO語句并注釋,備份時建議使用該選項并將VALUE設置為2,原因是該參數備份時會攜帶當前時刻binlog日志的名稱和位置,便于后期使用binlog恢復

初識MariaDB之3——MariaDB備份與還原初識MariaDB之3——MariaDB備份與還原

需要注意的是:mysqldump如果不帶-A|-B選項默認不備份數據結構,在恢復時需要先創(chuàng)建數據庫和表結構。單表恢復時只需要指定庫名,不需要指定表名。

初識MariaDB之3——MariaDB備份與還原

2.mysqlbinlog

mysqlbinglog是一個客戶端工具,它可以在其他終端以客戶端的身份訪問mysql服務器

--database=DATABASE 只適用于本地日志,查看二進制日志中指定數據庫的信息(默認是所有庫),導出二進制日志時建議使用該選項,否則還原時遇到該服務器上沒有的數據庫會報錯,無法正?;謴?

--start-position=N 查看指定位置以后的事務

--to-last-log(-t) 在MySQL服務器中請求的二進制日志結尾處不停止,而是繼續(xù)打印直到最后一個二進制日志的結尾,如果發(fā)送給同一臺服務器則會無限循環(huán)。需要同時使用--read-from-remote-server選項

--result-file=FILENAME 輸出為指定文件,同重定向">"

三、操作步驟

本次實驗操作系統(tǒng)版本為CentOS7.4,數據庫版本為Mariadb5.5.6,為避免干擾,關閉selinux和iptables,172.16.10.30/24為數據庫服務器,172.16.10.40/24為備用服務器

1.冷備

(1)停止172.16.10.30/24的MariaDB服務

systemctl stop mariadb.service

(2)使用scp命令將172.16.10.30/24服務器上的hellodb數據庫拷到172.16.10.40/24服務器datadir目錄下

scp -r hellodb root@172.16.10.40:/var/lib/mysql/

(3)修改拷貝后172.16.10.40/24服務器hellodb數據庫的屬主和屬組

chown -R mysql.mysql /var/lib/mysql/hellodb

(4)啟動172.16.10.40/24的MariaDB服務

systemctl start mariadb.service

2.熱備

(1)備份172.16.10.30/24上的數據庫

mysqldump -uroot -ppassword1! --database hellodb --master-data=2 --single-transaction --quick > /tmp/hellodb.sql

(2)根據/tmp/hellodb.sql中記錄備份時使用的binlog及其位置將后續(xù)的sql語句備份到指定文件中,如果不止一個二進制日志后續(xù)以追加方式進行

mysqlbinlog --database hellodb --start-position=245  mysql-binlog.000005 > /tmp/binlog.sql

(3)將hellodb.sql和/tmp/binlog.sql傳輸到172.16.10.40/24服務器

scp -r {binlog.sql,hellodb.sql} root@172.16.10.40:/tmp/

(4)導入數據庫過程無需記錄二進制日志,把以先暫時關閉

MariaDB [hellodb]>set sql_log_bin=0

(5)在172.16.10.40/24服務器執(zhí)行sql語句恢復數據庫

mysql -uroot -p < hellodb.sql

mysql -uroot -p < binlog.sql

(6)開啟二進制日志

MariaDB [hellodb]>set sql_log_bin=1

由于二進制日志的重要性,生產環(huán)境中建議將數據文件和二進制文件放在不同的磁盤上,如果有專門的日志服務器也可以遠程同步二進制日志中的sql語句

mysqlbinlog  --read-from-remote-server --host=172.16.10.30 --port=3306  --user=root --password=password1! --start-position=733 --to-last-log  mysql-binlog.000005 --result-file=/tmp/bin_log.sql

3.溫備

溫備是針對不支持事務的MyISAM存儲引擎采取的一種折中的備份方式,它通過lvm2的快照功能結合二進制日志,實現(xiàn)了幾乎熱備的效果

(1)將172.16.10.30/24服務器上的表同步到磁盤并且鎖表

MariaDB [hellodb]> flush tables with read lock;

(2)刷新172.16.10.30/24服務器日志

MariaDB [hellodb]> flush logs;

初識MariaDB之3——MariaDB備份與還原初識MariaDB之3——MariaDB備份與還原

(3)記錄172.16.10.30/24服務器上當前二進制日志文件及位置

[root@host3 ~]# mysql -uroot -ppassword1! -e 'show master status;' > /tmp/position.txt

(4)為datadir目錄所在的設備創(chuàng)建一個快照

[root@host3 ~]# lvcreate -L 1G -s -n mylv_snap /dev/myvg/mylv

(5)解除讀鎖

MariaDB [hellodb]> unlock tables;

(6)掛載快照

mount /dev/myvg/mylv_snap /mnt/

(7)將備份拷貝至172.16.10.40/24服務器,并修改屬主和屬組

[root@host3 mysql]#scp -r /mnt/hellodb root@172.16.10.40:/data/mysql

[root@host3 mysql]#chown -R mysq.mysq /data/mysql/

(8)導入數據庫過程無需記錄二進制日志,把以先暫時關閉

MariaDB [hellodb]>set sql_log_bin=0

(9)將172.16.10.30/24上的二進制文件同步至172.16.10.40/24

[root@host4 mysql]# mysqlbinlog  --read-from-remote-server --host=172.16.10.30 --port=3306  --user=root --password=password1! --start-position=245 --to-last-log  mysql-binlog.000006 --result-file=/tmp/bin_log.sql

(10)執(zhí)行快照之后的sql語句

[root@host4 mysql]# mysql -uroot -p'password1!' < /tmp/bin_log.sql

(11)開啟二進制日志

MariaDB [hellodb]>set sql_log_bin=1

(12)刪除172.16.10.30/24上的快照,至此操作完成

[root@host3 mysql]#umount /mnt/

[root@host3 ~]# lvremove mylv_snap

補充說明:

mysql5.6以后的版本中可以將遠程服務器上的服務器復制到本地,其中mysqldump命令中的-raw(以binlog形式將遠程服務器的日志存儲到本地)和--stop-never(連接遠程mysql服務器讀取日志,知道服務器關閉后才會退出或被kill掉)選項在mariadb10.1中未找到,不確定是否有該功能


本文名稱:初識MariaDB之3——MariaDB備份與還原
鏈接分享:http://weahome.cn/article/jjccsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部