Category: MySQL / Mariadb

MySQL SUBSTRING 函式

很多程式語言都有抽取字串部份的函式 (PHP 及 Perl 是 substr), MySQL 也有類似的函式 — SUBSTRING() 及 SUBSTR(), 兩者都用法是一樣的, 因為 SUBSTR() 只是 SUBSTRING() 的別名。它們可以用作抽出一個欄位資料的其中一部份字串。以下是簡單例子: 以上會從 “MySQL SUBSTRING testing” 第 1 個字元開始抽取, 所以會輸出: MySQL SUBSTRING testing …

MySQL 的 Full-text Search

MySQL 使用 Full-text Search (全文檢索), MySQL 會自動為資料建立索引, 及在資料變更時重新建立索引。以前 Full-text Search 只支援 MyISAM, 並不支援 InnoDB, 由 MySQL 5.6 開始 InnoDB 及 MyISAM 也都支援 Full-text Search 了, 支援的欄位類型有 CHAR, VARCHAR 及 TEXT。 …

CentOS 安裝 MariaDB 10.0

MariaDB 10.0.x 版是以 MariaDB 5.5 為基礎, 加上移植自 MySQL 5.6 版的功能和自行開發的新功能。以下會介紹在 RHEL 及 CentOS 用 YUM 安裝 MariaDB 10.0 的方法。 首先建立 MariaDB 的 YUM Repository, 建立檔案 /etc/yum.repos.d/MariaDB.repo, 根據不同的系統加不相關內容: RHEL / CentOS …

Percona XtraBackup 備份 MySQL

MySQL 熱備份時如果沒有停止 MySQL 或者變成唯讀狀態, 備份檔有機會出現不連貫的問題。而 Percona XtraBackup 就是一個可以在 MySQL 不停機的情況下對進行熱備份的開源工具, 而且可以選擇完整備份或者增量備份。除了 MySQL 外, 它也支援 MariaDB 及 Percona Server。 由於 Percona XtraBackup 是借用 transaction log 進行備份, 所以熱備份只適用於 InnoDB 的資料庫, 如果資料庫使用 MyISAM, …

MySQL 設定 Master-Slave Replication 同步

MySQL 的 Master-Slave Replication (同步) 是當 Master 資料庫有變動時, 自動同步到 Slave 資料庫。由於 MariaDB 在 RHEL/CentOS 7 開始已經成為預設資料庫, 而且可以完全取代 MySQL, 所以以下也會以 MariaDB 進行設定, 但同樣方法在 MySQL 一樣可以的。 假設已經有兩台 MySQL 伺服器, 以下兩部份分別是 Master 及 …

MySQL 語法 – INSERT … ON DUPLICATE KEY UPDATE

有時在 MySQL 新增資料時, 會先判斷資料是否存在, 如果資料不存在會執行 INSERT 語句, 如果資料存在則用 UPDATE 語句。以前要這樣做, 需要先用 SELECT 判斷, 就像這樣: 雖然可以完成上面提到的任務, 但寫程式時就會較麻煩, MySQL 提供了 INSERT … ON DUPLICATE KEY UPDATE 語句, 可以一行就完成, 無需用 IF 及 …

同時運行多個 MySQL

有時需要在不同 MySQL 版本間做測試, 如果要在伺服器內重啟 MySQL 切換版本做測試會很麻煩, 以下紀錄一下在伺服器內安裝兩個 MySQL 同時運行, 當然如果有需要, 也可以按此方法安裝 2 個以上的 MySQL。 以下假設第一個 MySQL Server 已經正常運作, 下面全是安裝第二個 MySQL Server 的步驟: 1. 建立 MySQL 資料庫目錄: # mkdir /var/lib/mysql2 # …

變更 MySQL 預設埠號

MySQL 的預設埠號是 3306, 要變更埠號可以有很多原因, 例如基於安全考量或者同時安全兩個 MySQL Server 等, 以下是變更埠號的方法: 1. 開啟 my.cnf 檔案, Redhat 及 CentOS 開 /etc/my.cnf, Debian 放在 /etc/mysql/my.cnf。 加入以下這行到 段落, 如果已經有 port 的選項, 直接修改便可以, 下面會將埠號改為 3307: …