亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

使用Crontab代替MySQL的Event

2024-06-17 04:09:07
52
0

文章背景:

由于我們一類節點目前還不支持開啟event_scheduler功能,而客戶業務上又有這方面需求,所以我們需要用其他工具來代替這個功能。

 

一、為什么不支持?

相關說明:

A、每個節點實例,存在event_scheduler定時任務大開關;
B、每個event事件都有啟用狀態,比如enabled、slaveside_disabled、disabled;  

所有的event事件,創建成功后的狀態是:
A、主庫是enabled(即主庫啟用)
B、從庫是slaveside_disabled(即從庫禁用)

切換后,event事件狀態是:
A、主庫slaveside_disabled(實際上是禁用)
B、從庫enabled(從庫只讀,read_only=1, 以普通用戶執行該事件會報錯,以super權限用戶強行運行 也是從庫產生事務,數據不一致、且相關數據不會同步到主庫)  

基于以上基礎,
1、主庫的slaveside_disabled狀態的小事件需要用戶自行改為enabled才能正常運行;
2、高可用組件無法做到“切換后 自動將主庫的所有event事件修改為enabled”,因為可能存在客戶自行定義的slaveside_disabled、disabled禁用狀態的事件,全部修改為enabled是不合理的動作。

總結:如果開啟event_scheduler,高可用實例無法保證 event_scheduler始終在主節點運行,因為會存在高可用切換。

 

二、使用Crontab代替Event來定期執行SQL語句

操作步驟如下:

1.創建一個包含要執行的 MySQL 命令的腳本,例如 mysql_task.sh,腳本內容類似這樣:

#!/bin/bash
mysql -u [username] -p[password] [database] -e "your mysql command here"

確保將 [username][password] 和 [database] 替換為實際的數據庫用戶名、密碼和數據庫名,以及將 "your mysql command here" 替換為具體的 MySQL 命令。

2.給腳本添加執行權限:

chmod +x mysql_task.sh

3.使用 crontab -e 編輯定時任務,添加類似這樣的一行來指定定期執行該腳本:

* * * * * /path/to/mysql_task.sh
(這里的時間設置根據你的需求來,/path/to/mysql_task.sh 替換為實際腳本的路徑)。例如,如果你想每天凌晨 2 點執行這個腳本,可以這樣寫:
0 2 * * * /path/to/mysql_task.sh

4.Crontab命令說明:

Crontab 是用于在 Linux 系統中設置定時任務的命令,他的主要功能有創建、編輯、查看和刪除定時任務列表。以下是對它的詳細介紹:

常用操作:

  • crontab -e:打開編輯器以編輯當前用戶的定時任務列表
  • crontab -l:列出當前用戶的所有定時任務
  • crontab -r:刪除當前用戶的所有定時任務

定時任務格式:

  • 在分鐘字段(第一個 *)表示每分鐘,分鐘(0-59)
  • 在小時字段(第二個 *)表示每小時,小時(0-23)
  • 在日字段(第三個 *)表示每一天,日(1-31)
  • 在月字段(第四個 *)表示每個月,月(1-12)
  • 在星期字段(第五個 *)表示每星期,周(0-6,0 表示星期日)
示例:
  • * * * * * command 就表示該命令每分鐘都執行。再比如 0 * * * * command 表示每小時的第 0 分鐘(即整點)執行命令
  • 30 2 * * * /path/to/script.sh:表示每天凌晨 2 點 30 分執行指定腳本
  • 0 8 1 * * /path/to/command:表示每月 1 日上午 8 點執行命令
注意事項:
  • 確保命令或腳本具有合適的執行權限。
  • 要注意時間設置的準確性和合理性,避免設置過于頻繁或不合理的任務導致系統資源過度消耗
  • 可以使用特殊字符來表示更靈活的時間安排,如 *(任意值)、,(列舉多個值)、-(范圍)、/(間隔)等。
0條評論
0 / 1000
DBM
8文章數
0粉絲數
DBM
8 文章 | 0 粉絲
原創

使用Crontab代替MySQL的Event

2024-06-17 04:09:07
52
0

文章背景:

由于我們一類節點目前還不支持開啟event_scheduler功能,而客戶業務上又有這方面需求,所以我們需要用其他工具來代替這個功能。

 

一、為什么不支持?

相關說明:

A、每個節點實例,存在event_scheduler定時任務大開關;
B、每個event事件都有啟用狀態,比如enabled、slaveside_disabled、disabled;  

所有的event事件,創建成功后的狀態是:
A、主庫是enabled(即主庫啟用)
B、從庫是slaveside_disabled(即從庫禁用)

切換后,event事件狀態是:
A、主庫slaveside_disabled(實際上是禁用)
B、從庫enabled(從庫只讀,read_only=1, 以普通用戶執行該事件會報錯,以super權限用戶強行運行 也是從庫產生事務,數據不一致、且相關數據不會同步到主庫)  

基于以上基礎,
1、主庫的slaveside_disabled狀態的小事件需要用戶自行改為enabled才能正常運行;
2、高可用組件無法做到“切換后 自動將主庫的所有event事件修改為enabled”,因為可能存在客戶自行定義的slaveside_disabled、disabled禁用狀態的事件,全部修改為enabled是不合理的動作。

總結:如果開啟event_scheduler,高可用實例無法保證 event_scheduler始終在主節點運行,因為會存在高可用切換。

 

二、使用Crontab代替Event來定期執行SQL語句

操作步驟如下:

1.創建一個包含要執行的 MySQL 命令的腳本,例如 mysql_task.sh,腳本內容類似這樣:

#!/bin/bash
mysql -u [username] -p[password] [database] -e "your mysql command here"

確保將 [username][password] 和 [database] 替換為實際的數據庫用戶名、密碼和數據庫名,以及將 "your mysql command here" 替換為具體的 MySQL 命令。

2.給腳本添加執行權限:

chmod +x mysql_task.sh

3.使用 crontab -e 編輯定時任務,添加類似這樣的一行來指定定期執行該腳本:

* * * * * /path/to/mysql_task.sh
(這里的時間設置根據你的需求來,/path/to/mysql_task.sh 替換為實際腳本的路徑)。例如,如果你想每天凌晨 2 點執行這個腳本,可以這樣寫:
0 2 * * * /path/to/mysql_task.sh

4.Crontab命令說明:

Crontab 是用于在 Linux 系統中設置定時任務的命令,他的主要功能有創建、編輯、查看和刪除定時任務列表。以下是對它的詳細介紹:

常用操作:

  • crontab -e:打開編輯器以編輯當前用戶的定時任務列表
  • crontab -l:列出當前用戶的所有定時任務
  • crontab -r:刪除當前用戶的所有定時任務

定時任務格式:

  • 在分鐘字段(第一個 *)表示每分鐘,分鐘(0-59)
  • 在小時字段(第二個 *)表示每小時,小時(0-23)
  • 在日字段(第三個 *)表示每一天,日(1-31)
  • 在月字段(第四個 *)表示每個月,月(1-12)
  • 在星期字段(第五個 *)表示每星期,周(0-6,0 表示星期日)
示例:
  • * * * * * command 就表示該命令每分鐘都執行。再比如 0 * * * * command 表示每小時的第 0 分鐘(即整點)執行命令
  • 30 2 * * * /path/to/script.sh:表示每天凌晨 2 點 30 分執行指定腳本
  • 0 8 1 * * /path/to/command:表示每月 1 日上午 8 點執行命令
注意事項:
  • 確保命令或腳本具有合適的執行權限。
  • 要注意時間設置的準確性和合理性,避免設置過于頻繁或不合理的任務導致系統資源過度消耗
  • 可以使用特殊字符來表示更靈活的時間安排,如 *(任意值)、,(列舉多個值)、-(范圍)、/(間隔)等。
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0