Tag: Percona
MySQL 的 Primary Key 很多時會使用 AUTO_INCREMENT, 對 AUTO_INCREMENT 的欄位插入 NULL 或者空白的值時, MySQL 會自動產生一個序列編號, 序列編號從 1 開始, 每次加 1. 要在 MySQL 檢查最新一筆的 AUTO_INCREMENT, 可以使用 SELECT MAX() 完成, 例如: 要找出下一筆 AUTO_INCREMENT …
當一些 PHP 開啟 MySQL 連線後, 沒有成功關閉 MySQL 連線, 會有一大堆 sleep 的 process, 在 MySQL 可以執行以下指令查看: mysql> SHOW PROCESSLIST; 執行上面的 MySQL 指令會出現很多 Sleep 的連線, 當這些 Sleep 的連線過多時, 很容易會觸及 max_connections 的限制, …
以下是 MySQL 及 MariaDB 在指令模式下刪除帳號及權限的方法。 先用 root 登入 MySQL: /linux/mysql $ mysql -u root -p 登入後會看到 “mysql” 或 “MariaDB” 的提示符, 可以先用以下 SQL 語句檢視所有 MySQL 帳號: /linux/mysql/select-user mysql> SELECT User,Host …
今天在一台安裝了 MySQL 5.5 的主機上, 建立資料表時, 出現以下錯誤: ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 要看到這個錯誤, 可以在 MySQL 5.5/5.6 (或 Mariadb) 上嘗試執行以下指令建立資料庫: # mysql …
以前 MySQL 的 “RENAME DATABASE” 指令, 已經在 5.1.23 後的版本刪除, 原因是重新命名資料庫時存在資料遺失的風險。 以下示範用 “RENAME TABLE” 指令及 mysqldump 指令, 替資料庫重新命名的方法: RENAME TABLE 這個方法適合資料庫比較大的情況, 但缺點是需要對每個資料表逐一執行。 先建立一個空白的資料庫, 名稱用要變更的資料庫名稱, 以下假設舊資料庫是 oldname; 新資料庫是 newname: 然後把資料表逐一用 RENAME …
MySQL 及 MariaDB 要檢視已開啟的連線數目, 可以用 MySQL 的 “show status” 指令查詢。 “show status” 會顯示 MySQL 執行時的一系統狀態, 其中也包括了已開啟連線數目。 首先登入 MySQL / MariaDB: $ mysql -u root -p Enter password: 登入 MySQL …
在連接 MySQL 時, 雖然使用 localhost 或 127.0.0.1 都是連接到本機, 但連接的方式本質上是不同的。 連接 MySQL 時如果不加上 -h 參數, 會使用預設的 localhost 連接 MySQL, 而透過 localhost 連接 MySQL 是使用 Unix Socket (/var/lib/mysql/mysql.sock), 沒有使 TCP/IP, 所以沒有經過網路卡, …
在 RHEL 及 CentOS 7 開始, 預設的資料庫系統是 MariaDB, 基本上 MariaDB 可以取代 MySQL, 但如果仍然想繼續用 MySQL 的話, 除了可以編譯 MySQL Community Server 的原始碼外, 也可以安裝 Oracle 提供的官方 YUM repository, 那便可以透過 Yum 安裝 MySQL …
MySQL 的 Query Cache 在某些環境是有一定作用的,但大部份的情況都沒什麼作用,而且反而會影響效能。 當 MySQL 執行 SELECT 查詢時,會將結果放到 Query Cache 內,當下次執行相同的 SELECT 查詢時,不會在資料庫查詢結果,而會在 Query Cache 取得,從而提高執行效率。 這樣聽起來不錯,但實際上 Query Cache 的機制有一個問題,就是當資料表被更動後,儲存在 Query Cache 的 Cache 會失效,MySQL 會在背後將 Cache …
MySQL 或 MariaDB 的 Log 記錄檔可以紀錄 MySQL 的錯誤, 對伺服器的除錯很有用, 但這個 MySQL Log 記錄檔跟其他 log 一樣, 不理它會一直增大容量, 而 MySQL 內置沒有記錄檔輪替的功能, 要做記錄檔輪替需要借用其他工具, 可以是自行編寫 Shell Script 或 logrotate, 以下文章會示範在用 logrotate 將 MySQL …