最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

一、Mysql安裝、配置和安全啟動

把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)前用戶個人配置 只對當(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、修改密碼、配置遠程訪問和安全啟動

#啟動前先設(shè)置免密登錄
vi /etc/my.cnf
#添加如下配置并保存 跳過權(quán)限驗證
skip-grant-tables=1
 
#安全啟動
cd /usr/local/mysql/mysql-5.7.28/bin
./mysqld_safe --user=mysql &
 
#修改密碼
#進入mysql
mysql
use mysql
update user set authentication_string=password("123456") where user="root";
#刷新權(quán)限表
flush privileges;
 
#配置遠程訪問
use mysql
#允許所有機器訪問root用戶 %代表所有機器
update user set host='%' where user='root';
#授權(quán)所有機器的root用戶擁有所有數(shù)據(jù)庫的所有權(quán)限 遠程訪問密碼root %代表所有機器
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并保存
 
#安全啟動
./mysqld_safe --user=mysql &

二、 兩臺Mysql配置雙主

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

2、授權(quán)

192.168.0.101

#授權(quán)IP192.168.0.102的從數(shù)據(jù)庫replication用戶擁有所有數(shù)據(jù)庫的同步權(quá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ù)庫replication用戶擁有所有數(shù)據(jù)庫的同步權(quá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、安全啟動

./mysqld_safe --user=mysql &

7、進入mysql執(zhí)行

#進入mysql執(zhí)行
show master status\G;
 
#分別記錄主的binlog位置,在101的角度上102為主,在102的角度上,101為主
File:mysql-bin.000001
Position: 154
 
#設(shè)置同步關(guān)系(兩個主都要設(shè)置)
#其中master_log_file和master_log_pos要登錄到對方機器執(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;
 
#分別啟動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 得到一個Makefile的文件夾
#--prefix:keepalived安裝目錄
#--sysconf:keepalived的核心配置文件,必須要在/etc目錄下面,改為其他位置會導(dǎo)致啟動不了,不配置在該目錄下的話,啟動keepalived時日志文件里面會報錯,顯示找不到/etc這個文件夾
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開機自啟動
chkconfig --add keepalived
chkconfig keepalived on
 
#啟動keepalived
service keepalived start

四、配置Keepalived

1、編輯keepalived配置文件

vi /etc/keepalived/keepalived.conf

2、主服務(wù)器添加對應(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號,每個熱播組保持一致
    priority 100			#優(yōu)先級,數(shù)值越大優(yōu)先級越高
    advert_int 1			#檢查間隔,默認(rèn)為1s
    authentication {		#認(rèn)證信息,每個熱播組保持一致
        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ù)器添加對應(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號,每個熱播組保持一致
    priority 50				#優(yōu)先級,數(shù)值越大優(yōu)先級越高
    advert_int 1			#檢查間隔,默認(rèn)為1s
    authentication {		#認(rèn)證信息,每個熱播組保持一致
        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ù)庫密碼' -e "show status" &>/dev/null 
if [ $? -ne 0 ] ;then
    systemctl stop keepalived
fi
chmod +x /etc/keepalived/mysql_check.sh

4、重啟keepalived 

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

相關(guān)文章

  • 5個MySQL GUI工具推薦,幫助你進行數(shù)據(jù)庫管理

    5個MySQL GUI工具推薦,幫助你進行數(shù)據(jù)庫管理

    這篇文章主要介紹了5個MySQL GUI工具推薦,幫助大家更好的進行MySQL數(shù)據(jù)庫管理,感興趣的朋友可以了解下
    2020-08-08
  • MySQL錯誤:ERROR?1049?(42000):?Unknown?database?‘nonexistentdb‘的簡單解決辦法

    MySQL錯誤:ERROR?1049?(42000):?Unknown?database?‘nonexiste

    這篇文章主要給大家介紹了關(guān)于MySQL錯誤:ERROR?1049?(42000):?Unknown?database?‘nonexistentdb‘的簡單解決辦法,這個錯誤通常是由于連接的數(shù)據(jù)庫不存在導(dǎo)致的,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • Mysql根據(jù)某層部門ID查詢所有下級多層子部門的示例

    Mysql根據(jù)某層部門ID查詢所有下級多層子部門的示例

    這篇文章主要介紹了Mysql根據(jù)某層部門ID查詢所有下級多層子部門的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解

    IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解

    這篇文章主要介紹了IOS 數(shù)據(jù)庫升級數(shù)據(jù)遷移的實例詳解的相關(guān)資料,這里提供實例幫助大家解決數(shù)據(jù)庫升級及數(shù)據(jù)遷移的問題,需要的朋友可以參考下
    2017-07-07
  • MySQL運行狀況查詢方式介紹

    MySQL運行狀況查詢方式介紹

    直接在命令行下登陸MySQL運行SHOW STATUS;查詢語句;同樣的語句還有SHOW VARIABLES;,SHOW STATUS是查看MySQL運行情況,和上面那種通過pma查看到的信息基本類似
    2013-06-06
  • MySQL安裝與創(chuàng)建用戶操作(新手入門指南)

    MySQL安裝與創(chuàng)建用戶操作(新手入門指南)

    這篇文章主要為大家介紹了MySQL安裝與創(chuàng)建用戶的使用講解是非常適合小白新手的入門學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • MySQL [Warning] TIMESTAMP with implicit DEFAULT value is deprecated(報錯信息解決)

    MySQL [Warning] TIMESTAMP with implicit&

    本文介紹了MySQL中常見的報錯信息及其解決方法,主要包括TIMESTAMP with implicit DEFAULT value is deprecated、ERROR_FOR_DIVISION_BY_ZERO和NO_ZERO_DATE/NO_ZERO_IN_DATE等報錯信息,以及對應(yīng)的配置文件設(shè)置和sql_mode修改方法,感興趣的朋友一起看看吧
    2025-02-02
  • 分析mysql中一條SQL查詢語句是如何執(zhí)行的

    分析mysql中一條SQL查詢語句是如何執(zhí)行的

    為了充分發(fā)揮MySQL的性能并順利地使用,就必須正確理解其設(shè)計思想,因此,了解MySQL的邏輯架構(gòu)是必要的。本文將通過一條SQL查詢語句的具體執(zhí)行過程來詳細介紹MySQL架構(gòu)中的各個組件
    2021-06-06
  • MySQL的DELETE刪除數(shù)據(jù)示例詳解

    MySQL的DELETE刪除數(shù)據(jù)示例詳解

    MySQL的DELETE語句用于從數(shù)據(jù)庫表中刪除記錄,本文將詳細介紹DELETE語句的基本語法、高級用法、性能優(yōu)化策略以及注意事項,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • MySQL和Python交互的示例

    MySQL和Python交互的示例

    這篇文章主要介紹了MySQL和Python交互的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03

最新評論

寿阳县| 天峻县| 泰兴市| 浙江省| 张家川| 三台县| 富川| 石棉县| 应用必备| 神农架林区| 玉屏| 河曲县| 德清县| 崇义县| 桂东县| 筠连县| 阳新县| 灵武市| 镇康县| 当雄县| 文化| 丰县| 云浮市| 武定县| 电白县| 内江市| 卫辉市| 临桂县| 丰县| 泽普县| 县级市| 灵武市| 丹江口市| 临高县| 邓州市| 湘阴县| 阿巴嘎旗| 股票| 云南省| 兴文县| 盐山县|