方法/步驟
創(chuàng)新互聯(lián)建站主營虎丘網(wǎng)站建設(shè)的網(wǎng)絡公司,主營網(wǎng)站建設(shè)方案,APP應用開發(fā),虎丘h5微信小程序開發(fā)搭建,虎丘網(wǎng)站營銷推廣歡迎虎丘等地區(qū)企業(yè)咨詢
首先,我們需要確定自己的Mysql數(shù)據(jù)庫的版本,因為my sql數(shù)據(jù)庫是從5.0.2版本才開始支持觸發(fā)器的。
我推薦大家在電腦的dos命令界面中輸入 mysql --version,來獲取mysql的版本號,注意version的兩個橫線和之前的mysql是有一個空格的。
上一步獲取了我們的mysql版本號,這一不我們就開始建立觸發(fā)器了。我采用的以視圖加代碼的方式創(chuàng)建,我們在數(shù)據(jù)表中找到要執(zhí)行刪除操作的表,然后右鍵設(shè)計表
這樣我們就打開了表的設(shè)計頁面,可以看到有一個觸發(fā)器選項卡,我們點擊“觸發(fā)器”
可以看到對應的選項,我們在名里面添加我們需要新建的觸發(fā)器的名字,在觸發(fā)選項中選擇before或者after,然后在插入、更新、刪除三個選項中勾選一個。
這樣我們就建立了一個名為“datri”的觸發(fā)器,在刪除操作執(zhí)行之后觸發(fā)
然后我們在下面的定義下面的框中輸入我們需要執(zhí)行的操作。然后點擊sql預覽,可以看到整個觸發(fā)器的代碼
最后就是保存了,由于我們做的是觸發(fā)器,保存之后,在執(zhí)行刪除操作時,這個觸發(fā)器才相當于 被執(zhí)行。
一、定義MySQL Cluster的TCP/IP連接
TCP/IP是MySQL集群用于建立連接的默認傳輸協(xié)議,正常情況下不需要定義連接??墒褂谩癧TCP DEFAULT]”或“[TCP]”進行定義。
1. SendBufferMemory
TCP傳輸緩存。默認值為 256KB。
2. SendSignalId
通過網(wǎng)絡傳輸消息ID。默認禁止該特性(取值: Y/N或1/0)。
3. Checksum
啟用該參數(shù)將在所有消息置于發(fā)送緩沖之前,為所有參數(shù)計算校驗和。默認禁止該特性(取值: Y/N或1/0)。
4. ReceiveBufferMemory
指定從TCP/IP Socket接收數(shù)據(jù)時所使用的緩沖大小。幾乎不需要更改該參數(shù)的默認值,默認值為64KB。
二、定義數(shù)據(jù)結(jié)點默認行為
NoOfReplicas為必要參數(shù),使用“[NDBD DEFAULT]”進行定義。
1. NoOfReplicas
定義集群中每個表保存的拷貝數(shù),另外還指定結(jié)點組的大小。結(jié)點組指保存相同信息的結(jié)點集合。通常情況下不需要為該參數(shù)指定值。NoOfReplicas沒有默認值,最大的可能值為 4。
三、定義管理服務器(MGM)
用于配置管理服務器的行為。下面的參數(shù)均可以被忽略,如果是這樣,將使用其默認值。如果沒有定義ExecuteOnComputer或HostName,則會指定為localhost??墒褂谩癧NDB_MGMD]”定義單個管理結(jié)點的行為,也可使用“[NDB_MGMD DEFAULT]”定義多個管理結(jié)點的默認行為。
1. NodeId
集群中結(jié)點的唯一標識,取值 1~63。
2. HostName
指定結(jié)點主機名或IP。
3. ExecuteOnComputer
引用在“[COMPUTER]”部分中定義的計算機之一。
4. PortNumber
管理服務器監(jiān)聽端口(默認值: 2202)。
5. LogDestination
結(jié)點日志出處理方式,可取下述值:
5.1. CONSOLE
將日志輸出到標準輸出設(shè)備(stdout)。
5.2. SYSLOG:facility=syslog
將日志發(fā)送到syslog(系統(tǒng)日志)軟設(shè)備,可能值:
auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, syslog
, user, uucp, local0, local12~7
5.3. FILE:filename=/var/log/mgmd.log,maxsize=1000000,maxfiles=6
講日志輸出到文件,可指定一下值:
filename:日志文件名稱。
maxsize:日志文件最大尺寸,大于該尺寸時自動創(chuàng)建新日志文件。
maxfiles:日志文件最大數(shù)量。
6. ArbitrationRank
指定哪個結(jié)點扮演決策角色,只有MGM結(jié)點和SQL結(jié)點可以使用(默認值:1)。通常情況下,應將值設(shè)為 1,并將所有SQL結(jié)點設(shè)為 0,以MGM服務器作為決策程序??扇∠率鲋抵唬?/p>
0:該結(jié)點永遠不用作決策。
1:該結(jié)點具有高優(yōu)先級。
2:該結(jié)點具有低有限級。
7. ArbitrationDelay
指定管理服務器對決策請求的延遲時間,毫秒為單位,默認為 0。通常情況下不需要改變它。
8. DataDir
保存管理服務器輸出文件的位置,包括日志,進程輸出文件,以及程序的pid文件。對于日志文件,可通過設(shè)置LogDestination的FILE參數(shù)覆蓋它。
四、定義數(shù)據(jù)結(jié)點(NDBD)
用于配置數(shù)據(jù)結(jié)點的行為。ExecuteOnComputer或HostName為必要參數(shù)。對于各種參數(shù),可以使用后綴k、M或G指明單位。使用“[NDBD]”進行定義。
1. NodeId
啟動結(jié)點時,可在命令行中分配ID(即數(shù)據(jù)結(jié)點ID),也能在配置文件中分配。
2. HostName
指定結(jié)點主機名或IP。
3. ExecuteOnComputer
引用在“[COMPUTER]”部分中定義的計算機之一。
4. DataDir
指定存放跟蹤文件,日志文件,pid文件以及錯誤日志的目錄。
5. BackupDataDir
指定存放備份的目錄,默認為 {FileSystemPath}/BACKUP。
6. DataMemory
指定數(shù)據(jù)內(nèi)存,默認值為 80MB,最小值 1MB,無大小限制。
7. IndexMemory
指定索引內(nèi)存,默認值為 18MB,最小值 1MB,無大小限制。
8. MaxNoOfConcurrentTransactions
用于設(shè)定結(jié)點內(nèi)可能的并發(fā)事務數(shù),默認值為 4096。對于所有結(jié)點,必須將參數(shù)設(shè)置為相同的值。
9. MaxNoOfConcurrentOperations
設(shè)置能同時出現(xiàn)在更新階段或同時鎖定的記錄數(shù)。默認值為 32768。
10. MaxNoOfLocalOperations
默認情況下,將按照1.1 * MaxNoOfConcurrentOperations計算該參數(shù),它適合于具有很多并發(fā)事務,但不存在特大事務的系統(tǒng)。如果需要在某一時間處理特大事務,而且有很多結(jié)點,最好通過明確指定該參數(shù)以覆蓋默認值。
11. MaxNoOfConcurrentIndexOperations
該參數(shù)的默認值為8192。只有在極其罕見的情況下,需要使用唯一性哈希索引執(zhí)行極高的并行操作時,才有必要增大該值。如果確信該集群不需要高的并行操作,可以使用較小的值并節(jié)省內(nèi)存。
12. MaxNoOfFiredTriggers
默認值是4000,它足以應付大多數(shù)情況。在某些情況下,如果認為在集群中對并行操作的要求并不高, 甚至還能降低它。
13. TransactionBufferMemory
該參數(shù)影響的內(nèi)存用于跟蹤更新索引表和讀取唯一索引時執(zhí)行的操作。該內(nèi)存用于保存關(guān)于這類操作的鍵和列信息。幾乎不需要更改該參數(shù)的默認值。
14. MaxNoOfConcurrentScans
該參數(shù)用于控制可在集群中執(zhí)行的并行掃描的數(shù)量。默認值為256,最大值為500。
15. MaxNoOfLocalScans
如果很多掃描不是完全并行化的,指定本地掃描記錄的數(shù)量。
16. BatchSizePerLocalScan
該參數(shù)用于計算鎖定記錄的數(shù)量。要想處理很多并發(fā)掃描操作,需要這類記錄。默認值是64,該值與SQL結(jié)點中定義的 ScanBatchSize 關(guān)系密切。
17. LongMessageBuffer
用于在單個結(jié)點內(nèi)和結(jié)點之間傳遞消息的內(nèi)部緩沖。盡管幾乎不需要改變它,但它仍是可配置的。默認情況下,它被設(shè)置為1MB。
18. NoOfFragmentLogFiles
設(shè)置結(jié)點的REDO日志文件的大小,默認值為 8。
19. MaxNoOfSavedMessages
設(shè)置跟蹤文件的最大數(shù),默認值為 25。
20. MaxNoOfAttributes
設(shè)置可在集群中定義的屬性數(shù)量,默認值為 1000,最小值為 32。
21. MaxNoOfTables
設(shè)置集群中最大表對象數(shù)量。默認值為128,最小值為 8,最大值為 1600。
22. MaxNoOfOrderedIndexes
對于集群中的每個有序索引,會分配一個對象,用于描述索引的內(nèi)容,以及它的存儲片段。在默認情況下,每個如此定義的索引還定義了一個有序索引。每個唯一索引和主鍵都具有一個有序索引和一個哈希索引。MaxNoOfOrderedIndexes設(shè)置有序索引的總數(shù),這是系統(tǒng)任何時候能夠使用的有序索引的總數(shù)。這個參數(shù)的默認值是128。每個結(jié)點中的每個索引對象尺寸大約為10KB。
23. MaxNoOfUniqueHashIndexes
對于每個不是主鍵的唯一索引,會分配一個表,用于將唯一鍵映射至索引表的主鍵。在默認情況下,還會為每個唯一索引定義一個有序索引。想要避免這種情況,當定義唯一索引時,你還必須指定“USING HASH”選項。默認值是64。每個結(jié)點中的每個索引的尺寸大約為15KB。
24. MaxNoOfTriggers
該參數(shù)用于設(shè)置集群中觸發(fā)器的最大數(shù)量。
25. LockPagesInMainMemory
對于很多操作系統(tǒng),能夠?qū)⑦M程鎖定在內(nèi)存中,以避免與磁盤的交換。使用它可以確保集群的實時特性。默認情況下,該特性是被禁止的(取值:Y/N或1/0)。
26. StopOnError
出現(xiàn)錯誤時,該參數(shù)指定NDBD進程是退出還是自動重啟。默認情況下,該特性是啟用的(取值:Y/N或1/0)。
27. Diskless
指定集群為“無磁盤”,意味著不會為表在磁盤上設(shè)立檢查點,也不會記錄任何日志。默認情況下,該特性是被禁止的(取值:Y/N或1/0)。
28. RestartOnErrorInsert
僅當編譯為調(diào)試版時才能訪問該特性。默認情況下,該特性是被禁止的。
29. TimeBetweenWatchDogCheck
指定監(jiān)控線程檢查的間隔。該參數(shù)以毫秒為單位,默認值為 4000 毫秒。
30. StartPartialTimeout
該參數(shù)指定了在調(diào)用集群初始化子程序之前,集群等待所有存儲結(jié)點出現(xiàn)的時間。默認值為 30000 毫秒(0 表示無限超時)。
31. StartPartitionedTimeout
如果集群做好了啟動準備,但仍可能處于隔離狀態(tài),集群將等待該超時時間結(jié)束。默認值為 60000 毫秒。
32. StartFailureTimeout
如果數(shù)據(jù)結(jié)點在該參數(shù)指定的時間內(nèi)未完成其啟動序列,結(jié)點啟動將失敗。如果將該參數(shù)設(shè)置為0,表示不采用數(shù)據(jù)結(jié)點超時。默認值為 60000 毫秒。
33. HeartbeatIntervalDbDb
每個數(shù)據(jù)結(jié)點發(fā)送心跳信號到SQL結(jié)點的間隔。默認值為 1500 毫秒。
34. HeartbeatIntervalDbApi
每個數(shù)據(jù)結(jié)點都會向每個MySQL服務器(SQL結(jié)點)發(fā)送心跳信號,以確保它們依然保持接觸。如果一個MySQL服務器沒能成功地及時發(fā)送一個心跳,那么就會將其聲明為“失效”,在這種情況下,所有正在進行的事務都會結(jié)束,并且釋放所有資源。SQL結(jié)點不能重連,直到由先前的MySQL實例所初始化的所有活動都已經(jīng)結(jié)束為止。默認的時間間隔是1500毫秒(1.5秒)單個數(shù)據(jù)結(jié)點之間的這個時間間隔可以是不同的,因為每個數(shù)據(jù)結(jié)點都會監(jiān)視與其連接的MySQL服務器,與所有其他的數(shù)據(jù)結(jié)點無關(guān)。
35. TimeBetweenLocalCheckpoints
該參數(shù)默認值為20。
36. TimeBetweenGlobalCheckpoints
該參數(shù)定義了全局檢查點操作之間的時間間隔。默認值為 2000 毫秒。
37. TimeBetweenInactiveTransactionAbortCheck
該參數(shù)默認值為 1000 毫秒。
38. TransactionInactiveTimeout
如果事務目前未執(zhí)行任何查詢,而是等待進一步的用戶輸入,該參數(shù)指明了放棄事務之前用戶能夠等待的最長時間。默認值為 0。
39. TransactionDeadlockDetectionTimeout
該超時參數(shù)指明了放棄事務之前,事務協(xié)調(diào)器等候另一結(jié)點執(zhí)行查詢的時間。
40. NoOfDiskPagesToDiskAfterRestartTUP
該參數(shù)指定了執(zhí)行本地檢查點操作的速度,并能與NoOfFragmentLogFiles、DataMemory和IndexMemory一起使用。默認值是 40(每秒3.2MB的數(shù)據(jù)頁)。
41. NoOfDiskPagesToDiskAfterRestartACC
該參數(shù)使用的單位與NoOfDiskPagesToDiskAfterRestartTUP的相同。工作方式也類似,但限制的是從索引內(nèi)存進行的索引頁寫入速度。該參數(shù)的默認值為每秒20個索引內(nèi)存頁(1.6MB每秒)。
42. NoOfDiskPagesToDiskDuringRestartTUP
該參數(shù)涉及從數(shù)據(jù)內(nèi)存寫入的頁。默認值是40(3.2MB每秒)。
43. NoOfDiskPagesToDiskDuringRestartACC
該參數(shù)默認值是20(1.6MB每秒)。
44. ArbitrationTimeout
指定數(shù)據(jù)結(jié)點等待決策程序?qū)Q策消息的回應的時間。默認值為 1000 毫秒。
45. UndoIndexBuffer
指定UNDO索引緩沖區(qū)大小。默認值為 2MB,最小值為1MB。
46. UndoDataBuffer
指定UNDO數(shù)據(jù)緩沖區(qū)大小。默認值為 16MB,最小值為1MB。
47. RedoBuffer
指定REDO數(shù)據(jù)緩沖區(qū)大小。默認值為 8MB,最小值為1MB。
48. LogLevelStartup
日志級別,用于進程啟動過程中生成的事件。默認級別為 1。
49. LogLevelShutdown
日志級別,用于作為結(jié)點恰當關(guān)閉進程組成部分而生成的事件。默認級別為 0。
50. LogLevelStatistic
日志級別,用于統(tǒng)計事件,如主鍵法讀取次數(shù)、更新數(shù)、插入數(shù)、與緩沖使用有關(guān)的信息等。默認級別為 0。
51. LogLevelCheckpoint
日志級別,用于由本地和全局檢查點操作生成的事件。默認級別為 0。
52. LogLevelNodeRestart
日志級別,用于在結(jié)點重啟過程中生成的事件。默認級別為 0。
53. LogLevelConnection
日志級別,用于由集群結(jié)點間的連接生成的事件。默認級別為 0。
54. LogLevelError
日志級別,用于由在整個集群內(nèi)的錯誤和警告生成的事件。這類錯誤不會導致任何結(jié)點失敗,但仍值得記錄。默認級別為 0。
55. LogLevelInfo
日志級別,用于為集群的一般狀態(tài)信息而生成的事件。默認級別為 0
56. BackupDataBufferSize
指定數(shù)據(jù)備份緩沖區(qū)大小。默認值為 2MB。
57. BackupLogBufferSize
指定日志備份緩沖區(qū)大小。默認值為 2MB。
58. BackupMemory
該參數(shù)是BackupDataBufferSize和BackupLogBufferSize之和。默認值是2MB + 2MB = 4MB。
59. BackupWriteSize
該參數(shù)指定了由備份日志緩沖和備份數(shù)據(jù)緩沖寫入磁盤的消息大小。默認值為 32KB。
60. FileSystemPath
該參數(shù)指定了存放為元數(shù)據(jù)創(chuàng)建的所有文件、REDO日志、UNDO日志和數(shù)據(jù)文件目錄。注意:在ndbd進程啟動前,該目錄必須已存在。
五、定義MySQL服務器(SQL)
定義用于訪問集群數(shù)據(jù)的MySQL服務器(SQL結(jié)點)的行為。可使用“[MYSQLD]”定義單個SQL結(jié)點的行為,也可使用“[MYSQLD DEFAULT]”定義多個SQL結(jié)點的默認行為。
1. NodeId
集群中結(jié)點的唯一標識。取值 1~63。
2. HostName
指定結(jié)點主機名或IP。
3. ExecuteOnComputer
引用在“[COMPUTER]”部分中定義的計算機之一。
4. ArbitrationRank
對于正常配置,使用管理服務器作為決策程序。將管理服務器的ArbitrationRank設(shè)置為 1(默認),并將所有SQL結(jié)點的ArbitrationRank設(shè)置為 0。
5. ArbitrationDelay
指定管理服務器對決策請求的延遲時間,以毫秒為單位。默認為 0,通常情況下不需要改變它。
6. BatchByteSize
對于被轉(zhuǎn)換為全表掃描或索引范圍掃描的查詢來說,以適當大小批量獲取記錄,可以獲得最佳的性能。這個合適的尺寸既可以用記錄數(shù)量(BatchSize)表示,也可以用字節(jié)數(shù)量(BatchByteSize)表示。實際的批量尺寸受這兩個參數(shù)的限制。根據(jù)這個參數(shù)的設(shè)置方法,查詢性能最多可以提高40%。該參數(shù)以字節(jié)為單位,默認值是 32KB。
7. BatchSize
該參數(shù)以字節(jié)為單位,默認值是 64,最大值為 992。
8. MaxScanBatchSize
指定從各數(shù)據(jù)結(jié)點發(fā)送的每批數(shù)據(jù)的大小,默認值是 256KB,最大值為 16MB。
六、配置文件示例
windows下:
打開命令行窗口(cmd),如果安裝的Mysql服務名為mysql,則net
start
mysql(此步也可直接在控制面板-管理-服務中啟動Mysql)
輸入命令進入到Mysql的安裝目錄中的bin目錄內(nèi),如安裝目錄為c:\program
files\Mysql,則輸入命令cd
c:\program
files\Mysql\bin;
使用命令啟動mysql服務,如用戶名為root密碼為123456,則命令mysql
-u
root
-p
123456;如果登錄成功,則說明mysql服務啟動成功。
Linux下:
直接在命令行窗口中service
mysql
start(假設(shè)服務名稱為mysql);
然后按windows下的第2和第3步進行同樣驗證;