數據庫中間件之mycat安裝部署(一)


  在學習數據庫中間件前,我們先拋出三個問題

  1、數據庫數據量不大,但並發讀寫操作很大,應該怎么辦?

  此時我們首先考慮使用緩存中間件來減輕讀壓力,如果不能滿足則考慮數據庫讀寫分離,此時就會引入新的問題,這會對我們的應用代碼dao產生影響,如何隔離呢

  2、應用數據模塊很多,總的數據量很大,並發讀寫超過了單個數據庫服務器的能力?

  這時候我們可以按業務將數據庫拆分為多個數據庫,此時就面臨如果管理多數據源的問題以及跨庫聯表查詢等問題

  3、單表數據量很大,超過了單表的存儲上線,例如mysql單表數據量超過1000萬,類似訂單表超過這個數值怎么辦?

  此時可以需要按一定的條件分表,分表又會帶來數據庫如何存儲到對應位置的問題以及查詢是如何找到這些數據,分表規則怎么定等

  為了解決以上問題,我們就有必要引入數據庫中間件,來隔離應用代碼和數據庫,實現快速的讀寫分離,分庫分表,數據庫中間件有兩種方式:客戶端模式,在我們的應用集成數據庫中間件模塊,在這個模塊來配置要訪問的數據源,使用於中小系統;第二種服務端代理模式,應用直接像訪問數據庫一樣訪問數據庫中間件,由中間件去訪問對應的數據庫。常用的客戶端模式有sharding-jdbc、TDDL,常用的proxy則有mycat、oneproxy等,數據庫中間件使用比較多的就是sharding-jdbc和mycat(因為開源),下面進入正題mycat的安裝部署

  為了滿足最基本的讀寫分離和分表,我們至少要准備兩台centos7服務器,mycat是java開發的,所以我們需要安裝的有jdk、mysql和mycat

  jdk安裝

  1、卸載openjdk,沒有就算了,rpm -qa | grep jdk   查看jdk信息,卸載yum -y remove java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7

  2、下載地址 :http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  3、解壓安裝包到/usr/local/ 例如: tar  -zxvf jdk-8u152-linux-x64.tar.gz -C /usr/local/

  4、添加環境變量,在/etc/profile文件最后加上下面配置,source /etc/profile 使配置文件生效

export JAVA_HOME=/usr/local/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar 

  mysql安裝

  這里使用最基礎的tar包安裝

  1、下載地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz,解壓安裝包到/usr/local/ 例如: tar  -zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz -C /usr/local/,建議修改解壓好的包名為 mysql.5.7.27,進入 mysql.5.7.27 ,創建data文件夾mkdir data,用來存放數據庫文件

  2、檢查 linux 是否安裝了 mariadb數據庫,mariadb數據庫是 mysql的分支,是免費開源的和msyql會有沖突。如果安裝了需要先卸載,查看是否安裝yum list installed | grep mariadb 卸載,yum -y remove mariadb-libs.x86-64

  3、創建用戶,創建mysql用戶和用戶組,用來執行MYSQL的命令mysqld    useradd mysql; groupadd mysql

  4、使用mysql的mysqld 命令初始化數據庫的基本信息。切換到mysql-5.7.27/bin目錄下執行。

命令:./mysqld --initialize --user=mysql --datadir=/usr/local/mysql-5.7.27/data --basedir=/usr/local/mysql-5.7.27
參數說明:
--initialize 初始化mysql,創建mysql的root, 隨機生成密碼。記住密碼,登錄msyql使用。
--user執行msyqld 命令的linux用戶名
--datadir : mysql數據文件的存放位置,目錄位置參照本機的設置。
--basedir : msyql安裝程序的目錄,目錄位置參照本機的設置。
該命令執行后,會生成一個臨時的mysql數據庫root用戶的密碼,請先拷貝出來記住,后續第一次登錄mysql
例如#/T3ds.jhdUM

  5、啟用安全功能:在服務器與客戶機之間來回傳輸的所有數據進行加密。通過證書提供了身份驗證機制,mysql命令程序,mysql_ssl_rsa_setup提供了開啟數據加密功能,生成數字證書。在mysql-5.7.27/bin目錄下執行命令:

./mysql_ssl_rsa_setup --datadir=/usr/local/mysql-5.7.27/data

  6、mysql安裝后,需要更改mysql-5.7.27整個文件夾目錄權限,更改所屬的用戶和組,是之前創建的mysql用戶。在mysql安裝目錄的上級(/usr/local/)位置,執行命令chown .

例如:chown -R mysql:mysql /usr/local/mysql-5.7.27/

  7、創建mysql配置文件,vi /etc/my.cnf,添加如下配置

[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#跳過權限表校驗
#skip-grant-tables
skip-name-resolve
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=/usr/local/mysql-5.7.27
# 設置mysql數據庫的數據的存放目錄
datadir=/usr/local/mysql-5.7.27/data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
# 表名不區分大小寫
lower_case_table_names=1
max_allowed_packet=16M
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql-5.7.27/data/mysqld.pid

  8、啟動和關閉MySQL服務,mysql-5.7.18/bin目錄下執行命令:./mysqld_safe &(其中& 符號表示后台啟動),輸入命令后按Enter,mysqld_safe程序會在啟動MySQL服務器后繼續監控其運行情況,並在其死機時重新啟動它。用mysqld_safe程序來啟動MySQL服務器的做法在unix/linux系統上很常見,確認msyql是否啟動,查看進程 ,使用ps -ef | grep mysql,mysql-5.7.18/bin目錄下執行:./mysqladmin -uroot -p shutdown輸入密碼停止mysql

  9、通常我們會將mysql配置為一個服務,以方便管理,做一下操作后執行service mysqld start即可啟動mysql ,service mysqld stop停止mysql

cp /usr/local/mysql-5.7.27/support-files/mysql.server /etc/init.d/mysqld
vim /etc/init.d/mysqld,添加第46,47行地址
basedir=/usr/local/mysql-5.7.27
datadir=/usr/local/mysql-5.7.27/data

  10、修改root密碼並配置遠程客戶端連接,mysql啟動后,登錄進入mysql,mysql-5.7.18/bin目錄下執行命令:./mysql-uroot -p,-u表示使用root用戶登錄系統,使用第8步生成的密碼,-p表示使用密碼登錄,在mysql中修改root用戶的密碼:alter user 'root'@'localhost' identified by '123456';授權遠程訪問,在沒有授權之前只能在本機訪問msyql,遠程授權就是讓其他計算機通過網絡訪問mysql(這樣遠程客戶端才能訪問),grant all privileges on *.* to root@'%' identified by '123456';其中*.* 的第一個*表示所有數據庫名,第二個*表示所有的數據庫表;root@'%' 中的root表示用戶名,%表示ip地址,%也可以指定具體的ip地址,比如root@localhost,root@192.168.10.129,更新權限信息,執行flush刷新權限: flush privileges ;執行exit退出msyql自己的客戶端。

  11、防火牆開放,firewall-cmd --zone=public --add-port=3306/tcp --permanent,重新加載一次firewall-cmd --reload

  mycat安裝

  1、下載最新版的mycat:wget http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz,解壓到/usr/local目錄下tar -zvxf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz -C /usr/local。

  2、mycat目錄構成

  bin 程序目錄,存放了window 版本和linux 版本,除了提供封裝成服務的版本之外,也提供了nowrap 的 shell 腳本命令,方便大家選擇和修改

  conf 目錄下存放配置文件,server.xml 是Mycat 服務器參數調整和用戶授權的配置文件,schema.xml 是邏輯庫定義和表以及分片定義的配置文件,rule.xml 是分片規則的配置文件,分片規則的具體一些參數信息單獨存放為文件,也在這個目錄下,配置文件修改,需要重啟Mycat 或者通過9066 端口reload

  lib 目錄下主要存放mycat 依賴的一些jar

  文件日志存放在logs/mycat.log 中,每天一個文件,日志的配置是在conf/log4j2.xml 中,根據自己的需要,可以調整輸出級別為debug,debug 級別下,會輸出更多的信息,方便排查問題

  3、配置環境變量

  vi /etc/profile,追加 export MYCAT_HOME=/usr/local/mycat,source /etc/profile

  4、新增用戶mycat(建議不要用root用戶來運行mycat),useradd mycat,passwd mycat,chown -R mycat:mycat /usr/local/mycat,切換到mycat用戶 su mysql 

  5、啟動mycat,cd /usr/local/mycat/bin ./mycat start,ps -ef | grep mycat 查看是否啟動成功

  6、配置防火牆,在/conf/server.xml 查看配置端口和用戶,默認服務端口為8066,管理端口是9066,有root用戶和user用戶,密碼為12346和user,執行如下命令

  firewall-cmd --zone=public --add-port=8066/tcp --permanent

  firewall-cmd --zone=public --add-port=9066/tcp --permanent

  firewall-cmd --reload,開發環境中也可以直接關閉防火牆

  7、在本機可以通過數據庫客戶端連接工具例如navicat,輸入端口8066,數據庫所在ip,用戶密碼測試配置是否有效。

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM