keepalived+mycat+mysql框架搭建
介紹
Keepalived: v1.2.13
Linux:centos x64 6.8版本
Mycat:1.5.1版本
Mysql:5.6.21版本
nc: 1.84-24
ipvsadm: 1.26-4
jdk:1.7
架構介紹:
四臺主機:
Master:192.168.118.128
Slave:192.168.118.129
DBMaster:192.168.118.130
DBSlave:192.168.118.131
虛擬ip:192.168.118.16
埠:8066
流程圖:
1. Mysql安裝
問題1:tar.gz包解壓後,進入解壓後的檔案,執行./scripts/mysql_install_db --user=mysql
解決方案:貌似提示註釋器錯誤,沒有/usr/bin/perl檔案或者檔案,解決辦法(安裝perl跟perl-devel即可):
執行 yum-y install perl perl-devel
後在執行./scripts/mysql_install_db --user=mysql初始化資料庫即可。
安裝Mysql:
檢視下是否有系統自帶mysql的rpm包,如果有,需要刪除自帶的舊rpm包。
mysql-libs-5.1.71-1.el6.x86_64
[[email protected] ~]# yum-y remove mysql-libs-5.1*
[[email protected] ~]# rpm-qa | grep mysql
[[email protected] ~]#
在MySQL官網下載安裝MySQL-5.6.21所需的rpm軟體包。
需要下載三個rpm軟體包:
MySQL-client-5.6.21-1.rhel5.x86_64.rpm
MySQL-devel-5.6.21-1.rhel5.x86_64.rpm
MySQL-server-5.6.21-1.rhel5.x86_64.rpm
wgethttp://dev.mysql.com/Downloads/MySQL-5.6/MySQL-server-5.6.21-1.rhel5.x86_64.rpm
wgethttp://dev.mysql.com/Downloads/MySQL-5.6/MySQL-devel-5.6.21-1.rhel5.x86_64.rpm
rpm -ivhMySQL-server-5.6.21-1.rhel5.x86_64.rpm
rpm -ivhMySQL-server-5.6.21-1.rhel5.x86_64.rpm
rpm -ivhMySQL-client-5.6.21-1.rhel5.x86_64.rpm
修改配置檔案位置。
[[email protected] tools]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf
初始化MySQL及修改MySQL預設的root密碼。
[[email protected] tools]# /usr/bin/mysql_install_db
[[email protected] tools]# ps -ef | grep mysql
執行完之後啟動 mysql:
Service mysqlstart;
查詢root密碼登陸:
more/root/.mysql_secret
# Therandom password set for the root user at Thu Apr 9 14:43:59 2015 (localtime): F6K3v_xggFoLQeiN
[[email protected] tools]#
mysql -uroot -pF6K3v_xggFoLQeiN Warning: Using a password on the command lineinterface can be insecure.
Welcome to the MySQL monitor. Commandsend with ; or \g.
修改root密碼;
mysql> usemysql;
mysql> UPDATEuser SET Password = PASSWORD(“******”) WHERE user = 'root';
2. Mysql主從複製
在mysql主從兩臺機器上開啟vi /etc/my.cnf檔案,在mysqld下加一行:
lower_case_table_names =1
2.1 mysql master
Myql主從複製的搭建:
兩臺機器192.168.18.130(master) 192.168.118.31(slave)
先從master開始:
1. 開啟/etc/my.cnf檔案(mysql啟動預設是從/etc/my.cnf讀取的,所以你別的地方有配置檔案的話建議直接移到/etc目錄下)
2. 在[mysqld]下加入配置:
## replication
server_id=6
binlog-ignore-db=mysql
log-bin=master-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
(serverid 全域性唯一的
binlog-ignore-db=mysql複製過濾,我們不同步mysql系統自帶的資料庫
log-bin=master-mysql-bin開啟logbin功能並設定logbin檔案的名稱
binlog_format=mixed 混合型複製模式,預設採用基於語句的複製,一旦發現基於語句的無法精確的複製時,就會採用基於行的複製。
接下來重啟mysql服務並用客戶端登入)
3. Slave想要同步master上的資料首先肯定需要許可權,所以我們要在master上開通許可權。
grant replication slave, replication client on *.* to'root'@'192.168.118.131' identified by ‘密碼’;(不知道這句有沒有用,我自己是開啟了任何ip都可以連結master的許可權,不建議在伺服器上這樣做)
或者自己開啟slave伺服器連結master伺服器的許可權
重新整理授權資訊,檢視master狀態:
Flush privileges;
Show master status;
-------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB |Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------------+----------+--------------+------------------+-------------------+
| master-mysql-bin.000001 | 1160 | | mysql |
4. 在master上建立一個數據庫,
我這裡直接用的test庫,
在庫裡建立一張表user,
Create table user(
User_id int(10) primary keyauto_increment,
User_name varchar(10)
);
隨便插入幾條資料。
接下來我們把test這個庫的資料全部備份下來,
首先我們要鎖表,
Flush tables with read lock;
接下來用mysql的備份命令進行備份,(不知道這一步可不可以省略,沒試過)
Mysqldump –p3306 –uroot –p –add-drop-tabletest > /tmp/edu-master.sql
然後把sql檔案用xftp傳送到slave伺服器上
2.2 mysql slave
5. Slave的配置:
開啟配置檔案/etc/my.cnf
在[mysqld]下加入:
## replication
server_id=5
binlog-ignore-db=mysql
log-bin=mysql-slave-bin
binlog_cache_size = 1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=mysql-relay-bin
log_slave_updates=1
read_only=1
然後重啟mysql:
Service mysql restart
然後建立一下資料庫,因為備份下來的資料檔案裡面是不包含建立資料庫命令的,所以要手動建立一下,(這裡我用的是test資料庫,所以不用自己建立,如果在master上是自己建立的資料庫,這裡需要在slave上在建立一次,省略)
把從master哪裡備份過來的sql檔案恢復到slave中
mysql –uroot –p test < /tmp/edu-master.sql
6. 登陸slave資料庫
在mysql中輸入命令連結master:
change master tomaster_host='192.168.118.130',master_user='root',master_password=”******”,master_port=3306,master_log_file='master-mysql-bin.000001',master_log_pos=1160,master_connect_retry=30;
change
master to
master_host='192.168.118.130' #master主機的ip地址
master_user='root',
master_password=’******’,
我們剛剛在master有執行過授權的賬號密碼就是這個
master_port=3306,master資料庫的埠號
master_log_file= ‘master-mysql-bin.000001', #show master status 看到的
master_log_pos=1160, #這個是我們通過show masterstatus看到的position
master_connect_retry=30;
使用命令檢視slave狀態,可以看到slave目前還未開始同步
show slave status\G;
執行strat slave 開始主從同步,看到兩個Yes就代表成功了。
在master機器上檢視狀態,可以看見slave的連結資訊。
Showprocesslist\G
最後可以測試一下,在master中插入資料,去slave檢視資料是否已經插入。
3. Java安裝
安裝1.7版本java
rpm -ivhjdk-7u80-linux-x64.rpm
安裝完成後java –version檢視版本,是否安裝成功。反正我安裝成功了。
OpenJDK Runtime Environment(rhel-2.6.10.1.el6_9-x86_64 u141-b02)
OpenJDK 64-Bit Server VM (build 24.141-b02,mixed mode)
4. Mycat安裝配置讀寫分離
將mycat的安裝包解壓到/usr/local目錄下,
cd /usr/local/mycat
ll
設定Mycat的環境變數
Vi /etc/profile
加入兩行;
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$MYCAT_HOME/bin
使配置檔案立即生效,
source /etc/profile
進入mycat配置檔案目錄:
cd /usr/local/mycat/conf/
vi schema.xml
這個配置檔案主要是用來配置資料庫節點,邏輯表等等東西的:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schemaxmlns:mycat="http://org.opencloudb/">
<!-- 定義MyCat的邏輯庫 -->
<schema name="mycat_schema"checkSQLschema="false" sqlMaxLimit="100"dataNode="testNode"></schema>
<!-- 定義MyCat的資料節點 -->
<dataNodename="testNode" dataHost="dtHost" database="test"/>
<!-- 定義資料主機dtHost,連線到MySQL讀寫分離叢集 ,schema中的每一個dataHost中的host屬性值必須唯一-->
<!-- dataHost實際上配置就是後臺的資料庫叢集,一個datahost代表一個數據庫叢集 -->
<!--balance="1",全部的readHost與stand by writeHost參與select語句的負載均衡-->
<!--writeType="0",所有寫操作傳送到配置的第一個writeHost,這裡就是我們的hostmaster,第一個掛了切到還生存的第二個writeHost-->
<dataHost name="dtHost"maxCon="500" minCon="20" balance="1"
writeType="0" dbType="mysql"dbDriver="native" switchType="2"slaveThreshold="100">
<!--心跳檢測 -->
<heartbeat>show slave status</heartbeat>
<!--配置後臺資料庫的IP地址和埠號,還有賬號密碼 -->
<writeHosthost="hostMaster" url="192.168.118.130:3306"user="root" password="******" >
<readHosthost="hostSlave" url="192.168.118.131:3306"user="root" password="******" />
</writeHost>
<writeHosthost="hostM2" url="192.168.118.131:3306"user="root" password="******" />
</dataHost>
</mycat:schema>
接下來配置server.xml檔案:
vi server.xml
如下:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:serverxmlns:mycat="http://org.opencloudb/">
<system>
<propertyname="defaultSqlParser">druidparser</property>
</system>
<username="root">
<propertyname="password">******</property>
<propertyname="schemas">mycat_schema</property>
</user>
</mycat:server>
關閉防火牆:
Service iptables stop
開啟Mycat:
Mycat start
用navicat連線Mycat進行查詢和新增,mycat預設埠是8066,
檢視Mycat.log日誌,檢視路由是否正確.
注意:mycat.log日誌預設是info級別,要在mycat/conf/log4j.xml中修改日誌級別為debug之後再看。
5. Web伺服器上realserver指令碼
在web伺服器上/etc/init.d下新建realserver指令碼(兩個都要)。內容如下:
SNS_VIP=192.168.118.16 #虛擬ip(叢集虛擬ip要相同)
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0">/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
然後service realserver start啟動realserver
如果報許可權不夠,則賦予realserver相應許可權:chmod 755 /etc/init.d/realserver
如果訪問function被拒絕,則賦予functions相應許可權:chmod 755 /etc/rc.d/init.d/functions
6. Keepalived安裝配置
(keepalived+ipvsadm不是裝在mycat+mysql伺服器上,準備一個新的伺服器,單獨放keepalived+ipvsadm)
安裝keepalived之前首先安裝nc外掛。用來對Mycat的8066埠做心跳檢測。
直接用rpm -ivh nc-1.84-24.el6.x86_64.rpm安裝就可以用。
安裝keepalived:(主從負載均衡伺服器都要配置)
rpm -ivhkeepalived-1.2.13-5.el6_6.x86_64.rpm
配置keepalived.conf:
1. global_defs {
2. notification_email {
4. }
5. notification_email_from [email protected]
6. smtp_server localhost
7. smtp_connect_timeout 30
8. router_id NodeA
9. }
預設的配置檔案中,使用第三方smtp伺服器,但這在現實中幾乎沒有意義(需要驗證的原因),我們將其指定為localhost, 將通知資訊的傳送交給本地sendmail服務處理。查閱說明文件得知route_id配置是為了標識當前節點,我將其設定為NodeA。
1. vrrp_instance VI_1 {
2. state MASTER #指定A節點為主節點 備用節點上設定為BACKUP即可
3. interface eth0 #繫結虛擬IP的網路介面
4. virtual_router_id 51 #VRRP組名,兩個節點的設定必須一樣,以指明各個節點屬於同一VRRP組
5. priority 100 #主節點的優先順序(1-254之間),備用節點必須比主節點優先順序低
6. advert_int 1 #組播資訊傳送間隔,兩個節點設定必須一樣
7. authentication { #設定驗證資訊,兩個節點必須一致
8. auth_type PASS
9. auth_pass 1111
10. }
11. virtual_ipaddress { #指定虛擬IP, 兩個節點設定必須一樣。
12. 192.168.118.16 #測試過程中發現,該虛擬ip只有和真實ip在同一網段,才好用
13. #不知道是不是跟我的虛擬機器用的nat模式聯網有關。
14. #測試主機A節點ip為192.168.118.128
15. }
16.}
按同樣的方法配置節點B並修改配置檔案,可將A節點的配置檔案複製到B節點,並修改以下幾項:
router_id NodeB
state BACKUP
priority 90
執行命令 ip a (注意ifconfig命令無法檢視到配置的虛擬IP),可以看到節點A已經綁定了192.168.118.16的ip,此時,關閉A的keepalived,在節點B上上執行ip a就發現虛擬IP已經繫結到節點B上,再開啟A的keepalived,虛擬IP又繫結回節點A之上。
Keepalived.conf完整配置如下:(兩個負載均衡伺服器都要配置)
! ConfigurationFile for keepalived
global_defs {
notification_email{
}
notification_email_from [email protected]
smtp_server localhost
smtp_connect_timeout 30
router_id NodeA
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.118.16
}
}
virtual_server 192.168.118.168066 { #虛擬ip
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout0 #會話保持時間,x s之內使用者無相應則下一次使用者請求時重新
#路由
protocol TCP
real_server 192.168.118.130 8066 { #真實伺服器1
weight 1
MISC_CHECK {
misc_path"/etc/keepalived/check_mycat_status.sh 192.168.118.130 8066"
misc_timeout 3
}
}
real_server 192.168.118.131 8066 { #真實伺服器2
weight 1
MISC_CHECK {
misc_path"/etc/keepalived/check_mycat_status.sh 192.168.118.131 8066"
misc_timeout 3
}
}
}
說明:因為用tcp_check健康檢測後面的mycat會報錯,所以這裡用misc_check的方式做心跳檢測,misc_path引號中內容分別是:自定義心跳檢測shell指令碼的路徑、檢測的伺服器ip、檢測的埠。(引號必須要)
Misc_timeout是指令碼執行超時時間。
Misc自定義指令碼如下:(執行下列指令碼必須要安裝nc外掛)
建立指令碼:
vi check_mycat_status.sh
指令碼內容:
#!/bin/bash
result=`nc -v -z $1 $2`
flag="succeeded"
if [[ $result =~ $flag ]]
then
exit 0
else;
exit 1
fi
給該指令碼賦予執行許可權:
Chmod 755 check_mycat_status.sh
7. Ipvsadm安裝配置
Ipvsadm安裝:(兩個負載均衡伺服器都要配置)
rpm -ivhipvsadm-1.26-4.el6.x86_64.rpm檢查安裝是否成功:
Ipvsadm –help
用ipvsadm –L檢視Keepalived路由資訊。
8. 整個流程測試
用navicat連結虛擬ip 192.168.118.16 埠號8066,使用者名稱root,密碼******,
通過Keepalived伺服器轉發到兩臺資料庫伺服器的Mycat上,ip地址為192.168.118.130和192.168.118.131,埠號為8066。連上mycat伺服器後,通過mycat對master資料庫進行寫,對slave資料庫進行讀操作。Master的資料會更新到slave資料庫。
Mysql的安裝的主從複製的配置,
雙點Mycat讀寫分離的安裝配置
分流伺服器主從Keepalived+ipvsadm的安裝、配置和資料庫伺服器realserver指令碼的編寫
相關推薦
keepalived+mycat+mysql框架搭建
介紹 Keepalived: v1.2.13 Linux:centos x64 6.8版本 Mycat:1.5.1版本 Mysql:5.6.21版本 nc: 1.84-24 ipvsadm: 1.26-4 jdk:1.7 架構介紹: 四臺主機: Master:192.16
haproxy+keepalived+mycat+mysql (讀寫分離)
haproxy+keepalived+m描述:架構方案: mysql (master/slave) --gtid 方式主備(pos 也可)mycat (master/slave) --xinted 插件時間主備模式haproxy (master/slave) --keepalived 自動切換--keepal
Spring + Spring MVC + MyBatis + Velocity + MySQL 框架搭建
最近因為公司業務需要,初步學習了SSM並根據網上的教程自己搭建了一個基礎的web,實現從前端Velocity頁面對資料庫進行CRUD基本操作。 特別提醒:我的整個原始碼以及JAR包已經打包上傳到CSDN,歡迎下載! 下載連結:http://download.c
Mybatis 系列(1)—— JSP + Spring + Mybatis+Mysql 框架搭建
小編也是忙裡偷閒的學會java,用吃飯和睡覺前的時間看完了一個Mybatis的介紹,手癢癢的就練了練,學習的時間也不長,兩天時間搭了一個框架,分享給大家。 MyBatis 是支援普通 SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis 消除了幾乎所有的
Spring+Mybatis+SpringMVC+Maven+MySql(SSM框架)搭建例項
這篇文章我們來實現使用maven構建工具來搭建Spring+Mybatis+SpringMVC+MySql的框架搭建例項。工程下載 使用maven當然得配置有關環境了,不會配置的請看我前幾篇文章,都有配置maven環境的列子! MySQL建立表sql語句: /* Navicat M
IDEA多模組SSM框架搭建(IDEA+tomcat+maven+mysql+spring+spring mvc+mybatis)總結
Tomcat版本:8.5.27 jdk版本:1.8 Idea版本:2017.3.5 1.建立一個根模組 不勾選任何值,直接next 根模組建立成功如下: src目錄不需要可以刪除 2.建立javadao模組
Spring boot 框架搭建(maven + mybatis + jersey +mysql)
一、建立一個maven專案 1.首先是建立一個Spring boot 的maven 專案,選擇maven-archetype-quickstart這個maven過濾器,建立一個maven專案。 2.建立後續的自己專案的根節點資訊,然後選擇finish。
基於.net core 2.0+mysql+AceAdmin搭建一套快速開發框架
前言 .net core已經出來一段時間了,相信大家對.net core的概念已經很清楚了,這裡就不再贅述。筆者目前也用.net core做過一些專案,並且將以前framework下的一些經驗移植到了.net core下,並結合.net core本身的一些特性整理成此框架,以供學習參考。如有不足之處,歡迎指
EF+MVC對映MySQL資料庫搭建程式框架總結
以前使用VS都是通過SQLServer資料庫對映,不過這個專案需求是MVC+EF+MySQL,在配置過程中出現了很多錯誤上網查看了很多資料,現在讓我來總結一下吧。 一:配置 因為VS和SqlServer都是微軟的親兒子所以在用VS對映SQLserver的時候很方便,但是對
[IDEA]::springboot框架搭建,整合mysql資料庫
1.完整工程目錄圖如下 2.開啟idea,左上角 file–>new–>project–>選擇spring Initializar,選擇 jdk ,然後next 3,出現下圖,繼續next,這裡可以修改你想要的檔名 4.只選中web,next 5.可以工程名,和工程存
實時分析Flume-Kafka框架搭建最終將資料在mysql中輸出
因為搭建框架比較複雜如果這其中有不足,歡迎提出指正。下面附上實時分析簡化框架圖幫助理解。 把離線分析框架也附上 實時分析搭建過程: 1.在命令提示符中(Windows+R)找到準備好的SocketTest.java路徑,javac SocketTest.java執行後生
使用RESTful Jersey框架搭建WebService,Hibernate框架訪問資料庫,MySQL儲存資料
package com.hnu.hibernate.resources; import java.util.List; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws
Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架環境
專案建設完成之後的結構: 資料庫的表結構如下: 環境建設:搭建Maven環境、Tomcat環境、需要MySQL 資料庫支援,使用的程式設計工具Eclipse (這些是前期準備); 開始建立工程: 1.
MyCAT+MySQL 搭建高可用企業級數據庫集群
調試 元素 eat linux 核心 適合 算法 用途 什麽 第1章 課程介紹課程介紹1-1 MyCAT導學 試看1-2 課程介紹 第2章 MyCAT入門這一章中,我們將回顧了垂直切分,水平切分,分庫分表等基礎概念,然後快速回如何安裝和啟動MyCAT的,介紹如何以打包好的可
Mycat+Mysql主從複製+haproxy+keepalived實現高可用的分庫分表叢集方案
一, 部署架構 1.1架構圖 1.2 軟體版本 作業系統: CentOS2-7-X86_64-DVD-1708.iso JDK 版本: jdk1.8.0_11 Keepalived 版本: keepalived-1.2.18.tar.gz
jeesite框架搭建maven專案 (mysql資料庫)
5. 技術選型1、後端* 核心框架:Spring Framework 4.0* 安全框架:Apache Shiro 1.2* 檢視框架:Spring MVC 4.0* 服務端驗證:Hibernate Validator 5.1* 佈局框架:SiteMesh 2.4* 工作流引擎:Activiti 5.15*
塗抹mysql筆記-搭建mysql高可用體系
argument 並且 ren enum 記錄 ica 操作系統 ner 一份 mysql的高可用體系<>追求更高穩定性的服務體系 可擴展性:橫向擴展(增加節點)、縱向擴展(增加節點的硬件配置) 高可用性<>Slave+LVS+Keepalived實
遊戲戰鬥數值框架搭建入門
們的 才會 game idt 讓我 cmm 數量 維度 標準 轉自:http://www.gameres.com/485798.html 設計一個遊戲DEMO的時候要幹的第一件事是什麽呢?是搭建數值框架,而如果是一個打打殺殺的遊戲,第一步要搭建的就是戰鬥數值的框架了。
windows下php、mysql環境搭建
ins ads unity 5.7 文件 all color 註意 ont php http://windows.php.net/download/ mysql https://dev.mysql.com/downloads/windows/installer/5.7.ht
React框架搭建但頁面應用package.json基本包和依賴包
5.5 2.0 server 4.5 ack logs ostc style pac { //依賴包 "devDependencies": { //babel "babel-core": "6.24.1", "babel-loader": "7.0