配置YUM源
配置MariaDB的YUM源
添加MariaDB.repo文件並置於“/etc/yum.repos.d/”目錄下。
MariaDB.repo文件內容如下(此處添加以10.2的版本爲例):
# MariaDB 10.2 CentOS repository list - created 2018-07-10 05:39 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
此處使用了國內源http://mirrors.ustc.edu.cn/help/mariadb.html,由於官網的源因爲我的國的原因其慢無比,大家都懂的!
安裝MariaDB相關模塊
模塊說明
MariaDB-server:MariaDB服務器。
MariaDB-client:啓動MariaDB客戶端所需要的程序與文件。
MariaDB-common:啓動MariaDB服務器或客戶端所需的設置文件(my.cnf),或定義字符集的xml文件。
MariaDB-test:用戶測試MariaDB的程序。
集羣工具相關模塊:
MariaDB-Galera-server:MariaDB+Galera Cluster安裝程序。
galera:MariaDB+Galera Cluster的Galera庫。
使用YUM安裝
核心基礎模塊
執行以下命令完成安裝:
$ yum install MariaDB-server MariaDB-client MariaDB-test MariaDB-common
集羣工具模塊
$ yum install MariaDB-Galera-server galera
配置
數據庫主配置文件
默認的配置文件在名稱在Linux和Windows下在不同的存放目錄。
Linux:在該系統下文件存放在/etc/my.cnf。
Windows:在該系統下文件存放在c:\windows\my.ini或這c:\my.cnf。
配置文件分爲多個小結,每節前面都會有一個用方括號括起來的標題。例如:服務器守護進程的設置在[mysqld]小節,在該小節加入log=/var/log/mysql這樣的配置設置日誌文件的路徑,並激活日誌文件功能。
修改root密碼
修改root密碼有多種方式,我們使用mysqladmin管理工具來完成root密碼修改。
- 在Linux命令行,不登錄MariaDB的情況下,執行以下命令會提示輸入舊密碼(如果是新安裝的數據庫,初始化密碼爲空,直接回車即可),如果舊密碼通過驗證,會提示輸入兩次新密碼。
$ mysqladmin -u root -p flush-privileges password
Enter password:
New password:
Confirm new password:
如果控制檯提示以下錯誤信息,則需要在數據庫主配置文件的[mysqld]小節,加入skip-grant-tables。然後重啓數據庫服務。
$ mysqladmin -u root -p flush-privileges root
Enter password:
mysqladmin: reload failed; error: 'Access denied; you need (at least one of) the RELOAD privilege(s) for this operation'
$ service mysql restart
- 數據庫命令修改密碼
啓動MariaDB
啓動MariaDB服務器
執行命令:$ service mysql start
終止MariaDB服務器
執行命令:$ service mysql stop
重啓MariaDB服務器
執行命令:$ service mysql restart
查看MariaDB服務器的進程狀態
只有當MariaDB註冊爲服務後,纔可以通過以下命令查看其進程狀態:
$ service mysql status
查看MariaDB是否在可管理列表中
執行命令:$ chkconfig –list,結果列表中包含以下一行信息:
mysqld 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
如果結果列表不存在以上信息,則執行以下命令將其添加到可管理列表:
$ chkconfig add mysqld
將MariaDB設置爲開機啓動
執行命令:$ chkconfig mysqld on
程序長時間未交互數據庫連接超時問題
MaraDB與MySQL一樣,存在8小時連接超時的問題。
問題說明:
當程序的連接池或客戶端創建連接,進行了一系列的數據庫操作後,數據庫服務器在連接創建後,默認存在一個wait_timeout設置,設定了默認等待連接超時時長。默認爲8小時,28800秒 = 60秒 * 60分鐘 * 8。也就是說,如果持續8小時沒有任何程序連接數據庫服務器,數據庫服務器將關閉連接,但不會通知程序。當程序再次進行數據庫庫操作時,持有的是一個已關閉的連接進行操作,所以不能正常操作數據。wait_timeout設置時長小於程序連接池或客戶端持有連接的時長,當程序再次訪問數據庫時,會出現無法連接訪問數據庫的錯誤。
要解決這個問題,其實很簡答,將wait_timeout設置的時長修改到一個合理的更久的等待時長。同時需要將interactive_timeout設置爲相同的值,因爲interactive_timeout,wait_timeout 這兩個參數只有一個起作用。
- 首先查看當前wait_timeout設置的時長,命令行命令如下
$ show global variables like "wait_timeout";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 28800 |
+---------------+-------+
1 row in set (0.00 sec)
- 解決問題
- 首選推薦在my.cnf配置文件中進行配置
緊跟[mysqld]換行配置
- 首選推薦在my.cnf配置文件中進行配置
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
linux下,my.cnf的全路徑爲/etc/my.cnf,將以上配置內容添加到文件中,重啓數據庫服務即可。
windows下,配置文件爲my.ini,配置文件全路徑爲$MARADB_HOME/data/my.ini。
- 使用數據庫連接池配置解決問題
數據庫連接池常用的有c3p0、Apache旗下有DBCP、Tomcat的JDBC-POOL。
此處我們介紹Tomcat8的JDBC-POOL,它的官方文檔地址:http://tomcat.apache.org/tomcat-8.5-doc/index.html
首先還是先說下c3p0解決連接失效的問題
maxIdleTime屬性,單位爲秒。作用是設置最大空閒時間,例如:設置爲1800,代表1800秒內未使用則連接被丟棄。若爲0則永不丟棄。默認值: 0。該值一定要小於數據庫配置的wait_timeout時長。關於DBCP和Tomcat的JDBC-POOL
這個兩個數據源連接池解決連接失效問題的方式一致,需要設置兩個屬性。testOnBorrow屬性,默認爲false,我們需要將他設置爲true,表示每次進行數據庫操作時使用下一個屬性設置的查詢語句驗證連接是否可用,不可用將使用連接池中可用的連接進行數據庫操作。validationQuery屬性,設置驗證連接是否可用的語句,通常我們將值設置爲select 1
通過DBCP和Tomcat的JDBC-POOL數據源連接池配置連接可用檢查和c3p0獨有的固定時長配丟棄連接的配置,來解決數據庫連接失效的方案後,就可以不考慮數據庫配置的wait_timeout時長配置了(注意:c3p0的配置數值,一定要小於數據庫配置的wait_timeout時長)。