亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql+Keepalived實(shí)現(xiàn)雙主熱備方式

 更新時(shí)間:2022年10月31日 09:49:52   作者:z.haoui  
這篇文章主要介紹了Mysql+Keepalived實(shí)現(xiàn)雙主熱備方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

我們通常說(shuō)的雙機(jī)熱備是指兩臺(tái)機(jī)器都在運(yùn)行,但并不是兩臺(tái)機(jī)器都同時(shí)在提供服務(wù)。當(dāng)提供服務(wù)的一臺(tái)出現(xiàn)故障的時(shí)候,另外一臺(tái)會(huì)馬上自動(dòng)接管并且提供服務(wù),而且切換的時(shí)間非常短

MySQL雙主復(fù)制,即互為Master-Slave(默認(rèn)只使用一臺(tái)MasterA負(fù)責(zé)數(shù)據(jù)寫入,另一臺(tái)MasterB備用),可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)服務(wù)器的熱備,但是一臺(tái)Master宕機(jī)后不能實(shí)現(xiàn)動(dòng)態(tài)切換。

使用Keepalived,可以通過(guò)虛擬IP,實(shí)現(xiàn)雙主對(duì)外的統(tǒng)一接口以及自動(dòng)檢查、失敗切換機(jī)制,從而實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的高可用方案。

一、Mysql安裝、配置和安全啟動(dòng)

把mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz上傳到/usr/local/src/

1、mysql安裝

cd /usr/local/src/
tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
mkdir -p /usr/local/mysql/
mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql/mysql-5.7.28

2、創(chuàng)建mysql用戶組和用戶

cd /usr/local
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql mysql

3、初始化數(shù)據(jù)

cd /usr/local/mysql/mysql-5.7.28
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-5.7.28/ --datadir=/data1/mysql/data --lc_messages_dir=/usr/local/mysql/mysql-5.7.28/share --lc_messages=en_US
bin/mysql_ssl_rsa_setup --datadir=/data1/mysql/data

4、修改配置

vi /etc/my.cnf
basedir=/usr/local/mysql/mysql-5.7.28
datadir=/data1/mysql/data

5、配置環(huán)境變量

#編輯環(huán)境變量 .bash_profile表示當(dāng)前用戶個(gè)人配置 只對(duì)當(dāng)前用戶生效
vi ~/.bash_profile
 
#將mysql的bin目錄配置到環(huán)境變量中
PATH=$PATH:$HOME/bin:/usr/local/mysql/mysql-5.7.28/bin
export PATH
 
#使配置修改后立即生效
source ~/.bash_profile

6、修改密碼、配置遠(yuǎn)程訪問(wèn)和安全啟動(dòng)

#啟動(dòng)前先設(shè)置免密登錄
vi /etc/my.cnf
#添加如下配置并保存 跳過(guò)權(quán)限驗(yàn)證
skip-grant-tables=1
 
#安全啟動(dòng)
cd /usr/local/mysql/mysql-5.7.28/bin
./mysqld_safe --user=mysql &
 
#修改密碼
#進(jìn)入mysql
mysql
use mysql
update user set authentication_string=password("123456") where user="root";
#刷新權(quán)限表
flush privileges;
 
#配置遠(yuǎn)程訪問(wèn)
use mysql
#允許所有機(jī)器訪問(wèn)root用戶 %代表所有機(jī)器
update user set host='%' where user='root';
#授權(quán)所有機(jī)器的root用戶擁有所有數(shù)據(jù)庫(kù)的所有權(quán)限 遠(yuǎn)程訪問(wèn)密碼root %代表所有機(jī)器
grant all privileges on *.* to root@'%' identified by 'root';
#刷新權(quán)限表
flush privileges;
 
#退出mysql
exit
 
#安全關(guān)閉
./mysqladmin -uroot -p shutdown
 
#刪除免密登錄配置
vi /etc/my.cnf
#刪除skip-grant-tables=1并保存
 
#安全啟動(dòng)
./mysqld_safe --user=mysql &

二、 兩臺(tái)Mysql配置雙主

1、創(chuàng)建主從同步replication用戶

2、授權(quán)

192.168.0.101

#授權(quán)IP192.168.0.102的從數(shù)據(jù)庫(kù)replication用戶擁有所有數(shù)據(jù)庫(kù)的同步權(quán)限 遠(yuǎn)程訪問(wèn)密碼replication
grant replication slave on *.* to 'replication'@'192.168.0.102' identified by 'replication';
#刷新權(quán)限表
flush privileges;

192.168.0.102

#授權(quán)IP192.168.0.101的從數(shù)據(jù)庫(kù)replication用戶擁有所有數(shù)據(jù)庫(kù)的同步權(quán)限 遠(yuǎn)程訪問(wèn)密碼replication
grant replication slave on *.* to 'replication'@'192.168.0.101' identified by 'replication';
#刷新權(quán)限表
flush privileges;

3、添加配置文件

[mysqld]
basedir=/usr/local/mysql/mysql-5.7.28
datadir=/data1/mysql/data
 
server-id = 101
 
skip-external-locking
 
log_bin = mysql-binlog
binlog_do_db = sample
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema
 
binlog_group_commit_sync_delay = 100000 # 單位微妙
binlog_group_commit_sync_no_delay_count = 20 # 單位每組事物數(shù)量
 
#設(shè)置復(fù)制類型
slave-parallel-type=LOGICAL_CLOCK
#設(shè)置并行數(shù)量
slave-parallel-workers=4
 
#主主需要加的部分
replicate-do-db = sample
 
log-slave-updates=true
#sync_binlog=1
auto_increment_offset=1
auto_increment_increment=2
 
innodb_buffer_pool_size = 12G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_chunk_size = 128M
innodb_log_file_size = 256M
innodb_log_buffer_size = 32M
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 120
 
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/log/slow.log
long_query_time = 5
 
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
 
secure_file_priv=/usr/local/mysqlcsvfiles/
 
expire_logs_days=7
max_binlog_size=1024M
 
!includedir /etc/my.cnf.d

4、添加之后

mkdir -p /usr/local/mysql/log
mkdir -p /usr/local/mysqlcsvfiles

5、安全關(guān)閉

./mysqladmin -uroot -p shutdown

6、安全啟動(dòng)

./mysqld_safe --user=mysql &

7、進(jìn)入mysql執(zhí)行

#進(jìn)入mysql執(zhí)行
show master status\G;
 
#分別記錄主的binlog位置,在101的角度上102為主,在102的角度上,101為主
File:mysql-bin.000001
Position: 154
 
#設(shè)置同步關(guān)系(兩個(gè)主都要設(shè)置)
#其中master_log_file和master_log_pos要登錄到對(duì)方機(jī)器執(zhí)行show master status\G;去查看
stop slave;
(在192.168.0.101)
change master to master_host='192.168.0.102',master_user='replication',master_password='replication',master_log_file='mysql-bin.000001',master_log_pos=154;
(在192.168.0.102)
change master to master_host='192.168.0.101',master_user='replication',master_password='replication',master_log_file='mysql-bin.000001',master_log_pos=154;
 
#分別啟動(dòng)slave
start slave;

三、安裝Keepalived

1、安裝編譯依賴包

yum install -y gcc openssl-devel libnl libnl-devel libnfnetlink-devel

2、安裝Keepalived

#解壓keepalived壓縮包放到/usr/local/并重命名為keepalived
cd /usr/local/src
tar -zxvf keepalived-2.0.7.tar.gz
mv keepalived-2.0.7 /usr/local/keepalived
 
#配置keepalived 得到一個(gè)Makefile的文件夾
#--prefix:keepalived安裝目錄
#--sysconf:keepalived的核心配置文件,必須要在/etc目錄下面,改為其他位置會(huì)導(dǎo)致啟動(dòng)不了,不配置在該目錄下的話,啟動(dòng)keepalived時(shí)日志文件里面會(huì)報(bào)錯(cuò),顯示找不到/etc這個(gè)文件夾
cd /usr/local/keepalived
./configure --prefix=/usr/local/keepalived/ --sysconf /etc
 
#編譯和安裝keepalived
make && make install
 
#創(chuàng)建keepalived軟鏈接 /usr/sbin/如果存在keepalived就先刪除
ln -s  /usr/local/keepalived/sbin/keepalived /usr/sbin/
 
#復(fù)制keepalived腳本文件到/etc/init.d/目錄下
cd keepalived
cp /usr/local/keepalived/etc/init.d/keepalived /etc/init.d/
 
#設(shè)置Keepalived開(kāi)機(jī)自啟動(dòng)
chkconfig --add keepalived
chkconfig keepalived on
 
#啟動(dòng)keepalived
service keepalived start

四、配置Keepalived

1、編輯keepalived配置文件

vi /etc/keepalived/keepalived.conf

2、主服務(wù)器添加對(duì)應(yīng)配置文件

global_defs {
	router_id LVS_LEVEL1	#主服務(wù)器名稱
}
 
vrrp_script check_run {
   script "/etc/keepalived/mysql_check.sh"
   interval 5				#5秒執(zhí)行一次腳本
}
 
vrrp_instance VI_1 {
    state MASTER			#主服務(wù)器
    interface eth0			#承載VIP地址到物理接口
    virtual_router_id 51	#虛擬路由器ID號(hào),每個(gè)熱播組保持一致
    priority 100			#優(yōu)先級(jí),數(shù)值越大優(yōu)先級(jí)越高
    advert_int 1			#檢查間隔,默認(rèn)為1s
    authentication {		#認(rèn)證信息,每個(gè)熱播組保持一致
        auth_type PASS      #認(rèn)證類型
        auth_pass 1111		#密碼字串
    }
    virtual_ipaddress {
        192.168.0.144		#VIP地址(內(nèi)網(wǎng)地址)
    }
    track_script {
        check_run
    }
}

3、備份服務(wù)器添加對(duì)應(yīng)配置文件

global_defs {
	router_id LVS_LEVEL2	#備份服務(wù)器名稱
}
vrrp_script check_run {
	script "/etc/keepalived/mysql_check.sh"
	interval 5				#5秒執(zhí)行一次腳本
}
vrrp_instance VI_1 {
    state BACKUP			#備份服務(wù)器
    interface eth0			#承載VIP地址到物理接口
    virtual_router_id 51	#虛擬路由器ID號(hào),每個(gè)熱播組保持一致
    priority 50				#優(yōu)先級(jí),數(shù)值越大優(yōu)先級(jí)越高
    advert_int 1			#檢查間隔,默認(rèn)為1s
    authentication {		#認(rèn)證信息,每個(gè)熱播組保持一致
        auth_type PASS      #認(rèn)證類型
        auth_pass 1111		#密碼字串
    }
    virtual_ipaddress {
        192.168.0.144       #VIP地址(和主服務(wù)器設(shè)置一樣)
    }
    track_script {
        check_run
    }
}

附mysql_check.sh

#!/bin/bash
/usr/bin/mysql -uroot -p'你自己的數(shù)據(jù)庫(kù)密碼' -e "show status" &>/dev/null 
if [ $? -ne 0 ] ;then
    systemctl stop keepalived
fi
chmod +x /etc/keepalived/mysql_check.sh

4、重啟keepalived 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

  • 本地windows安裝兩個(gè)mysql服務(wù)器,配置主從同步

    本地windows安裝兩個(gè)mysql服務(wù)器,配置主從同步

    大型網(wǎng)站為了緩解大量的并發(fā)訪問(wèn),除了在網(wǎng)站實(shí)現(xiàn)分布式負(fù)載均衡,還會(huì)搭建服務(wù)器mysql集群技術(shù),來(lái)分擔(dān)主數(shù)據(jù)庫(kù)的壓力。在本地電腦能實(shí)現(xiàn)這樣的技術(shù)嗎,本地windows安裝兩個(gè)mysql服務(wù)器,配置主從同步也是可以實(shí)現(xiàn)的,快來(lái)跟著教程測(cè)試一下吧。
    2022-12-12
  • mysql使用物理備份安裝xtrabackup的詳細(xì)過(guò)程

    mysql使用物理備份安裝xtrabackup的詳細(xì)過(guò)程

    這篇文章主要介紹了mysql使用物理備份安裝xtrabackup的詳細(xì)過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • mysql下修改engine引擎的方法

    mysql下修改engine引擎的方法

    修改mysql的引擎為INNODB,可以使用外鍵,事務(wù)等功能,性能高。
    2011-08-08
  • 為什么代碼規(guī)范要求SQL語(yǔ)句不要過(guò)多的join

    為什么代碼規(guī)范要求SQL語(yǔ)句不要過(guò)多的join

    SQL中的join可以根據(jù)某些條件把指定的表給結(jié)合起來(lái)并將數(shù)據(jù)返回給客戶端,那么在項(xiàng)目開(kāi)發(fā)中如果需要使用join語(yǔ)句,如何優(yōu)化提升性能?本文就來(lái)詳細(xì)的介紹一下
    2021-06-06
  • 設(shè)置MySQL自動(dòng)增長(zhǎng)從某個(gè)指定的數(shù)開(kāi)始方法

    設(shè)置MySQL自動(dòng)增長(zhǎng)從某個(gè)指定的數(shù)開(kāi)始方法

    下面小編就為大家?guī)?lái)一篇設(shè)置MySQL自動(dòng)增長(zhǎng)從某個(gè)指定的數(shù)開(kāi)始方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • MySQL中case?when對(duì)NULL值判斷的踩坑記錄

    MySQL中case?when對(duì)NULL值判斷的踩坑記錄

    最近在學(xué)習(xí)Hive基礎(chǔ)知識(shí)時(shí),遇到了遇到了Case?When?Else?End語(yǔ)法,這篇文章主要給大家介紹了關(guān)于MySQL中case?when對(duì)NULL值判斷的踩坑記錄,需要的朋友可以參考下
    2021-12-12
  • mysql 8.0.15 壓縮版安裝圖文教程

    mysql 8.0.15 壓縮版安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 壓縮版安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Mysql?optimize?table?時(shí)報(bào)錯(cuò):Temporary?file?write?fail的解決

    Mysql?optimize?table?時(shí)報(bào)錯(cuò):Temporary?file?write?fail的解決

    這篇文章主要介紹了Mysql?optimize?table?時(shí)報(bào)錯(cuò):Temporary?file?write?fail的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 最新評(píng)論