您好,登錄后才能下訂單哦!
這篇文章主要介紹“GTID的基本知識(shí)有哪些”,在日常操作中,相信很多人在GTID的基本知識(shí)有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”GTID的基本知識(shí)有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
一、GTID的基本知識(shí)
GTID的概念:
在源(主)服務(wù)器上提交的每個(gè)事務(wù),將創(chuàng)建和其相關(guān)聯(lián)的唯一標(biāo)識(shí)符的全局事物標(biāo)識(shí)符。
此標(biāo)識(shí)符不但是唯一的,而且在所有的復(fù)制從庫(kù)中都是唯一的。所有事物和所有GTID之間都有一對(duì)一的映射關(guān)系。
GTID的基本描述:
GTID表示為一對(duì)坐標(biāo),用冒號(hào)(:)分隔,如下所示:
GTID = source_id:transaction_id。
source_id標(biāo)識(shí)源服務(wù)器。通常,服務(wù)器的server_uuid用于此目的。
transaction_id是一個(gè)序列號(hào),由該服務(wù)器上的事務(wù)提交順序決定;
例如,要提交的第一個(gè)事務(wù)具有1作為其transaction_id,并且要在同一源務(wù)器上提交的第十個(gè)事務(wù)被分配了10作為transaction_id。
一個(gè)事務(wù)在一個(gè)GTID中不能有0作為序列號(hào)。
例如,原來(lái)在server_uuid等于3E11FA47-71CA-11E1-9E33-C80AA9429562服務(wù)器上提交的第二十三個(gè)事務(wù)具有這個(gè)GTID:
3E11FA47-71CA-11E1-9E33-C80AA9429562:23
這種格式用于表示語(yǔ)句的輸出中的GTID,例如SHOW SLAVE STATUS以及二進(jìn)制日志
可以使用語(yǔ)句來(lái)查看UUID
show variables like '%UUID%';
正如在SHOW MASTER STATUS或SHOW SLAVE STATUS等語(yǔ)句的輸出中所寫(xiě)的,源自同一服務(wù)器的GTID序列可能會(huì)被合并為單個(gè)表達(dá)式,如下所示:
3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5
上面顯示的示例表示源自MySQL服務(wù)器的第一個(gè)到第五個(gè)事務(wù),其server_uuid是3E11FA47-71CA-11E1-9E33-C80AA9429562。
該格式也用于提供START SLAVE選項(xiàng)SQL_BEFORE_GTIDS和SQL_AFTER_GTIDS所需的參數(shù)。
GTID集以幾種方式在MySQL服務(wù)器中使用。例如,由gtid_executed和gtid_purged系統(tǒng)變量存儲(chǔ)的值表示為GTID集合。
另外,函數(shù)GTID_SUBSET()和GTID_SUBTRACT()需要GTID集作為輸入。當(dāng)從庫(kù)變量返回GTID集合時(shí),UUID按字母順序排列,數(shù)字區(qū)間按照升序排列。
GTID總是保存在主從之間。這意味著可以通過(guò)檢查二進(jìn)制日志來(lái)確定應(yīng)用于任何從庫(kù)的任何事務(wù)的來(lái)源。 另外,一旦給定GTID的事務(wù)在給定的服務(wù)器上被提交,任何具有相同GTID的后續(xù)事務(wù)都被該服務(wù)器忽略。因此,在主站上提交的事務(wù)不能在從站上應(yīng)用一次,這有助于保證一致性。
當(dāng)使用GTID時(shí),從庫(kù)不需要任何非本地?cái)?shù)據(jù),例如主庫(kù)上文件的名稱(chēng)和該文件中的位置。所有用于與主庫(kù)同步的必要信息都直接從復(fù)制數(shù)據(jù)流中獲取。 GTID替換之前所需的文件偏移對(duì),以確定在主庫(kù)和從庫(kù)之間啟動(dòng),停止或恢復(fù)數(shù)據(jù)流的點(diǎn)。因此,在CHANGE MASTER TO語(yǔ)句中不要包含MASTER_LOG_FILE或MASTER_LOG_POS選項(xiàng),該語(yǔ)句用于引導(dǎo)從庫(kù)從給定主庫(kù)復(fù)制;相反,開(kāi)啟gtid之后,只需要啟用MASTER_AUTO_POSITION選項(xiàng)。有關(guān)使用基于GTID的復(fù)制配置和啟動(dòng)主庫(kù)和從、庫(kù)所需的確切步驟。GTID的生成和生命周期由以下步驟組成:
1)事務(wù)在主服務(wù)器上執(zhí)行并提交。
使用主庫(kù)的UUID和此庫(kù)上尚未使用的最小非零事務(wù)序列號(hào)為該事務(wù)分配一個(gè)GTID; GTID被寫(xiě)入到master的二進(jìn)制日志中(直接在日志中的事務(wù)本身之前)。
2)二進(jìn)制日志數(shù)據(jù)傳輸?shù)綇膸?kù)并存儲(chǔ)在從庫(kù)的中繼日志中,從庫(kù)讀取GTID并將其gtid_next系統(tǒng)變量的值設(shè)置為此GTID。這告訴備庫(kù),下一個(gè)事務(wù)必須使用這個(gè)GTID記錄。需要注意的是,slave在會(huì)話上下文中設(shè)置gtid_next。
3)從庫(kù)驗(yàn)證這個(gè)GTID是否已經(jīng)被用來(lái)在自己的二進(jìn)制日志中記錄事務(wù)。 如果這個(gè)GTID沒(méi)有被使用,那么從設(shè)備寫(xiě)入GTID,應(yīng)用事務(wù)并將事務(wù)寫(xiě)入其二進(jìn)制日志。
通過(guò)首先讀取和檢查事務(wù)的GTID,在處理事務(wù)本身之前,從庫(kù)不僅保證在從庫(kù)上沒(méi)有應(yīng)用具有此GTID的先前事務(wù),而且還確保沒(méi)有其他會(huì)話已經(jīng)讀取了該GTID但尚未提交相關(guān)的交易。換句話說(shuō),多個(gè)客戶端不允許同時(shí)應(yīng)用相同的事務(wù)。
4)因?yàn)間tid_next不為空,所以從庫(kù)不會(huì)為這個(gè)事務(wù)生成一個(gè)GTID,而是把存儲(chǔ)在這個(gè)變量中的GTID,也就是從它的二進(jìn)制日志中事務(wù)之前立即從主機(jī)獲得的GTID寫(xiě)入。
mysql.gtid_executed表
從MySQL 5.7.5開(kāi)始,GTID被存儲(chǔ)在mysql數(shù)據(jù)庫(kù)中名為gtid_executed的表中。
對(duì)于每個(gè)GTID或其代表的一組GTID,該表中的一行包含源服務(wù)器的UUID以及該組的起始和結(jié)束事務(wù)ID; 對(duì)于僅引用單個(gè)GTID的行,這兩個(gè)值是相同的。
當(dāng)安裝或升級(jí)MySQL服務(wù)器時(shí),會(huì)使用CREATE TABLE語(yǔ)句創(chuàng)建mysql.gtid_executed表(如果它尚不存在)
WARNING:與其他MySQL系統(tǒng)表一樣,不要試圖自己創(chuàng)建或修改這個(gè)表。
mysql.gtid_executed表允許在從庫(kù)上禁用二進(jìn)制日志記錄時(shí)使用GTID,并且在二進(jìn)制日志丟失時(shí)保留GTID歷史記錄。
只有當(dāng)gtid_mode為ON或ON_PERMISSIVE時(shí),GTID才存儲(chǔ)在mysql.gtid_executed表中。GTID的存儲(chǔ)點(diǎn)取決于是否啟用二進(jìn)制日志記錄:
1)如果禁用二進(jìn)制日志記錄(log_bin為OFF),或者如果log_slave_updates被禁用,則服務(wù)器將屬于每個(gè)事務(wù)的GTID與事務(wù)一起存儲(chǔ)在表中。
另外,表以用戶可配置的速率周期性壓縮;這種情況只適用于禁用二進(jìn)制日志記錄或從庫(kù)更新日志記錄的復(fù)制從庫(kù)。
它不適用于復(fù)制主庫(kù),因?yàn)樵谥鲙?kù)上,必須啟用二進(jìn)制日志記錄才能進(jìn)行復(fù)制。
2)如果啟用了二進(jìn)制日志記錄(log_bin為ON),則無(wú)論何時(shí)二進(jìn)制日志被輪換或服務(wù)器關(guān)閉,服務(wù)器都將寫(xiě)入前一個(gè)二進(jìn)制日志的所有事務(wù)的GTID寫(xiě)入mysql.gtid_executed表。
這種情況適用于啟用二進(jìn)制日志記錄的復(fù)制主節(jié)點(diǎn)或復(fù)制從節(jié)點(diǎn)。
在服務(wù)器意外停止的情況下,當(dāng)前二進(jìn)制日志中的GTID集不會(huì)保存在mysql.gtid_executed表中。在這種情況下,這些GTID將在恢復(fù)過(guò)程中添加到表中,并添加到gtid_executed系統(tǒng)變量中的一組GTID中。
啟用二進(jìn)制日志記錄時(shí),mysql.gtid_executed表不會(huì)為所有已執(zhí)行的事務(wù)提供完整的GTID記錄。該信息由gtid_executed系統(tǒng)變量的全局值提供。
mysql.gtid_executed表由RESET MASTER歸零。
mysql.gtid_executed表壓縮
隨著時(shí)間的推移,mysql.gtid_executed表可能會(huì)被許多行填充,這些行涉及到來(lái)自同一臺(tái)服務(wù)器的單個(gè)GTID,并且其事務(wù)ID構(gòu)成一個(gè)序列
如果通過(guò)用跨越事務(wù)標(biāo)識(shí)符的整個(gè)間隔的單個(gè)行替換每個(gè)這樣的行集合來(lái)周期性地壓縮該表格,則可以節(jié)省相當(dāng)大的空間
啟用GTID時(shí),服務(wù)器會(huì)定期在mysql.gtid_executed表上執(zhí)行這種類(lèi)型的壓縮。您可以通過(guò)設(shè)置execution_gtids_compression_period系統(tǒng)變量來(lái)控制在表壓縮之前允許經(jīng)過(guò)的事務(wù)數(shù),從而控制壓縮率。
這個(gè)變量的默認(rèn)值是1000; 這意味著,默認(rèn)情況下,表格的壓縮在每1000個(gè)事務(wù)之后執(zhí)行。將execution_gtid_compression_period設(shè)置為0將阻止完全執(zhí)行壓縮; 但是,如果執(zhí)行此操作,則應(yīng)該為gtid_executed表可能需要的磁盤(pán)空間大量增加做好準(zhǔn)備。
對(duì)mysql.gtid_executed表的壓縮由名為thread/sql/compress_gtid_table的專(zhuān)用前臺(tái)線程執(zhí)行。此線程未在SHOW PROCESSLIST的輸出中列出,但可以在線程表中查看該行,如下所示:
SELECT * FROM performance_schema.threads WHERE NAME LIKE '%gtid%'\G
thread/sql/compress_gtid_table線程通常會(huì)休眠,直到execution_gtids_compression_period事務(wù)被執(zhí)行,然后喚醒以執(zhí)行前面所述的對(duì)mysql.gtid_executed表的壓縮。 然后休眠,直到另一個(gè)execution_gtids_compression_period事務(wù)發(fā)生,然后醒來(lái)再次執(zhí)行壓縮,無(wú)限期地重復(fù)這個(gè)循環(huán)。 禁用二進(jìn)制日志記錄時(shí)將此值設(shè)置為0意味著線程始終處于睡眠狀態(tài),永遠(yuǎn)不會(huì)喚醒。
普通復(fù)制模式切換為gtid模式,在5.6環(huán)境只能冷操作,5.7環(huán)境可在線操作
二.1、在主從復(fù)制中使用GTID(5.6環(huán)境冷操作)
最簡(jiǎn)單的GTID復(fù)制拓?fù)涞膯?dòng)過(guò)程中的關(guān)鍵步驟(由一個(gè)主庫(kù)和一個(gè)從庫(kù)組成)如下所示:
1)如果復(fù)制已經(jīng)在運(yùn)行,則通過(guò)將它們?cè)O(shè)置為只讀來(lái)同步這兩個(gè)服務(wù)器。
2)停止兩臺(tái)服務(wù)器。
3)重新啟動(dòng)兩臺(tái)服務(wù)器并啟用GTID并配置正確的選項(xiàng)。
4)指示從服務(wù)器使用主服務(wù)器作為復(fù)制數(shù)據(jù)源并使用自動(dòng)定位。完成這一步所需的SQL語(yǔ)句在本節(jié)后面的例子中描述。
5)采取新的備份。包含沒(méi)有GTID的交易的二進(jìn)制日志不能在啟用了GTID的服務(wù)器上使用,因此在此點(diǎn)之前進(jìn)行的備份不能用于新配置。
6)啟動(dòng)從服務(wù)器,然后在兩臺(tái)服務(wù)器上再次禁用只讀模式,以便他們可以接受更新。
具體過(guò)程:
1,主庫(kù)設(shè)置為read_only,使從庫(kù)追上主庫(kù)
2,主從都關(guān)閉MySQL服務(wù)
3,主從都在my.cnf文件中配置gtid的啟動(dòng)參數(shù)
gtid_mode=ON
enforce-gtid-consistency=true
4,從庫(kù)使用skip-slave-start啟動(dòng)MySQL服務(wù)
從庫(kù)使用MASTER_AUTO_POSITION = 1。配置主從
CHANGE MASTER TO
MASTER_HOST = 'host',
MASTER_PORT = port,
MASTER_USER = 'user',
MASTER_PASSWORD = 'password',
MASTER_AUTO_POSITION = 1;
MASTER_LOG_FILE選項(xiàng)和MASTER_LOG_POS選項(xiàng)都不能與MASTER_AUTO_POSITION設(shè)置為1一起使用
5,采取gtid之后,需要做一個(gè)新的備份,因?yàn)殚_(kāi)啟gtid之前做的備份不可用了
例如,您可以在執(zhí)行備份的服務(wù)器上執(zhí)行FLUSH LOGS。 然后,明確地進(jìn)行備份,或者等待您可能已經(jīng)設(shè)置的任何定期備份例程的下一次迭代。
6,從庫(kù)開(kāi)啟主從
主庫(kù)關(guān)閉
Using GTIDs for Failover and Scaleout
將全局事務(wù)標(biāo)識(shí)符(GTID)用于MySQL復(fù)制時(shí),有許多技術(shù)用于配置新的從站,然后可用于擴(kuò)展,并根據(jù)故障轉(zhuǎn)移的需要提升為主站。本節(jié)介紹以下技術(shù):
簡(jiǎn)單的復(fù)制
將數(shù)據(jù)和事務(wù)復(fù)制到從站
注入空的交易
排除與gtid_purged的交易
恢復(fù)GTID模式從站
全局事務(wù)標(biāo)識(shí)符被添加到MySQL復(fù)制中,以便簡(jiǎn)化對(duì)復(fù)制數(shù)據(jù)流和特別是故障轉(zhuǎn)移活動(dòng)的一般管理。 每個(gè)標(biāo)識(shí)符唯一標(biāo)識(shí)一組構(gòu)成一個(gè)事務(wù)的二進(jìn)制日志事件。 GTID在對(duì)數(shù)據(jù)庫(kù)進(jìn)行更改時(shí)扮演著重要的角色:服務(wù)器會(huì)自動(dòng)跳過(guò)任何具有服務(wù)器識(shí)別為之前處理過(guò)的標(biāo)識(shí)符的事務(wù)。 此行為對(duì)于自動(dòng)復(fù)制定位和正確的故障轉(zhuǎn)移至關(guān)重要。
在二進(jìn)制日志中捕獲標(biāo)識(shí)符和包含給定事務(wù)的事件集合之間的映射。 使用來(lái)自其他現(xiàn)有服務(wù)器的數(shù)據(jù)供應(yīng)新服務(wù)器時(shí),這帶來(lái)了一些挑戰(zhàn)。 為了再現(xiàn)在新服務(wù)器上設(shè)置的標(biāo)識(shí)符,需要將標(biāo)識(shí)符從舊服務(wù)器復(fù)制到新服務(wù)器,并保持標(biāo)識(shí)符與實(shí)際事件之間的關(guān)系。 這對(duì)于恢復(fù)作為候選者立即可用的從站成為故障切換或切換的新主站是必要的。
簡(jiǎn)單的復(fù)制。在新服務(wù)器上重現(xiàn)所有標(biāo)識(shí)符和事務(wù)的最簡(jiǎn)單方法是將新服務(wù)器變?yōu)榫哂腥繄?zhí)行歷史記錄的主服務(wù)器的從服務(wù)器,并在兩臺(tái)服務(wù)器上啟用全局事務(wù)標(biāo)識(shí)符。
一旦復(fù)制啟動(dòng),新的服務(wù)器將從主服務(wù)器復(fù)制整個(gè)二進(jìn)制日志,從而獲得有關(guān)所有GTID的所有信息。
該方法簡(jiǎn)單有效,但要求從機(jī)從主機(jī)讀取二進(jìn)制日志; 有時(shí)需要較長(zhǎng)的時(shí)間才能使新的從機(jī)跟上主機(jī),所以這種方法不適用于快速故障切換或備份恢復(fù)。 本節(jié)介紹如何通過(guò)將二進(jìn)制日志文件復(fù)制到新服務(wù)器來(lái)避免從主服務(wù)器獲取所有執(zhí)行歷史記錄。
將數(shù)據(jù)和事務(wù)復(fù)制到從站。 當(dāng)源服務(wù)器先前已經(jīng)處理了大量的事務(wù)時(shí),執(zhí)行整個(gè)事務(wù)歷史可能是耗時(shí)的,而這可能是設(shè)置新復(fù)制從服務(wù)器時(shí)的主要瓶頸。 為了消除這種需求,可以將源服務(wù)器包含的數(shù)據(jù)集,二進(jìn)制日志和全局事務(wù)信息的快照導(dǎo)入到新的從服務(wù)器。 源服務(wù)器可以是主服務(wù)器,也可以是從服務(wù)器,您必須確保源在復(fù)制數(shù)據(jù)之前處理了所有必需的事務(wù)。
二.2 在主從復(fù)制中使用GTID(5.7環(huán)境在線操作)
1.在每臺(tái)服務(wù)器上執(zhí)行:
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
2.在每臺(tái)服務(wù)器上執(zhí)行:
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
3.在每臺(tái)服務(wù)器上執(zhí)行:
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
4.在每臺(tái)服務(wù)器上執(zhí)行:
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
5.在每臺(tái)服務(wù)器上,等到狀態(tài)變量ONGOING_ANONYMOUS_TRANSACTION_COUNT為零,可以使用下面的語(yǔ)句查詢:
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
在復(fù)制從屬設(shè)備上,理論上可能的是,它顯示為零,然后再次為非零。這不是問(wèn)題,只要一次顯示零即可。
6. 等到第5步生成的所有事務(wù)復(fù)制到所有服務(wù)器,您可以在不停止更新的情況下執(zhí)行此操作:唯一重要的是所有匿名事務(wù)都被復(fù)制。
7.如果您使用二進(jìn)制日志來(lái)進(jìn)行復(fù)制以外的任何其他操作(例如,即時(shí)備份和還原),請(qǐng)等到您不需要具有沒(méi)有GTID的事務(wù)的舊的二進(jìn)制日志。
例如,在步驟6完成之后,您可以在執(zhí)行備份的服務(wù)器上執(zhí)行FLUSH LOGS。 然后,明確地進(jìn)行備份,或者等待您設(shè)置的任何定期備份例程的下一次迭代。
理想情況下,等待服務(wù)器清除第6步完成時(shí)存在的所有二進(jìn)制日志。 還等待在步驟6之前進(jìn)行的任何備份過(guò)期。
Important--沒(méi)回頭路了
這是第二重要的一點(diǎn)。 理解包含匿名事務(wù)的二進(jìn)制日志,而不使用GTIDs在下一步之后不能使用是非常重要的。 完成此步驟之后,您必須確保沒(méi)有GTID的事務(wù)不存在于拓?fù)渲械娜魏挝恢谩?br/>8.在每臺(tái)服務(wù)器上執(zhí)行:
SET @@GLOBAL.GTID_MODE = ON;
9.在每臺(tái)服務(wù)器上, 在my.cnf參數(shù)文件中添加gtid-mode=ON
gtid_mode=ON
#log_slave_updates=1
enforce-gtid-consistency=1
10.change master-從庫(kù)
STOP SLAVE [FOR CHANNEL 'channel'];
CHANGE MASTER TO MASTER_AUTO_POSITION = 1 [FOR CHANNEL 'channel'];
START SLAVE [FOR CHANNEL 'channel'];
二.3 在主從復(fù)制中關(guān)閉GTID(MySQL 5.7.6或更高版本 環(huán)境在線操作)
1.在每個(gè)從站上執(zhí)行以下操作,如果使用多源復(fù)制,請(qǐng)為每個(gè)通道執(zhí)行此操作,并包含F(xiàn)OR CHANNEL通道子句
語(yǔ)法:
STOP SLAVE [FOR CHANNEL 'channel'];
CHANGE MASTER TO MASTER_AUTO_POSITION = 0, MASTER_LOG_FILE = file, MASTER_LOG_POS = position [FOR CHANNEL 'channel'];
START SLAVE [FOR CHANNEL 'channel'];
使用MASTER_LOG_FILE和MASTER_LOG_POS開(kāi)啟主從
CHANGE MASTER TO
MASTER_AUTO_POSITION = 0,
MASTER_LOG_FILE = 'mysql-bin.000008',
MASTER_LOG_POS = 677786318;
2.在每臺(tái)服務(wù)器上執(zhí)行:
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
3.在每臺(tái)服務(wù)器上執(zhí)行:
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
4.在每個(gè)服務(wù)器上,等待變量@@ GLOBAL.GTID_OWNED等于空字符串。 這可以使用以下方法檢查:
SELECT @@GLOBAL.GTID_OWNED;
在復(fù)制從機(jī)上,理論上可能這是空的,然后又是非空的。 這不是一個(gè)問(wèn)題,只要它是空的就足夠了。
5.等待任何二進(jìn)制日志中當(dāng)前存在的所有事務(wù)復(fù)制到所有從站。 有關(guān)檢查所有匿名事務(wù)已復(fù)制到所有服務(wù)器的方法。
6.如果您將二進(jìn)制日志用于除復(fù)制以外的其他任何操作,例如執(zhí)行時(shí)間點(diǎn)備份或還原:請(qǐng)等到您不需要具有GTID事務(wù)的舊的二進(jìn)制日志。
例如,在步驟5完成之后,您可以在要備份的服務(wù)器上執(zhí)行FLUSH LOGS。然后,明確地進(jìn)行備份,或者等待您設(shè)置的任何定期備份例程的下一次迭代。
理想情況下,等待服務(wù)器清除第5步完成時(shí)存在的所有二進(jìn)制日志。等待第5步之前的備份過(guò)期。
重要
這是這個(gè)程序中的一個(gè)重點(diǎn)。理解包含GTID事務(wù)的日志在下一步之后不能使用是很重要的。在繼續(xù)之前,您必須確定GTID事務(wù)不存在于拓?fù)渲械娜魏蔚胤健?br/>7.在每臺(tái)服務(wù)器上執(zhí)行:
SET @@GLOBAL.GTID_MODE = OFF;
8.在每臺(tái)服務(wù)器上, 在my.cnf參數(shù)文件中注釋掉gtid-mode相關(guān)的參數(shù)
#gtid_mode=ON
#log_slave_updates=1
#enforce-gtid-consistency=1
到此,關(guān)于“GTID的基本知識(shí)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。