如何建立一個網(wǎng)站要多少錢百度開戶怎么開
物理備份: 直接復(fù)制數(shù)據(jù)庫文件,適用于大型數(shù)據(jù)庫環(huán)境,不受存儲引擎的限制,但不能恢復(fù)到不同的MySQL版本。
1.完全備份-----完整備份:
每次都將所有數(shù)據(jù)(不管自第一次備份以來有沒有修改過),進行一次完整的復(fù)制,備份后會清除文件的存檔屬性,方便日后增量備份或者差異備份進行版本比較。
特點:占用空間大,備份速度慢,但恢復(fù)時一次恢復(fù)到位,恢復(fù)速度快。
2.增量備份: 每次備份上一次備份到現(xiàn)在產(chǎn)生的新數(shù)據(jù)
在第一次完整備份之后,第二次開始每次都將添加了存檔屬性的文件進行備份,并且在備份之后再把這些存檔屬性清除。為什么要清除存檔屬性呢?這就是為了下一次備份的時候判斷是否有文件變化,因為用戶在每次備份以后修改這些被清除存檔屬性的文件,存檔屬性就會自動加上,相當(dāng)于用戶告訴系統(tǒng),這些文件有變化,你下一次就備份這些文件,其他沒有存檔屬性的就不需要備份,這就是增量備份的工作機制。
特點:因每次僅備份自上一次備份(注意是上一次,不是第一次)以來有變化的文件,所 以備份體積小,備份速度快,但是恢復(fù)的時候,需要按備份時間順序,逐個備份版本進行恢 復(fù),恢復(fù)時間長。
3.差異備份:只備份跟完整備份不一樣的
在第一次完整備份之后,第二次開始每次都將所有文件與第一次完整備份的文件做比較,把自第一次完整備份以來所有修改過的文件進行備份,且以后每次備份都是和第一次完整備份進行比較(注意是第一次,不是上一次),備份自第一次完整備份以來所有的修改過的文件。因此,差異備份在備份完畢之后不需要清除文件的存檔屬性,因為這些文件和下一次備份沒有什么關(guān)系,它僅僅和第一次完整備份的數(shù)據(jù)進行比較(第一次完整備份之后是清除存檔屬性的)。
(相當(dāng)于第一次機器人把地板打掃干凈了,你踩過,就會有腳印,機器人就把腳印記錄下 ? 來,但不打掃,下次你又有踩臟的,機器人就把你這幾次所有踩臟的地方都記錄下來,始終 ? 不打掃,每次都這樣。機器人每次記錄的內(nèi)容就相當(dāng)于差異備份的內(nèi)容) ?
特點:占用空間比增量備份大,比完整備份小,恢復(fù)時僅需要恢復(fù)第一個完整版本和最后一次的差異版本,恢復(fù)速度介于完整備份和增量備份之間。
簡單的講,完整備份就是不管三七二十一,每次都把指定的備份目錄完整的復(fù)制一遍,不管目錄下的文件有沒有變化;增量備份就是每次將之前(第一次、第二次、直到前一次)做過備份之后有變化的文件進行備份;差異備份就是每次都將第一次完整備份以來有變化的文件進行備份。
熱備份:
數(shù)據(jù)庫啟動同時給客戶端提供服務(wù)的情況下?
冷備份:
數(shù)據(jù)庫要關(guān)掉或者不能給客戶端提供服務(wù)
1.安裝xtrabackup??
官網(wǎng):??www.percona.com
安裝xtrabackup
# wget http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
# rpm -ivh percona-release-0.1-4.noarch.rpm
[root@mysql-server yum.repos.d]# vim percona-release.repo
修改如下內(nèi)容:將原來的1改為0
[root@mysql-server yum.repos.d]# yum -y install percona-xtrabackup-24.x86_64
我做實驗時 使用的是提前下載好的包
將下載到本地的包 導(dǎo)到服務(wù)器上
# rz
解壓
#tar xzf xtrabackup.tar.gz -C /opt#cd /opt
# cd xtrabackup/
安裝所有rpm包
yum localinstall *下載好以后 如果能在命令行 輸入innob直接tab出來 innobackupex 則說明下載安裝成功
完全備份流程
1.1首先創(chuàng)建一個備份目錄
[root@localhost ~]# mkdir /root/xtrabackup/full -p
1.2備份數(shù)據(jù)
[root@localhost ~]# innobackupex --user=root --password='Qianfeng@123' /root/xtrabackup/full/user是登錄MySQL的系統(tǒng)用戶
password是登錄MySQL的系統(tǒng)用戶密碼
語法:innobackupex ?--user=root? ?--password='密碼'? ? /存放備份的路徑
1.3查看備份數(shù)據(jù)是否成功
[root@localhost ~]# cd xtrabackup/full/
[root@localhost full]# ls
2023-10-07_18-47-56
完全備份恢復(fù)流程
1.4停止數(shù)據(jù)庫
# systemctl stop mysqld 提前將防火墻與selinux關(guān)閉
1.5清理環(huán)境
# rm -rf /var/lib/mysql/*
1.6重演回滾
# innobackupex --apply-log --redo-only /root/xtrabackup/full/2023-10-07_18-47-56/
語法: innobackupex? ?--apply-log? --redo-only? /存放完全備份數(shù)據(jù)的目錄
恢復(fù)之前需要確認配置文件內(nèi)有數(shù)據(jù)庫目錄指定,不然xtrabackup不知道恢復(fù)到哪里
?
# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
1.7數(shù)據(jù)恢復(fù)
# innobackupex --copy-back /存放完全備份的地址
語法: innobackupex ?--copy-back? ?/存放完全備份地址
1.8更改權(quán)限
數(shù)據(jù)恢復(fù)以后會在/var/lib/mysql 下生成新的文件 這些文件在運行啟動MySQL服務(wù)時 會用到,因此這些文件的屬組以及屬主都得是MySQL
# chown -R mysql.mysql *
1.9啟動服務(wù)
# systemctl start mysqld
增量備份流程
實驗代替語言
2.1首先一個數(shù)據(jù)庫里面有 表數(shù)據(jù)
mysql> select * from student;
+------+------+------+
| id | name | time |
+------+------+------+
| 1 | aaa | 1 |
+------+------+------+
1 row in set (0.00 sec)
2.2完全備份它
首先創(chuàng)建存放完全備份目錄
# mkdir /root/xtrabackup/full/ -p
存放增量備份的目錄
# mkdir /root/xtrabackup/zlbf/ -p
完全備份
# innobackupex --user=root --password='Qianfeng@123' /root/xtrabackup/full/
2.3到數(shù)據(jù)庫插入新的數(shù)據(jù)
mysql> use school;mysql> insert into student values(2,'bbb',2);
2.4備份新的數(shù)據(jù)
# innobackupex --user=root --password='Qianfeng@123' --incremental /root/xtrabackup/zlbf/ --incremental-basedir /root/xtrabackup/full/2023-10-07_19-23-32/
2.5停止服務(wù),清理環(huán)境
# systemctl stop mysqld
# rm -rf /var/lib/mysql/*
2.6回滾
首先回滾最先開始備份的完全備份好的數(shù)據(jù)
# innobackupex --apply-log --redo-only /root/xtrabackup/full/2023-10-07_19-23-32/接著回滾增量備份的數(shù)據(jù),而增量數(shù)據(jù)實在完全備份以后新增的數(shù)據(jù),因此
# innobackupex --apply-log --redo-only /root/xtrabackup/full/2023-10-07_19-23-32/ --incremental-dir /root/xtrabackup/zlbf/2023-10-07_19-31-01/
回滾非完全備份的數(shù)據(jù) 語法:??innobackupex ?--apply-log --redo-only /完全備份的數(shù)據(jù)路徑
--incremental-dir? ? /這次要回滾的備份數(shù)據(jù)
也就是前面是 回滾完全備份的數(shù)據(jù)? 將后面追加的備份數(shù)據(jù)加到完全備份數(shù)據(jù)里
2.7恢復(fù)
由于前面回滾的時候?qū)⑷康膫浞輸?shù)據(jù)都回滾到完全備份那里,因此恢復(fù)的時候只需要恢復(fù)完全備份的數(shù)據(jù)即可
# innobackupex --copy-back /root/xtrabackup/full/2023-10-07_19-23-32/
2.8設(shè)置權(quán)限
# chown -R mysql.mysql /var/lib/mysql/*
2.9啟動服務(wù)即可
# systemctl start mysqld
差量備份
以周一周二 周三為例
3.1先完全備份周一,增量備份周二
準(zhǔn)備數(shù)據(jù)庫
mysql> select * from student;
+------+------+------+
| id | name | time |
+------+------+------+
| 1 | aaa | 1 |
+------+------+------+
1 row in set (0.00 sec)完全備份周一
# innobackupex --user=root --password='Qianfeng@123' /root/xtrabackup/full/插入數(shù)據(jù)周二
mysql> select * from student;
+------+------+------+
| id | name | time |
+------+------+------+
| 1 | aaa | 1 |
| 2 | bbb | 2 |
+------+------+------+增量備份周二
# innobackupex --user=root --password='Qianfeng@123' --incremental /root/xtrabackup/zlbf/ --incremental-basedir /root/xtrabackup/full/2023-10-07_20-09-51/
3.2添加數(shù)據(jù)周三,然后差異備份
ysql> select * from student;
+------+------+------+
| id | name | time |
+------+------+------+
| 1 | aaa | 1 |
| 2 | bbb | 2 |
| 3 | bbb | 3 |
+------+------+------+
3 rows in set (0.01 sec)差異備份,差異備份是基于上一次完全備份之后的 因此
# innobackupex --user=root --password='Qianfeng@123' --incremental /root/xtrabackup/xybf/ --incremental-basedir /root/xtrabackup/full/2023-10-07_20-09-51/刪除數(shù)據(jù)庫school
mysql> drop database school;
Query OK, 1 row affected (0.01 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
3.3停止服務(wù),清理環(huán)境
# systemctl stop mysqld
# cd /var/lib/mysql
# rm -rf *
3.4回滾
回滾周一
# innobackupex --apply-log --redo-onpy /root/xtrabackup/full/2023-10-07_20-09-51/回滾周三,將其回滾到周一中,因為周三是差異備份,他是基于上一次完全備份以后的,因此周三 含有周二 周三的內(nèi)容
# innobackupex --apply-log --redo-onpy /root/xtrabackup/full/2023-10-07_20-09-51/ --incremental-dir /root/xtrabackup/xybf/2023-10-07_20-21-20/
3.5恢復(fù)
由于數(shù)據(jù)都回滾到周一的完全備份當(dāng)中,因此只需要恢復(fù)周一內(nèi)容即可
# innobackupex --copy-back root/xtrabackup/full/2023-10-07_20-09-51/
3.6設(shè)置權(quán)限
# chown -R mysql.mysql /var/lib/mysql/*
3.7啟動服務(wù):
# systemctl start mysqld