日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
通過(guò)mysql+keepalived實(shí)現(xiàn)MySQL高可用架構(gòu)

keepalived是vrrp協(xié)議的實(shí)現(xiàn),原生設(shè)計(jì)目的是為了高可用ipvs服務(wù),keepalived能夠配置文件中的定義生成ipvs規(guī)則,并能夠?qū)Ω鱎S的健康狀態(tài)進(jìn)行檢測(cè);通過(guò)共用的虛擬IP地址對(duì)外提供服務(wù);每個(gè)熱備組內(nèi)同一時(shí)刻只有一臺(tái)主服務(wù)器提供服務(wù),其他服務(wù)器處于冗余狀態(tài),若當(dāng)前在線的服務(wù)器宕機(jī),其虛擬IP地址將會(huì)被其他服務(wù)器接替(優(yōu)先級(jí)決定接替順序),實(shí)現(xiàn)高可用為后端主機(jī)提供服務(wù)。

系統(tǒng)環(huán)境及架構(gòu)

#主機(jī)名     系統(tǒng)版本        mysql版本  ip地址
mysqlMaster    centos7.4        mysql5.7        192.168.1.42
mysqlSlave    centos7.4        mysql5.7        192.168.1.43

#vip:192.168.1.41

在master和slave上分別進(jìn)行數(shù)據(jù)庫(kù)的安裝

yum install epel*  -y && yum clean all && yum makecache
rpm -Uvh http://repo.mysql.com/mysql57-community-release-el7.rpm
yum clean all && yum makecache
yum install gcc gcc-c++ openssl-devel mysql mysql-server mysql-devel -y

創(chuàng)建數(shù)據(jù)庫(kù)文件存放路徑

mkdir /data/mysql -p
chown -R mysql:mysql /data/mysql

配置mysql配置文件

#在mysqlMaster上配置mysql配置文件

vi /etc/my.cnf

[mysqld]
server-id = 1  #全局唯一,每臺(tái)都不能一樣
log-bin = mysql-bin #log-bin表示開(kāi)啟二進(jìn)制日志記錄,mysql-bin表示日志文件的命名格式,會(huì)生成mysql-bin.0001 等等
relay-log = mysql-relay-bin #指定中繼日志格式(拉取主mysql日志后,在從庫(kù)上生成的日志)
replicate-wild-ignore-table=mysql.% #指定那些庫(kù)或則表不進(jìn)行同步,mysql是庫(kù)名,.%表示下面所有的表,mysql.user  表示不同不mysql庫(kù)下的user表
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
#replicate-wild-do-table=boke.%  #表示同步那個(gè)庫(kù)
#注意:不要在主庫(kù)上使用binlog-do-db 或 binlog-ignore-db選項(xiàng)
#也不要在從庫(kù)上使用 replicate-do-db 或 replicate-ignore-db 選項(xiàng),因?yàn)檫@有可能產(chǎn)生跨庫(kù)更新失敗的問(wèn)題.推薦從庫(kù)上使用 replicate_wild_do_table 和 replicate_wild_ignore_table 這兩個(gè)選項(xiàng)來(lái)解決復(fù)制過(guò)濾問(wèn)題
datadir=/data/mysql
socket=/data/mysql/mysql.sock
user=mysql
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8

[mysql]
socket=/data/mysql/mysql.sock
default-character-set=utf8

[client]
socket=/data/mysql/mysql.sock
default-character-set=utf8
user=root
password=NCYD-tianyu@0791
#若是不寫(xiě)上這個(gè)字段,在本機(jī)用命令進(jìn)入mysql會(huì)報(bào)錯(cuò),提示默認(rèn)路徑/var/lib/mysql/mysql.sock找不到

在mysqlSlave上配置mysql配置文件

vi /etc/my.cnf

[mysqld]
server-id = 2
log-bin = mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
datadir=/data/mysql
socket=/data/mysql/mysql.sock
user=mysql
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8

[mysql]
socket=/data/mysql/mysql.sock
default-character-set=utf8

[client]
socket=/data/mysql/mysql.sock
default-character-set=utf8
user=root
password=NCYD-tianyu@0791

#若是不寫(xiě)上這個(gè)字段,在本機(jī)用命令進(jìn)入mysql會(huì)報(bào)錯(cuò),提示默認(rèn)路徑/var/lib/mysql/mysql.sock找不到,先初始化數(shù)據(jù)庫(kù)(需要進(jìn)行初始化在/data/mysql目錄里生成必要的信息)

#mysql5.7.7以后的初始化方法
mysqld --initialize --user=mysql --datadir=/data/mysql

#mysql5.7.7以前的初始化方法
mysql_install_db --user=mysql --datadir=/data/mysql

分別啟動(dòng)主從數(shù)據(jù)庫(kù)

#在centos7里面,必須先關(guān)閉selinux,否在無(wú)法啟動(dòng)mysqld
systemctl start mysqld

分別為主從mysql做安全加固

#查到上一步,首次啟動(dòng)mysql,系統(tǒng)自動(dòng)生成的密碼( cat /var/log/mysqld.log |grep pass )
mysql_secure_installation #使用該命令更改隨機(jī)root密碼(修改為 NCYD-tianyu@0791 )
手動(dòng)同步數(shù)據(jù)(假如現(xiàn)在的環(huán)境,主上已經(jīng)有數(shù)據(jù)了,從是新的)
1:在主上數(shù)據(jù)庫(kù)中創(chuàng)建用于復(fù)制的用戶(hù),并授權(quán)
mysql> GRANT REPLICATION SLAVE ON *.* to 'tongbu'@'192.168.1.43' identified by '123456789';

2:在主mysql上先鎖表(使其所有表變成只讀狀態(tài))
mysql> flush tables with read lock;  #不要退出終端,否在這個(gè)鎖就失效了

3:再開(kāi)啟另一個(gè)命令行終端,使用myqldump等工具將數(shù)據(jù)導(dǎo)出(或則直接打包存儲(chǔ)mysql數(shù)據(jù)的目錄,并發(fā)送到從機(jī)上)

4:將導(dǎo)出數(shù)據(jù)復(fù)制到從機(jī)上,并創(chuàng)建新庫(kù)并導(dǎo)入數(shù)據(jù)
互相置從,互相置主(以達(dá)到雙主模式)

在mysqlMaster上將mysqlSlave設(shè)置為自己的主角色服務(wù)器

mysql> show master status; #查看mysqlSlave的狀態(tài)(記錄File名字,和Position)

change master to
master_host = '192.168.1.43',
master_user = 'tongbu',
master_password = '123456789',
master_log_file = 'mysql-bin.000002',
master_log_pos = 1006;

mysql> start slave;      #啟動(dòng)slave端的復(fù)制進(jìn)程(某些版本是:slave start; )
mysql> show slave status\G  #查看slaves端的I/O進(jìn)程,與SQL進(jìn)程

在從上將mysqlMaster設(shè)置為自己的主角色服務(wù)器

mysql> show master status; #查看mysqlMaster的狀態(tài)(記錄File名字,和Position)

change master to
master_host = '192.168.1.42',
master_user = 'tongbu',
master_password = '123456789',
master_log_file = 'mysql-bin.000002',
master_log_pos = 1006;

mysql> start slave;      #啟動(dòng)slave端的復(fù)制進(jìn)程
mysql> show slave status\G  #查看slaves端的I/O進(jìn)程,與SQL進(jìn)程

驗(yàn)證是否同步

1:第一驗(yàn)證在myssqlMaster上創(chuàng)建庫(kù),mysqlSlave上是否存在

2:第二驗(yàn)證在mysqlSlave上創(chuàng)建庫(kù),mysqlMaster上是否存在

安裝keepalived實(shí)現(xiàn)VIP切換,達(dá)到高可用

yum install keepalived -y

#在mysqlMaster和mysqlSlave上都創(chuàng)建檢查mysql的檢查腳本,并賦予執(zhí)行權(quán)限
touch /etc/keepalived/mysql_check.sh
chmod +x /etc/keepalived/mysql_check.sh
vi /etc/keepalived/mysql_check.sh

#!/bin/bash
#slave_is=( $(mysql -uroot -pNCYD-tianyu@0791 -e "show slave status\G" | grep "Slave_.*_Running" | awk '{print $2}') ) 在新版本的myql中,直接將密碼寫(xiě)在命令行,會(huì)進(jìn)行安全提示,解決辦法是將其寫(xiě)在mysql的配置文件里的 [client] 字段里,寫(xiě)法見(jiàn)上面mysql的配置文件
slave_is=( $(mysql -e "show slave status\G" | grep "Slave_.*_Running" | awk '{print $2}') )
if [ "${slave_is[0]}" = "Yes" -a "$slave_is[1]" = "Yes"]
then
exit 0
else
exit 1
fi

#注意,keepalived檢查腳本vrrp_script,只認(rèn)兩個(gè)返回值,0表示正常,非0表示不正常(這在寫(xiě)腳本是要注意),不正常就要做相關(guān)的切換

配置keepalived,以實(shí)現(xiàn)高可用

vi /etc/keepalived/keepalived.conf

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_skip_check_adv_addr
  #vrrp_strict  #注意:當(dāng)你發(fā)現(xiàn)無(wú)法ping通虛擬VIP時(shí),建議將此行注釋掉
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}
vrrp_script mysql_check {
script "/etc/keepalived/mysql_check.sh"
#這個(gè)腳本,若是發(fā)現(xiàn)不執(zhí)行,可以檢查他的權(quán)限,777是不可以的,日志提示不安全,可以直接chmod +x /etc/keepalived/mysql_check.sh 就行
#script "shutdown -r now" #或者,直接用命令進(jìn)行調(diào)試
interval 2
weight 2
}
vrrp_instance VI_1 {
   state MASTER #mysqlMaster上是MASTER;mysqlSlave上是BACKUP
   interface ens192
   virtual_router_id 52
   priority 100 #mysqlMaster上是100;mysqlSlave上是90
   advert_int 1
   nopreempt  #配置VIP(注意:故障切換搶占模式,盡量關(guān)閉,默認(rèn)是開(kāi)啟的,這個(gè)參數(shù)只需要在高優(yōu)先級(jí)上設(shè)置即可)
   authentication {
       auth_type PASS
       auth_pass 1111
   }
track_script { #調(diào)用上面定義檢查mfsmaster的腳本
       mysql_check
   }
   virtual_ipaddress {
       192.168.1.41/24 dev ens192
   }
}

啟動(dòng)keepalived

systemctl start keepalived

網(wǎng)站題目:通過(guò)mysql+keepalived實(shí)現(xiàn)MySQL高可用架構(gòu)
地址分享:http://www.5511xx.com/article/dhhjcpo.html