mysql8.0.26安裝

mysql8.0.26安裝

服務(wù)器優(yōu)化

關(guān)閉大葉內(nèi)存transparent_hugepage
vi /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
  echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

chmod +x   /etc/rc.local
查看結(jié)果
cat /sys/kernel/mm/transparent_hugepage/enabled
cat  /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]  括號中是never就沒問題
文件句柄
cat >> /etc/security/limits.conf <<EOF
*    soft  nofile 1000000
*    hard  nofile 1000000
*    soft  nproc  16384
*    hard  nproc  16384
*    soft  stack  32768
*    hard  stack  32768
*    soft  memlock unlimited
*    hard  memlock unlimited
EOF
ulimit -n 180000
內(nèi)存優(yōu)化
cat >> /etc/sysctl.conf  <<EOF
fs.file-max = 6553600  #  系統(tǒng)所有進程一共可以打開的文件數(shù)量
fs.nr_open = 6553500
vm.swappiness = 5 
vm.dirty_ratio = 20           # 臟葉比例達到總內(nèi)存的20%  
vm.dirty_background_ratio = 10  # 臟葉比例達到總內(nèi)存的10% 異步刷新
vm.dirty_expire_centisecs=30

net.ipv4.tcp_max_syn_backlog = 65536 # 表示SYN隊列的長度明郭,默認為1024,建議加大隊列的長度為8192或更多簿姨,這樣可以容納更多等待連接的網(wǎng)絡(luò)連接數(shù)
net.core.netdev_max_backlog = 32768 # 表示當每個網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時掏击,允許發(fā)送到隊列的數(shù)據(jù)包最大數(shù)
net.core.somaxconn = 32768  # 該選項默認值是128咱圆,這個參數(shù)用于調(diào)節(jié)系統(tǒng)同時發(fā)起的TCP連接數(shù)睛廊,在高并發(fā)的請求中藐不,默認的值可能會導致鏈接超時或重傳莉兰,因此浅乔,需要結(jié)合并發(fā)請求數(shù)來調(diào)節(jié)此值倔喂。

net.core.wmem_default = 8388608 # 發(fā)送套接字緩沖區(qū)大小的默認值
net.core.rmem_default = 8388608 # 接收套接字緩沖區(qū)大小的默認值
net.core.rmem_max = 16777216 # 接收套接字緩沖區(qū)大小的最大值
net.core.wmem_max = 16777216 # 發(fā)送套接字緩沖區(qū)大小的最大值

net.ipv4.tcp_timestamps = 0  # 關(guān)閉時間戳 啟用了會有問題
net.ipv4.tcp_synack_retries = 2 # 參數(shù)的值決定了內(nèi)核放棄連接之前發(fā)送SYN+ACK包的數(shù)量。
net.ipv4.tcp_syn_retries = 2 # 表示在內(nèi)核放棄建立連接之前發(fā)送SYN包的數(shù)量

net.ipv4.tcp_tw_recycle = 1  # 表示開啟TCP連接中TIME-WAIT sockets的快速回收 服務(wù)器time_wait網(wǎng)絡(luò)狀態(tài)數(shù)量過多設(shè)置的
#net.ipv4.tcp_tw_len = 1  # 用于快速減少在TIME-WAIT狀態(tài)TCP連接數(shù)   共用同一個NAT設(shè)備環(huán)境下有問題不要開
net.ipv4.tcp_tw_reuse = 1 # 表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接滴劲,默認值為0攻晒,表示關(guān)閉

net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.tcp_max_orphans = 3276800 # 用于設(shè)定系統(tǒng)中最多有多少個TCP套接字不被關(guān)聯(lián)到任何一個用戶文件句柄上

net.ipv4.tcp_fin_timeout = 2  # 表示套接字由本端要求關(guān)閉,這個參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時間班挖,默認值是60秒
#net.ipv4.tcp_keepalive_time = 1800 # 表示當keepalive起用的時候鲁捏,TCP發(fā)送keepalive消息的頻度。缺省是2小時萧芙,改為30分鐘
net.ipv4.ip_local_port_range = 1024 65535 # 該選項用來設(shè)定允許系統(tǒng)打開的端口范圍给梅,即用于向外連接的端口范圍
net.ipv4.route.gc_timeout = 100   #  路由緩存刷新頻率,當一個路由失敗后多長時間跳到另一個路由双揪,默認是300
net.inet.udp.checksum=1   #防止不正確的udp包的攻擊
net.ipv4.icmp_ignore_bogus_error_responses = 1   # 開啟惡意icmp錯誤消息保護
net.ipv4.icmp_echo_ignore_broadcasts = 1    # 避免放大攻擊
EOF
sysctl -p

說明:
vm.swappiness = 5  內(nèi)存使用還剩5%才開始使用swap
vm.dirty_ratio = 20 內(nèi)存臟葉到達20%時候刷新 異步刷新
vm.dirty_background_ratio = 10 內(nèi)存臟葉到達10%時候強制刷新 強制刷新
IO調(diào)度策略
cat /sys/block/sda/queue/scheduler   如果是noop [deadline] cfq沒問題
選用規(guī)則
SAS 盤: deadline
SSD&PCI-E盤: noop
修改
臨時:
echo deadline >/sys/block/sda/queue/scheduler

永久:
vi /boot/grub/grub.conf
kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ elevator=deadline rhgb quiet

安裝

下載軟件
https://downloads.mysql.com/archives/community/
解壓
tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.26-linux-glibc2.12-x86_64  mysql && mv mysql /usr/local/mysql
添加用戶
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
添加環(huán)境變量
cat >> /etc/profile <<EOF
export PATH=$PATH:/usr/local/mysql/bin
EOF

source /etc/profile
mysql -V
安裝依賴
yum install libaio library numactl -y
創(chuàng)建目錄
mkdir -p /data/3306/data
chown -R mysql.mysql /data/3306
簡單編寫配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql 
basedir=/usr/local/mysql
datadir=/data/3306/data 
socket=/tmp/mysql.sock 
port=3306
server_id=3306

innodb_buffer_pool_size=2G
innodb_buffer_pool_instances=2
gtid-mode=on
enforce-gtid-consistency=true
log_bin=mysql-bin
slow_query_log=1
slow_query_log_file=slow.log
long_query_time=4
log_queries_not_using_indexes
log_error=error.log
innodb_flush_method =O_DIRECT
transaction_isolation=READ-COMMITTED
innodb_flush_log_at_trx_commit=2
sync_binlog =100
log_bin_trust_function_creators=1
default_authentication_plugin=mysql_native_password
max_allowed_packet = 128M
innodb_data_file_path=ibdata1:12M;ibdata2:100M;ibdata3:100M:autoextend
innodb_temp_data_file_path=ibtmp1:12M;ibtmp2:128M:autoextend:max:500M
secure-file-priv=
[mysql]
socket=/tmp/mysql.sock
EOF
初始化數(shù)據(jù)庫
5.7以上無密碼
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data/

注意: mysqld --defaults-file=/etc/my.cnf   --initialize-insecure 可以指定配置文件
5.7以上有密碼
mysqld --initialize --user=mysql --basedir=/usr/local/mysql80 --datadir=/data/3306/data/

5.6初始化方法
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf
啟動方式
  • systemctl啟動

    cat > /etc/systemd/system/mysqld.service <<EOF
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
    LimitNOFILE = 50000
    EOF
    
    
    systemctl daemon-reload
    systemctl start mysqld
    systemctl enable mysqld
    
  • mysqld_safe啟動

    # 當mysqld 異常crash會嘗試去啟動mysqld
      mysqld_safe --defaults-file=/etc/my.cnf &
    關(guān)閉:
      admin -uroot -p123 shutdown
      登錄數(shù)據(jù)庫以后執(zhí)行 shutdown;
    
  • mysqld啟動

    # 啟動日志全部會打印到屏幕 ----> 可以進行問題排查
    mysqld &
    
  • /etc/init.d啟動

    cp /usr/local/mysql/support-files/mysql.server   /etc/init.d/mysqld
    /etc/init.d/mysqld restart
    
    # 添加服務(wù)
    chkconfig --add mysqld
    
    systemctl daemon-reload
    systemctl start mysqld
    systemctl enable mysqld
    

備份

db_fullbackup.sh
#/bin/bash
#備份位置
BK_PATH=/db_backup

# 備份命令mysqldump路徑
Mysqldump_dir=/usr/local/mysql/bin/

# 數(shù)據(jù)庫登陸信息
mysql_user=kxmkxm
mysql_pass='Kxm@123456'
ip_addr='127.0.0.1'

# 如果目錄不存在創(chuàng)建目錄
if [ ! -d $BK_PATH ]; then
  mkdir -p $BK_PATH
fi

# 開始備份
$Mysqldump_dir/mysqldump  -u$mysql_user -p$mysql_pass -h$ip_addr  -A -R -E --master-data=2 --single-transaction --triggers > $BK_PATH/full_$(date +%F_%H-%M-%S).sql


# 保留七天的備份

find $BK_PATH  -mtime +7 -name "full*.sql" |xargs rm -rf

chmod +x db_fullbackup.sh

主從搭建

資源劃分
角色 IP 端口 server_id
主庫 10.0.0.12 3306 server_id=3306
從庫 10.0.0.13 3306 server_id=3307

注意

2臺以上的MySQL實例具備不同的 server_id, server_uuid动羽,

時間同步

主庫"開啟binlog, 創(chuàng)建復制用戶。

基于position號搭建主從

主庫操作

創(chuàng)建復制用戶和遠程管理用戶
create user repl@'10.0.0.%' identified with mysql_native_password by '123';
grant replication slave on *.* to repl@'10.0.0.%';

備份主庫數(shù)據(jù)
mysqldump  -A --source-data=2 --single-transaction -R -E --triggers >/tmp/full.sql

從庫操作

還原主庫數(shù)據(jù)
source /tmp/full.sql

啟動主從復制
CHANGE MASTER TO 
MASTER_HOST='10.0.0.12', 
MASTER_USER='repl', 
MASTER_PASSWORD='123',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=1187, 
MASTER_CONNECT_RETRY=10;

開啟主從   查看狀態(tài)
start slave;
show slave status \G
基于gtid搭建主從

注意

mysql 8.0.26以后 --master-data=2 改為 --source-data=2

備份時加上參數(shù)--set-gtid-purged=on 在sql文件中有 set @@session.sql_log_bin= 0; 關(guān)閉二進制日志

則在還原時候 不用 設(shè)置gtid_purged 默認--set-gtid-purged=on

主庫操作

創(chuàng)建復制用戶和遠程管理用戶
create user repl@'10.0.0.%' identified with mysql_native_password by '123';
grant replication slave on *.* to repl@'10.0.0.%';

備份主庫數(shù)據(jù)
mysqldump  -A --source-data=2 --single-transaction -R -E --triggers >/tmp/full.sql

從庫操作

還原主庫數(shù)據(jù)
source /tmp/full.sql

啟動主從復制
CHANGE MASTER TO 
MASTER_HOST='10.0.0.12',
MASTER_USER='repl', 
MASTER_PASSWORD='123', 
MASTER_PORT=3306, 
MASTER_AUTO_POSITION=1;

清除從庫二進制日志從新設(shè)定位置
reset master;
set global gtid_purged = '0f8adf5f-c9c8-11ec-8fbb-000c2944ead6:1-3';

開啟主從   查看狀態(tài)
start slave;
show slave status \G
Clone-plugin搭建主從

介紹

克隆過程中可以發(fā)生DML操作但是不允許發(fā)生DDL操作

克隆過程中把產(chǎn)生的redo歸檔等備份完成把redo拷貝過去CR 屬于物理備份

克隆過程中會把從數(shù)據(jù)庫清空

版本要一致包括小版本

從庫修改啟動方式 mysqld_safe啟動 從庫復制完不需要設(shè)置gtid_purged

主庫操作

# 安裝插件 創(chuàng)建用戶 授權(quán)
INSTALL PLUGIN clone SONAME 'mysql_clone.so';  
create user test_s@'%' identified by '123';
grant backup_admin on *.* to test_s@'%';

主庫創(chuàng)建復制用戶
create user repl@'10.0.0.%' identified with mysql_native_password by '123';
grant replication slave on *.* to repl@'10.0.0.%';

從庫操作

從庫修改啟動方式
mysqld_safe --defaults-file=/etc/my.cnf &

# 安裝插件 創(chuàng)建用戶 授權(quán) 設(shè)置主庫白名單
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
create user test_t@'%' identified by '123';
grant clone_admin on *.* to test_t@'%';
SET GLOBAL clone_valid_donor_list='10.0.0.12:3306';

# 開始克隆
CLONE INSTANCE FROM test_s@'10.0.0.12':3306 IDENTIFIED BY '123';


gtid方式構(gòu)建主從
CHANGE MASTER TO 
MASTER_HOST='10.0.0.12',
MASTER_USER='repl', 
MASTER_PASSWORD='123', 
MASTER_PORT=3306, 
MASTER_AUTO_POSITION=1;


開啟主從   查看狀態(tài)
start slave;
show slave status \G

查看備份結(jié)果

#bin_log日志信息在這里
SELECT BINLOG_FILE, BINLOG_POSITION FROM performance_schema.clone_status;
use performance_schema ; select stage,stage from clone_progress;
sq
# 如果是gtid復制
SELECT @@GLOBAL.GTID_EXECUTED;

半同步復制

介紹

主庫發(fā)送二進制日志給從庫,并不關(guān)心從庫是否落盤到relay log中
如果做個限制等從庫把數(shù)據(jù)寫入relay log以后,在確認成功就是半同步復制(ACK的線程完成)

loose- 后面的參數(shù) 如果配置有問題就不執(zhí)行

主庫操作

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled = 1;
rpl_semi_sync_master_wait_for_slave_count=1  # 只要有一個從庫 返回ACK就認為 成功了
# 配置文件添加
loose-rpl_semi_sync_master_enabled = 1

查看是否加載成功:
show plugins;
show status like '%Rpl_semi_sync_master_status%';

從庫操作

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

# 配置文件添加
rpl_semi_sync_slave_enabled = 1

查看是否加載成功:
show status like 'Rpl_semi_sync_slave_status';

重啟從庫上的IO線程
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;

增強半同步復制

介紹

增強半同步復制 也是在從庫 relay log 返回ACK后 主庫才提交成功 ,區(qū)別是等待ack的時機不一樣

主庫commit 提交 redo日志落地,然后binlog日志落地,然后開始等待從庫 relay log 收到消息后返回ack

如果從庫 正常返回ack 則主庫在binlog處打標記, 更新事務(wù)狀態(tài) 執(zhí)行成功

如果從庫 未收到?jīng)]返回ack 則主庫 binlog 未打標記, 不更新事務(wù)狀態(tài) ,事務(wù)回滾

主庫操作

# 配置文件添加
rpl_semi_sync_master_wait_point=AFTER_SYNC
rpl_semi_sync_master_timeout=10000           # 默認為10秒  半同步復制超過10秒還沒收到ACK就切換為異步復制
rpl_semi_sync_master_wait_for_slave_count=1  # 只要有一個從庫 返回ACK就認為 成功了
# 查看
show variables  like '%wait_point%';

從庫操作


過濾復制

介紹

前提: 主從已經(jīng)搭建好

過濾復制 可以限制主庫也可以限制從庫,一般限制從庫

限制從庫,其實日志也過來了 只是從庫sql線程沒執(zhí)行而已

主庫操作


從庫操作

vi /etc/my.cnf

解決跨庫更新的問題
loose-replicate_wild_do_table=world.%         # 白名單 只復制world庫下的所有表
loose-replicate_wild_ignore_table=world.t1    # 黑名單 不復制world.t1表

重啟數(shù)據(jù)庫
systemctl restart mysqld

延時從庫

介紹

前提: 主從已經(jīng)搭建好

主庫操作


從庫操作

stop slave;
CHANGE MASTER TO MASTER_DELAY = 300;    # 延時300秒=5分鐘
start slave;

延時故障恢復

image-20220502232909128
關(guān)掉延時
stop slave;
CHANGE MASTER TO MASTER_DELAY = 0;

查看relaylog 找到誤刪除position號-比如是10   localhost-relay-bin.000002在數(shù)據(jù)目錄
show relaylog events in "localhost-relay-bin.000002";

恢復到誤刪除之前  gtid號 圖上info位置 創(chuàng)建完t5表, 
START SLAVE UNTIL SQL_BEFORE_GTIDS = '5f4c68b1-efac-11eb-af07-000c294497d3:9';

多源復制(MSR)5.7+

兩個主庫中的數(shù)據(jù) 復制到 一個從庫中, 默認不會復制系統(tǒng)庫 包括用戶(mysql)庫

8.0以后支持 主庫指定那個庫 復制到從庫 ,其他庫不復制過去

從庫GTID會有3個 兩個主庫的和自己一個

如果有定時任務(wù) 則從庫 定時任務(wù)是禁用狀態(tài) 主庫開啟從庫也不會開啟

IP規(guī)劃

主機名 IP 端口 角色
db01 10.0.0.11 3306 master
db02 10.0.0.12 3306 master
db03 10.0.0.13 3306 slave

準備配置文件

必須開啟這個否則主庫數(shù)據(jù)不會同步過去

log-slave-updates=1 # 從庫是否將復制線程執(zhí)行的內(nèi)容記錄到binlog

主庫1

cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
server_id=6
socket=/tmp/mysql.sock
log_bin=mysql-bin
gtid_mode=ON
enforce_gtid_consistency
log-slave-updates=1
secure-file-priv=/tmp
innodb_flush_method=O_DIRECT
slow_query_log=ON
slow_query_log_file=/data/3306/data/db01-slow.log
long_query_time=2
log_queries_not_using_indexes
master_info_repository=TABLE
relay_log_info_repository=TABLE
[client]
socket=/tmp/mysql.sock
[mysql]
prompt=db01 [\\d]>
socket=/tmp/mysql.sock
EOF

主庫2

cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
server_id=7
socket=/tmp/mysql.sock
log_bin=mysql-bin
gtid_mode=ON
enforce_gtid_consistency
log-slave-updates=1
secure-file-priv=/tmp
innodb_flush_method=O_DIRECT
slow_query_log=ON
slow_query_log_file=/data/3306/data/db01-slow.log
long_query_time=2
log_queries_not_using_indexes
master_info_repository=TABLE
relay_log_info_repository=TABLE
[client]
socket=/tmp/mysql.sock
[mysql]
prompt=db02 [\\d]>
socket=/tmp/mysql.sock
EOF

從庫

cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
server_id=8
socket=/tmp/mysql.sock
log_bin=mysql-bin
gtid_mode=ON
enforce_gtid_consistency
log-slave-updates=1
secure-file-priv=/tmp
innodb_flush_method=O_DIRECT
slow_query_log=ON
slow_query_log_file=/data/3306/data/db01-slow.log
long_query_time=2
log_queries_not_using_indexes
master_info_repository=TABLE
relay_log_info_repository=TABLE
[client]
socket=/tmp/mysql.sock
[mysql]
prompt=db03 [\\d]>
socket=/tmp/mysql.sock
EOF

啟動數(shù)據(jù)庫

# 初始化數(shù)據(jù)   啟動數(shù)據(jù)庫
pkill mysqld 
rm -rf /data/3306/data/* 

mysqld --initialize-insecure --user=mysql -- basedir=/usr/local/mysql --datadir=/data/3306/data
cp /usr/local/mysql/support-files/mysql.server   /etc/init.d/mysqld
/etc/init.d/mysqld start
mysql

2個主節(jié)點操作

創(chuàng)建復制用戶  用戶名 repl 密碼 123
set sql_log_bin=0;
create user repl@'10.0.0.%' identified with mysql_native_password by '123';
grant replication slave on *.* to repl@'10.0.0.%' ;
set sql_log_bin=1;

從節(jié)點操作

# 連接 12
CHANGE MASTER TO 
MASTER_HOST='10.0.0.11',
MASTER_USER='repl', 
MASTER_PASSWORD='123', 
MASTER_AUTO_POSITION=1 FOR CHANNEL 'Master_1';

# 連接 13
CHANGE MASTER TO 
MASTER_HOST='10.0.0.12',
MASTER_USER='repl', 
MASTER_PASSWORD='123', 
MASTER_AUTO_POSITION=1 FOR CHANNEL 'Master_2';

啟動主從
start slave for CHANNEL 'Master_1';
start slave for CHANNEL 'Master_2';

多源復制監(jiān)控 13上

SHOW SLAVE STATUS FOR CHANNEL 'Master_1'\G
SHOW SLAVE STATUS FOR CHANNEL 'Master_2'\G
select * from replication_connection_configuration\G
SELECT * FROM replication_connection_status WHERE CHANNEL_NAME='master_1'\G
select * from performance_schema.replication_applier_status_by_worker;

多源復制配置過濾

CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('db1.%') FOR CHANNEL "master_1";  # FOR CHANNEL "master_1"; 是8.0以后才有
CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE = ('db2.%') FOR CHANNEL "master_2";  # FOR CHANNEL "master_2"; 是8.0以后才有

keepalived

介紹
創(chuàng)建vip 當主庫宕機可以切換到從庫繼續(xù)提供服務(wù)
當主庫mysql宕機 停主庫keealived vip漂移到從庫 渔期,當主庫修復完成 啟動主庫 啟動keepalived此時vip還會漂移回來(可以修改優(yōu)先級不讓漂移)  
涉及到: vip  檢測腳本   vrrp通信端口
資源劃分
角色 IP 端口 安裝軟件
主庫 10.0.0.12 3306 keepalived运吓,mysql
從庫 10.0.0.13 3306 keepalived,mysql
vip 10.0.0.10
主庫配置

安裝keepalived

yum install keepalived -y

vim /etc/keepalived/keepalived.conf

vrrp_script chk {
  script "/root/jiaoben"
  interval 2
  weight 2
}

vrrp_instance VI_1 {

    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.13/24 dev eth0 label eth0:1
    }
    track_script {
    chk
    }
}

vi /root/jiaoben

#!/bin/bash
count=`ps -ef |grep -c '[m]ysqld'`
if [ $count -lt 2 ];then
systemctl stop keepalived.service
fi
從庫配置

安裝keepalived

yum install keepalived -y

vim /etc/keepalived/keepalived.conf

vrrp_script chk {
  script "/root/jiaoben"
  interval 2
  weight 2
}

vrrp_instance VI_1 {

    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.13/24 dev eth0 label eth0:1
    }
    track_script {
    chk
    }
}

vi /root/jiaoben

#!/bin/bash
count=`ps -ef |grep -c '[m]ysqld'`
if [ $count -lt 2 ];then
systemctl stop keepalived.service
fi

1 網(wǎng)卡名字etho對應修改

2 virtual_router_id 51 主從要一樣

3 state MASTER (主庫修好還會自動切回來) 疯趟, state BACKUP(兩邊都是backup 主庫修好也不會切換)

4 10.0.0.13/24 dev eth0 label eth0:1 是vip地址

5 interval 2 腳本每2秒檢測一次

6 script "/root/jiaoben" 腳本路徑

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拘哨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子信峻,更是在濱河造成了極大的恐慌倦青,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盹舞,死亡現(xiàn)場離奇詭異产镐,居然都是意外死亡,警方通過查閱死者的電腦和手機踢步,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門癣亚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贾虽,你說我怎么就攤上這事逃糟『鹩悖” “怎么了蓬豁?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長菇肃。 經(jīng)常有香客問我地粪,道長,這世上最難降的妖魔是什么琐谤? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任蟆技,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘质礼。我一直安慰自己旺聚,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布眶蕉。 她就那樣靜靜地躺著砰粹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪造挽。 梳的紋絲不亂的頭發(fā)上碱璃,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音饭入,去河邊找鬼嵌器。 笑死,一個胖子當著我的面吹牛谐丢,可吹牛的內(nèi)容都是我干的爽航。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼乾忱,長吁一口氣:“原來是場噩夢啊……” “哼岳掐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饭耳,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寞肖,沒想到半個月后纲酗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡新蟆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年觅赊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琼稻。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡吮螺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帕翻,到底是詐尸還是另有隱情鸠补,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布嘀掸,位于F島的核電站紫岩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏睬塌。R本人自食惡果不足惜泉蝌,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一歇万、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勋陪,春花似錦贪磺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呻粹,卻和暖如春壕曼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背等浊。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工腮郊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筹燕。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓轧飞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撒踪。 傳聞我的和親對象是個殘疾皇子过咬,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容