MySQL CLI Table name 使用變數取代

MySQL Client 裡面,想要執行 SQL 語法,或者使用變數來做某些取代,要怎麼做呢?

閱讀全文〈MySQL CLI Table name 使用變數取代〉

MySQL Percona innobackupex 備份帳號需要的權限

MySQL 要備份資料庫,可以使用 Percona 的 Tookit 的 innobackupex (xtrabackup) 來備份。

要為 innobackupex 建立一個備份專用的使用者,需要哪些權限呢?

閱讀全文〈MySQL Percona innobackupex 備份帳號需要的權限〉

MySQL 建立 View 的語法 與 簡易應用

View 可以縮短 SQL 撰寫的長度,只是做個類似轉換的動作,後面該做的還是跑不掉的。

不過若有新舊版程式,例如要將這個 Table Name 加上「年月」,但是原始 Table 暫時還要可以讀取,就可以靠 View 來達成。

閱讀全文〈MySQL 建立 View 的語法 與 簡易應用〉

MySQL Table RENAME、重建作法

MySQL 刪除資料後,空間並不會釋放出來,可以使用 OPTIMIZE TABLE 來釋放空間,OPTIMIZE 等同於 TABLE Copy & RENAME,所以會有大量 IO。

我是採用兩種方式來做,依照資料量大小來做選擇。(一樣會有大量IO,但是可以自己掌握,缺點是執行時會有短暫的時間可能漏資料)

不過資料量過大的,還是建議另外處理,這種作法是非常不得已的。

閱讀全文〈MySQL Table RENAME、重建作法〉

MySQL 輸出 FLOAT、CHAR 強制轉換成 INT 或其它型態

MySQL rand() 預設是浮點數(float / double),但是想要取整數的話,可以怎麼做呢?

  • mysql> SELECT rand(); // 0.519057333021478

閱讀全文〈MySQL 輸出 FLOAT、CHAR 強制轉換成 INT 或其它型態〉

MySQL 的 Prompt 想顯示主機和資料庫名稱

MySQL 的 Prompt 想要顯示主機和資料庫名稱等資訊,要怎麼設定呢?

mysql> 想要變成 (user@host) [(dbname)]> 作法如下:

  1. 在 Shell 輸入下述,再進入 MySQL CLI:
    • export MYSQL_PS1="(\u@\h) [\d]> "
  2. 進入 MySQL 裡面(mysql>),輸入下述:
  3. 在 Shell 輸入:
    • mysql --prompt="(\u@\h) [\d]> "
  4. vim /etc/mysql/my.cnf
    • [mysql]
    • prompt=(\\u@\\h) [\\d]>\\_

上述我是使用1、4,my.cnf 的設定不需要重啟 MySQL,直接寫完 mysql cli 進入就會直接讀取生效