keepalived mysql 主從能負載均衡么 keepalived自身負載均衡嗎
部署完成之后,通過VIP:192.168.21.254,根據LVS調度算法來訪問后端真實的MySQL從服務器,實現負載均衡。
具體操作:
第一部分:分別在兩臺MySQL從服務器上操作
一、關閉SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
二、配置防火墻,開啟3306端口
vi /etc/sysconfig/iptables #編輯
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允許3306端口通過防火墻
:wq! #保存退出
/etc/init.d/iptables restart #重啟防火墻使配置生效
系統(tǒng)運維 www.osyunwei.com 溫馨提醒:qihang01原創(chuàng)內容 版權所有,轉載請注明出處及原文鏈接
三、綁定LVS虛擬服務器(VIP):192.168.21.254到lo:0
vi /etc/rc.d/init.d/realserver #編輯,添加以下代碼
#################################################
#!/bin/sh
# chkconfig: - 80 90
# description:realserver
# mysql_vip start realserver
mysql_vip=192.168.21.254 #LVS虛擬服務器(VIP)
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $mysql_vip netmask 255.255.255.255 broadcast $mysql_vip
/sbin/route add -host $mysql_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 $mysql_vip >/dev/null 2>&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
#################################################
chmod +x /etc/rc.d/init.d/realserver #添加腳本執(zhí)行權限
chkconfig realserver on #添加開機啟動
/etc/rc.d/init.d/realserver start #開啟,參數stop為關閉
四、調整服務器參數,使LVS虛擬服務器(VIP)忽略ARP廣播包
vi /etc/sysctl.conf #編輯
net.ipv4.ip_forward= 1 #修改0為1,開啟轉發(fā)
net.ipv4.conf.lo.arp_ignore= 1
net.ipv4.conf.lo.arp_announce= 2
net.ipv4.conf.all.arp_ignore= 1
net.ipv4.conf.all.arp_announce= 2
:wq! #保存退出
/sbin/sysctl -p #使配置立即生效
五、設置能夠遠程監(jiān)控MySQL主從同步狀態(tài)的MySQL用戶和密碼
mysql -u root -p #進入MySQL控制臺
insert into mysql.user(Host,User,Password) values('localhost','checkslave',password('123456')); #新建賬戶checkslave,密碼123456
flush privileges; #刷新系統(tǒng)授權表
grant all on *.* to 'checkslave'@'192.168.21.129' identified by '123456' with grant option; #允許賬戶checkslave從LVS主服務器192.168.21.129連接到數據庫服務器
grant all on *.* to 'checkslave'@'192.168.21.130' identified by '123456' with grant option; #允許賬戶checkslave從LVS從服務器192.168.21.130連接到數據庫服務器
第二部分:分別在兩臺LVS主備服務器上操作
一、關閉SElinux、配置防火墻
1、vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
2、vi /etc/sysconfig/iptables #編輯
-A RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT #允許VRRP(虛擬路由器冗余協議)組播地址通信
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允許3306端口通過防火墻
:wq! #保存退出
/etc/init.d/iptables restart #重啟防火墻使配置生效
二、安裝lvs軟件
yum install ipvsadm #Linux 2.6內核已經集成了lvs軟件,此處ipvsadm為lvs管理工具
modprobe ip_vs #加載ip_vs
三、安裝keepalived
yum install gcc gcc-c++ make openssl-devel kernel-devel ncurses-devel #安裝編譯工具包
下載keeplived:http://www.keepalived.org/software/keepalived-1.2.12.tar.gz
上傳keepalived-1.2.12.tar.gz到/usr/local/src目錄
cd /usr/local/src
tar zxvf keepalived-1.2.12.tar.gz
cd keepalived-1.2.12
./configure #配置,必須看到以下提示,說明配置正確,才能繼續(xù)安裝
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
make #編輯
make install #安裝
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/keepalived #添加執(zhí)行權限
chkconfig keepalived on #設置開機啟動
service keepalived start #啟動
service keepalived stop #關閉
service keepalived restart #重啟
四、安裝perl、perl-DBI、DBD-mysql模塊以及MySQL客戶端 #perl腳本連接MySQL數據庫需要
yum install perl perl-DBI perl-DBD-MySQL mysql #執(zhí)行此命令安裝
vi /tmp/test_perl.pl
#!/usr/bin/perl
print "Hello, world!\n";
:wq! #保存退出
perl /tmp/test_perl.pl #運行測試腳本,如果出現:Hello,world! 說明perl安裝成功
perldoc DBI #查看DBI模塊是否安裝
perldoc DBD::mysql #查看DBD::mysql模塊是否安裝
五、配置keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-bak
vi /etc/keepalived/keepalived.conf #編輯,修改為以下代碼
##################################################################################################
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #LVS備機修改為BACKUP
interface eth0
virtual_router_id 51
priority 100 #LVS備機修改為80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.21.254
}
notify_master "/etc/keepalived/clean_arp.sh" #LVS主備機都為notify_master
}
virtual_server 192.168.21.254 3306 {
delay_loop 30
lb_algo wlc
lb_kind DR
#nat_mask 255.255.255.0
persistence_timeout 120
protocol TCP
real_server 192.168.21.127 3306 {
weight 1
MISC_CHECK {
misc_path "/etc/keepalived/check_slave.pl 192.168.21.127"
misc_dynamic
}
}
real_server 192.168.21.128 3306 {
weight 1
MISC_CHECK {
misc_path "/etc/keepalived/check_slave.pl 192.168.21.128"
misc_dynamic
}
}
##################################################################################################
:wq! #保存退出
系統(tǒng)運維 www.osyunwei.com 溫馨提醒:qihang01原創(chuàng)內容 版權所有,轉載請注明出處及原文鏈接
六、設置MySQL主從監(jiān)控腳本check_slave.pl
vi /etc/keepalived/check_slave.pl #編輯,添加以下代碼
##################################################################################################
#!/usr/bin/perl -w
use DBI;
use DBD::mysql;
# CONFIG VARIABLES
$SBM = 120;
$db = "osyunweidb";
$host = $ARGV[0];
$port = 3306;
$user = "checkslave";
$pw = "123456";
# SQL query
$query = "show slave status";
$dbh = DBI->connect("DBI:mysql:$db:$host:$port", $user, $pw, { RaiseError => 0,PrintError => 0 });
if (!defined($dbh)) {
exit 1;
}
$sqlQuery = $dbh->prepare($query);
$sqlQuery->execute;
$Slave_IO_Running = "";
$Slave_SQL_Running = "";
$Seconds_Behind_Master = "";
while (my $ref = $sqlQuery->fetchrow_hashref()) {
$Slave_IO_Running = $ref->{'Slave_IO_Running'};
$Slave_SQL_Running = $ref->{'Slave_SQL_Running'};
$Seconds_Behind_Master = $ref->{'Seconds_Behind_Master'};
}
$sqlQuery->finish;
$dbh->disconnect();
if ( $Slave_IO_Running eq "No" || $Slave_SQL_Running eq "No" ) {
exit 1;
} else {
if ( $Seconds_Behind_Master > $SBM ) {
exit 1;
} else {
exit 0;
}
}
##################################################################################################
:wq! #保存退出
chmod +x /etc/keepalived/check_slave.pl #添加腳本執(zhí)行權限
七、設置更新LVS虛擬服務器(VIP)地址的arp記錄到網關腳本
vi /etc/keepalived/clean_arp.sh #編輯,添加以下代碼
#!/bin/sh
VIP=192.168.21.254
GATEWAY=192.168.21.2
/sbin/arping -I eth0 -c 5 -s $VIP $GATEWAY &>/dev/null
:wq! #保存退出
chmod +x /etc/keepalived/clean_arp.sh #添加腳本執(zhí)行權限
八、測試LVS+Keepalived是否正常運行
service keepalived restart #在兩臺LVS主備服務器上重啟keepalived
ipvsadm -L #在兩臺LVS主備服務器上執(zhí)行此命令,
ip addr show #在兩臺LVS主備服務器上執(zhí)行此命令,
#從圖中可以看到VIP:192.168.21.254現在指向的是LVS主服務器
1、關閉LVS主服務器的keepalived服務,查看LVS備服務器是否正常接管keepalived
service keepalived stop #在LVS主服務器上運行
此時,在兩臺LVS主備服務器上執(zhí)行ip addr show命令,
系統(tǒng)運維 www.osyunwei.com 溫馨提醒:qihang01原創(chuàng)內容 版權所有,轉載請注明出處及原文鏈接
可以看到VIP:192.168.21.254現在指向的是LVS備服務器,說明LVS備服務器已經接管keepalived,測試成功。
2、停止MySQL從服務器192.168.21.127上面的主從同步服務
mysql -u root -p #進入MySQL控制臺
slave start; #停止同步
在LVS備服務器執(zhí)行ipvsadm -L命令,可以看到MySQL從服務器192.168.21.127已經從負載均衡列表中被剔除了,測試成功。
3、從客戶端連接LVS虛擬服務器(VIP):192.168.21.254
telnet 192.168.21.254 3306 #執(zhí)行此命令,說明測試成功。
tail -f /var/log/messages #查看LVS日志信息
至此,LVS+Keepalived實現MySQL從庫讀操作負載均衡配置完成。
箕慧18967461420: 組建mysql集群的幾種方案 -
承德縣瓦斯: ______ 但似乎很多人推薦這個) DRBD+Heartbeat+MySQL(有一臺機器空余?Heartbeat切換時間較長?有腦裂問題?) MySQL Proxy(不夠成熟與穩(wěn)定?使用了Lua?是不是用了他做分表則可以不用更改客戶端邏輯?) MySQL Cluster (社區(qū)版不支...
箕慧18967461420: 現在常用的mysql集群常用方案有哪些 -
承德縣瓦斯: ______ 首先你要考慮主從保證mysql down幾時候可以貼換從數據庫至於集群,你要考慮是否有那麼多mv訪問到數據庫,就算有,你也應該考慮的是用nosql而不一定用到集群!
箕慧18967461420: mysql 互為主從 有什么風險或者說缺點嗎? -
承德縣瓦斯: ______ mysql的雙主或主從都是通過binlog的傳輸來對數據的一致性進行保障. 換句話說就是A寫入了,其實A會把binlog發(fā)給B,B也會同時寫入. 如果你是不希望同時寫入,那你只能寄望于共享存儲. 兩臺機共用一個存儲設備,當A壞了B馬上接管A的工作. 因為A和B都是使用同一個存儲設備,所以不存在同步的問題.
箕慧18967461420: MySQL中修改數據庫 ALTER DATABASE 語法的使用? -
承德縣瓦斯: ______ 用alter database語句修改數據庫 --1.將名為"例二數據庫"的數據庫改名為"例七數據庫" 顯示代碼打印 alter database 例二數據庫 modify name = 例七數據庫 或 顯示代碼打印1 exec sp_renamedb '例二數據庫','例七數據庫' --2.為"例六數...
箕慧18967461420: mysql主從和主主哪個更好 -
承德縣瓦斯: ______ 集群中,可能存在mysql主從復制.但主從主要是做讀寫分離的.另外主從出現故障可能性比較大.mysql集群很復雜,當然小集群比較簡單,集群主要是實現高可用和高負載,主從只是集群可能用到的一個mysql功能了.比如 主從+讀寫分離+keepalived自動故障切換但mysql瓶頸在于寫,也就是.復雜的集群有的按照索引分開寫入,有的多主……
箕慧18967461420: mysql主從和主主哪個好?能說得具體點嗎? -
承德縣瓦斯: ______ 其實目的都是一樣,看項目需要,都是為了數據備份,主主還能起到分流的作用
箕慧18967461420: mysql怎么一次執(zhí)行多條SQL語句 -
承德縣瓦斯: ______ 工具/材料:Navicat For Mysql. 1、首先在桌面上,點擊“Navicat For Mysql”圖標. 2、然后在該界面中,點擊“新建查詢”按鈕. 3、之后在該界面中,輸入多條SQL語句. 4、接著在該界面中,點擊上方“執(zhí)行”按鈕. 5、最后在該界面中,顯示多條SQL語句執(zhí)行成功.
箕慧18967461420: MySQL Server 5.1如何運行數據庫 -
承德縣瓦斯: ______ 如果確定安裝成功的話可以在command窗口(開始、運行、輸入cmd)打開、管理MySQL,相關命令如下:啟動MySQL服務:net start mysql 停止MySQL服務:net stop mysql 重啟MySQL服務:net restart mysql (直接運行net會有更多命令提示...
箕慧18967461420: 高級mysql dba必備哪些技能 -
承德縣瓦斯: ______ 高級操作1.Mysql 主從同步配置2.Mysql 雙master 配置3.Mysql 雙master+叢庫+keepalived 配置高可用數據庫 客戶端 作為DBA,一定不要用各種GUI工具,mysql自帶命令行client才是你的最佳武器 可選項1.mysql 分區(qū)配置,因為限制太多,實際中...
箕慧18967461420: 如何在mysql的集群上實現多實例 -
承德縣瓦斯: ______ 如何在mysql的集群上實現多實例 mysql的多實例有兩種方式可以實現,兩種方式各有利弊.第一種是使用多個配置文件啟動不同的進程來實現多實例,這種方式的優(yōu)勢邏輯簡單,配置簡單,缺點是管理起來不太方便.第二種是通過官方自帶的mysqld_multi使用單獨的配置文件來實現多實例,這種方式定制每個實例的配置不太方面,優(yōu)點是管理起來很方便,集中管理.
具體操作:
第一部分:分別在兩臺MySQL從服務器上操作
一、關閉SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
二、配置防火墻,開啟3306端口
vi /etc/sysconfig/iptables #編輯
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允許3306端口通過防火墻
:wq! #保存退出
/etc/init.d/iptables restart #重啟防火墻使配置生效
系統(tǒng)運維 www.osyunwei.com 溫馨提醒:qihang01原創(chuàng)內容 版權所有,轉載請注明出處及原文鏈接
三、綁定LVS虛擬服務器(VIP):192.168.21.254到lo:0
vi /etc/rc.d/init.d/realserver #編輯,添加以下代碼
#################################################
#!/bin/sh
# chkconfig: - 80 90
# description:realserver
# mysql_vip start realserver
mysql_vip=192.168.21.254 #LVS虛擬服務器(VIP)
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $mysql_vip netmask 255.255.255.255 broadcast $mysql_vip
/sbin/route add -host $mysql_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 $mysql_vip >/dev/null 2>&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
#################################################
chmod +x /etc/rc.d/init.d/realserver #添加腳本執(zhí)行權限
chkconfig realserver on #添加開機啟動
/etc/rc.d/init.d/realserver start #開啟,參數stop為關閉
四、調整服務器參數,使LVS虛擬服務器(VIP)忽略ARP廣播包
vi /etc/sysctl.conf #編輯
net.ipv4.ip_forward= 1 #修改0為1,開啟轉發(fā)
net.ipv4.conf.lo.arp_ignore= 1
net.ipv4.conf.lo.arp_announce= 2
net.ipv4.conf.all.arp_ignore= 1
net.ipv4.conf.all.arp_announce= 2
:wq! #保存退出
/sbin/sysctl -p #使配置立即生效
五、設置能夠遠程監(jiān)控MySQL主從同步狀態(tài)的MySQL用戶和密碼
mysql -u root -p #進入MySQL控制臺
insert into mysql.user(Host,User,Password) values('localhost','checkslave',password('123456')); #新建賬戶checkslave,密碼123456
flush privileges; #刷新系統(tǒng)授權表
grant all on *.* to 'checkslave'@'192.168.21.129' identified by '123456' with grant option; #允許賬戶checkslave從LVS主服務器192.168.21.129連接到數據庫服務器
grant all on *.* to 'checkslave'@'192.168.21.130' identified by '123456' with grant option; #允許賬戶checkslave從LVS從服務器192.168.21.130連接到數據庫服務器
第二部分:分別在兩臺LVS主備服務器上操作
一、關閉SElinux、配置防火墻
1、vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
2、vi /etc/sysconfig/iptables #編輯
-A RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT #允許VRRP(虛擬路由器冗余協議)組播地址通信
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允許3306端口通過防火墻
:wq! #保存退出
/etc/init.d/iptables restart #重啟防火墻使配置生效
二、安裝lvs軟件
yum install ipvsadm #Linux 2.6內核已經集成了lvs軟件,此處ipvsadm為lvs管理工具
modprobe ip_vs #加載ip_vs
三、安裝keepalived
yum install gcc gcc-c++ make openssl-devel kernel-devel ncurses-devel #安裝編譯工具包
下載keeplived:http://www.keepalived.org/software/keepalived-1.2.12.tar.gz
上傳keepalived-1.2.12.tar.gz到/usr/local/src目錄
cd /usr/local/src
tar zxvf keepalived-1.2.12.tar.gz
cd keepalived-1.2.12
./configure #配置,必須看到以下提示,說明配置正確,才能繼續(xù)安裝
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
make #編輯
make install #安裝
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/keepalived #添加執(zhí)行權限
chkconfig keepalived on #設置開機啟動
service keepalived start #啟動
service keepalived stop #關閉
service keepalived restart #重啟
四、安裝perl、perl-DBI、DBD-mysql模塊以及MySQL客戶端 #perl腳本連接MySQL數據庫需要
yum install perl perl-DBI perl-DBD-MySQL mysql #執(zhí)行此命令安裝
vi /tmp/test_perl.pl
#!/usr/bin/perl
print "Hello, world!\n";
:wq! #保存退出
perl /tmp/test_perl.pl #運行測試腳本,如果出現:Hello,world! 說明perl安裝成功
perldoc DBI #查看DBI模塊是否安裝
perldoc DBD::mysql #查看DBD::mysql模塊是否安裝
五、配置keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-bak
vi /etc/keepalived/keepalived.conf #編輯,修改為以下代碼
##################################################################################################
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #LVS備機修改為BACKUP
interface eth0
virtual_router_id 51
priority 100 #LVS備機修改為80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.21.254
}
notify_master "/etc/keepalived/clean_arp.sh" #LVS主備機都為notify_master
}
virtual_server 192.168.21.254 3306 {
delay_loop 30
lb_algo wlc
lb_kind DR
#nat_mask 255.255.255.0
persistence_timeout 120
protocol TCP
real_server 192.168.21.127 3306 {
weight 1
MISC_CHECK {
misc_path "/etc/keepalived/check_slave.pl 192.168.21.127"
misc_dynamic
}
}
real_server 192.168.21.128 3306 {
weight 1
MISC_CHECK {
misc_path "/etc/keepalived/check_slave.pl 192.168.21.128"
misc_dynamic
}
}
##################################################################################################
:wq! #保存退出
系統(tǒng)運維 www.osyunwei.com 溫馨提醒:qihang01原創(chuàng)內容 版權所有,轉載請注明出處及原文鏈接
六、設置MySQL主從監(jiān)控腳本check_slave.pl
vi /etc/keepalived/check_slave.pl #編輯,添加以下代碼
##################################################################################################
#!/usr/bin/perl -w
use DBI;
use DBD::mysql;
# CONFIG VARIABLES
$SBM = 120;
$db = "osyunweidb";
$host = $ARGV[0];
$port = 3306;
$user = "checkslave";
$pw = "123456";
# SQL query
$query = "show slave status";
$dbh = DBI->connect("DBI:mysql:$db:$host:$port", $user, $pw, { RaiseError => 0,PrintError => 0 });
if (!defined($dbh)) {
exit 1;
}
$sqlQuery = $dbh->prepare($query);
$sqlQuery->execute;
$Slave_IO_Running = "";
$Slave_SQL_Running = "";
$Seconds_Behind_Master = "";
while (my $ref = $sqlQuery->fetchrow_hashref()) {
$Slave_IO_Running = $ref->{'Slave_IO_Running'};
$Slave_SQL_Running = $ref->{'Slave_SQL_Running'};
$Seconds_Behind_Master = $ref->{'Seconds_Behind_Master'};
}
$sqlQuery->finish;
$dbh->disconnect();
if ( $Slave_IO_Running eq "No" || $Slave_SQL_Running eq "No" ) {
exit 1;
} else {
if ( $Seconds_Behind_Master > $SBM ) {
exit 1;
} else {
exit 0;
}
}
##################################################################################################
:wq! #保存退出
chmod +x /etc/keepalived/check_slave.pl #添加腳本執(zhí)行權限
七、設置更新LVS虛擬服務器(VIP)地址的arp記錄到網關腳本
vi /etc/keepalived/clean_arp.sh #編輯,添加以下代碼
#!/bin/sh
VIP=192.168.21.254
GATEWAY=192.168.21.2
/sbin/arping -I eth0 -c 5 -s $VIP $GATEWAY &>/dev/null
:wq! #保存退出
chmod +x /etc/keepalived/clean_arp.sh #添加腳本執(zhí)行權限
八、測試LVS+Keepalived是否正常運行
service keepalived restart #在兩臺LVS主備服務器上重啟keepalived
ipvsadm -L #在兩臺LVS主備服務器上執(zhí)行此命令,
ip addr show #在兩臺LVS主備服務器上執(zhí)行此命令,
#從圖中可以看到VIP:192.168.21.254現在指向的是LVS主服務器
1、關閉LVS主服務器的keepalived服務,查看LVS備服務器是否正常接管keepalived
service keepalived stop #在LVS主服務器上運行
此時,在兩臺LVS主備服務器上執(zhí)行ip addr show命令,
系統(tǒng)運維 www.osyunwei.com 溫馨提醒:qihang01原創(chuàng)內容 版權所有,轉載請注明出處及原文鏈接
可以看到VIP:192.168.21.254現在指向的是LVS備服務器,說明LVS備服務器已經接管keepalived,測試成功。
2、停止MySQL從服務器192.168.21.127上面的主從同步服務
mysql -u root -p #進入MySQL控制臺
slave start; #停止同步
在LVS備服務器執(zhí)行ipvsadm -L命令,可以看到MySQL從服務器192.168.21.127已經從負載均衡列表中被剔除了,測試成功。
3、從客戶端連接LVS虛擬服務器(VIP):192.168.21.254
telnet 192.168.21.254 3306 #執(zhí)行此命令,說明測試成功。
tail -f /var/log/messages #查看LVS日志信息
至此,LVS+Keepalived實現MySQL從庫讀操作負載均衡配置完成。
相關評說:
承德縣瓦斯: ______ 但似乎很多人推薦這個) DRBD+Heartbeat+MySQL(有一臺機器空余?Heartbeat切換時間較長?有腦裂問題?) MySQL Proxy(不夠成熟與穩(wěn)定?使用了Lua?是不是用了他做分表則可以不用更改客戶端邏輯?) MySQL Cluster (社區(qū)版不支...
承德縣瓦斯: ______ 首先你要考慮主從保證mysql down幾時候可以貼換從數據庫至於集群,你要考慮是否有那麼多mv訪問到數據庫,就算有,你也應該考慮的是用nosql而不一定用到集群!
承德縣瓦斯: ______ mysql的雙主或主從都是通過binlog的傳輸來對數據的一致性進行保障. 換句話說就是A寫入了,其實A會把binlog發(fā)給B,B也會同時寫入. 如果你是不希望同時寫入,那你只能寄望于共享存儲. 兩臺機共用一個存儲設備,當A壞了B馬上接管A的工作. 因為A和B都是使用同一個存儲設備,所以不存在同步的問題.
承德縣瓦斯: ______ 用alter database語句修改數據庫 --1.將名為"例二數據庫"的數據庫改名為"例七數據庫" 顯示代碼打印 alter database 例二數據庫 modify name = 例七數據庫 或 顯示代碼打印1 exec sp_renamedb '例二數據庫','例七數據庫' --2.為"例六數...
承德縣瓦斯: ______ 集群中,可能存在mysql主從復制.但主從主要是做讀寫分離的.另外主從出現故障可能性比較大.mysql集群很復雜,當然小集群比較簡單,集群主要是實現高可用和高負載,主從只是集群可能用到的一個mysql功能了.比如 主從+讀寫分離+keepalived自動故障切換但mysql瓶頸在于寫,也就是.復雜的集群有的按照索引分開寫入,有的多主……
承德縣瓦斯: ______ 其實目的都是一樣,看項目需要,都是為了數據備份,主主還能起到分流的作用
承德縣瓦斯: ______ 工具/材料:Navicat For Mysql. 1、首先在桌面上,點擊“Navicat For Mysql”圖標. 2、然后在該界面中,點擊“新建查詢”按鈕. 3、之后在該界面中,輸入多條SQL語句. 4、接著在該界面中,點擊上方“執(zhí)行”按鈕. 5、最后在該界面中,顯示多條SQL語句執(zhí)行成功.
承德縣瓦斯: ______ 如果確定安裝成功的話可以在command窗口(開始、運行、輸入cmd)打開、管理MySQL,相關命令如下:啟動MySQL服務:net start mysql 停止MySQL服務:net stop mysql 重啟MySQL服務:net restart mysql (直接運行net會有更多命令提示...
承德縣瓦斯: ______ 高級操作1.Mysql 主從同步配置2.Mysql 雙master 配置3.Mysql 雙master+叢庫+keepalived 配置高可用數據庫 客戶端 作為DBA,一定不要用各種GUI工具,mysql自帶命令行client才是你的最佳武器 可選項1.mysql 分區(qū)配置,因為限制太多,實際中...
承德縣瓦斯: ______ 如何在mysql的集群上實現多實例 mysql的多實例有兩種方式可以實現,兩種方式各有利弊.第一種是使用多個配置文件啟動不同的進程來實現多實例,這種方式的優(yōu)勢邏輯簡單,配置簡單,缺點是管理起來不太方便.第二種是通過官方自帶的mysqld_multi使用單獨的配置文件來實現多實例,這種方式定制每個實例的配置不太方面,優(yōu)點是管理起來很方便,集中管理.