MySQL+Keepalived實戰

本人MySQL DBA課程:html

    DBA MySQL數據庫工程師(2021年最新版)課程:https://edu.51cto.com/course/27002.html  做者:張巖峯,轉載請註明出處  筆名:雲煙舊夢mysql

    本章主要介紹MySQL+Keepalived高可用架構實戰,列出來詳細操做過程。MySQL數據庫在平常運維中是必定會接觸到的,因此玩⑥MySQL架構與平常運維是咱們漲薪的關鍵。sql

    DBA MySQL數據庫工程師(2021年最新版)課程由淺入深講解數據庫相關知識,原理+實戰。深刻講解了關係型數據庫+非關係數據庫(MySQL、MongoDB、ES、Redis)。裏面覆蓋了MySQL數據庫全部核心知識點,原理+實戰,真實生產環境案例講解。提供24小時售後答疑,張老師帶你們起飛,歡迎你們前來諮詢。數據庫


MySQL+Keepalived配置:bash

環境說明服務器

準備4臺服務器架構

環境app

IP運維

軟件socket

說明

db01主庫

192.168.43.101

mysql、keepalived

101和102是主從

103和104是主從

db02從庫

192.168.43.102

mysql

db03主庫

192.168.43.103

mysql、keepalived

db04從庫

192.168.43.104

mysql

VIP:192.168.43.200


準備四臺安裝好的mysql服務器,操做以下:

一、下載並上傳軟件至/server/tools

mkdir -p /server/tools

cd /server/tools/

上傳軟件包


二、解壓軟件

tar zxvf mysql-5.7.31-el7-x86_64.tar.gz

mkdir /application

mv mysql-5.7.31-el7-x86_64 /application/mysql

yum remove mariadb-libs -y

useradd -s /sbin/nologin mysql

echo "export PATH=/application/mysql/bin:$PATH" >>/etc/profile

source /etc/profile

mysql -V


三、建立數據路徑並受權

mkfs.xfs /dev/sdb

[root@localhost ~]# blkid

/dev/sdb: UUID="4f4bed6c-4d81-434d-918d-8148a6591d84" TYPE="xfs"

[root@localhost ~]# vi /etc/fstab

UUID="4f4bed6c-4d81-434d-918d-8148a6591d84" /data xfs defaults 0 0

mkdir /data

mount -a


四、受權

chown -R mysql.mysql /application/*

chown -R mysql.mysql /data


五、初始化數據(建立系統數據)

mkdir /data/mysql/data -p

chown -R mysql.mysql /data

mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data


六、配置文件的準備

cat >/etc/my.cnf <<EOF

[mysqld]

user=mysql

basedir=/application/mysql

datadir=/data/mysql/data

socket=/tmp/mysql.sock

server_id=6

port=3306

[mysql]

socket=/tmp/mysql.sock

EOF


七、啓動數據庫

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=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf

LimitNOFILE = 5000

EOF

systemctl restart mysqld.service

提示:作完的話,若是使用的是vm,能夠作個快照操做


一、清理環境(所有節點)

mkdir /data/binlog

chown mysql.mysql /data/*

pkill mysqld

\rm -rf /data/mysql/data/*

\rm -rf /data/binlog/*


二、準備配置文件

#db01:

cat > /etc/my.cnf <<EOF

[mysqld]

basedir=/application/mysql/

datadir=/data/mysql/data

socket=/tmp/mysql.sock

server_id=1

port=3306

secure-file-priv=/tmp

autocommit=0

log_bin=/data/binlog/mysql-bin

binlog_format=row

gtid-mode=on

enforce-gtid-consistency=true

log-slave-updates=1

[mysql]

prompt=db01 [\\d]>

EOF


#db02:

cat > /etc/my.cnf <<EOF

[mysqld]

basedir=/application/mysql

datadir=/data/mysql/data

socket=/tmp/mysql.sock

server_id=2

port=3306

secure-file-priv=/tmp

autocommit=0

log_bin=/data/binlog/mysql-bin

binlog_format=row

gtid-mode=on

enforce-gtid-consistency=true

log-slave-updates=1

[mysql]

prompt=db02 [\\d]>

EOF


#db03:

cat > /etc/my.cnf <<EOF

[mysqld]

basedir=/application/mysql

datadir=/data/mysql/data

socket=/tmp/mysql.sock

server_id=3

port=3306

secure-file-priv=/tmp

autocommit=0

log_bin=/data/binlog/mysql-bin

binlog_format=row

gtid-mode=on

enforce-gtid-consistency=true

log-slave-updates=1

[mysql]

prompt=db03 [\\d]>

EOF


#db04:

cat > /etc/my.cnf <<EOF

[mysqld]

basedir=/application/mysql

datadir=/data/mysql/data

socket=/tmp/mysql.sock

server_id=4

port=3306

secure-file-priv=/tmp

autocommit=0

log_bin=/data/binlog/mysql-bin

binlog_format=row

gtid-mode=on

enforce-gtid-consistency=true

log-slave-updates=1

[mysql]

prompt=db04 [\\d]>

EOF


三、初始化數據(4臺都執行)

mysqld --initialize-insecure --user=mysql --basedir=/application/mysql  --datadir=/data/mysql/data 


四、啓動數據庫(三臺都執行)

systemctl restart mysqld


五、構建主從

db01 <==> db03

db01 <== db02

db03 <== db04


#db01和db03:

grant replication slave  on *.* to repl@'192.168.43.%' identified by '123';


#db01:

change master to 

master_host='192.168.43.103',

master_user='repl',

master_password='123' ,

MASTER_AUTO_POSITION=1;

start slave;


#db02:

change master to 

master_host='192.168.43.101',

master_user='repl',

master_password='123' ,

MASTER_AUTO_POSITION=1;

start slave;


#db03:

change master to 

master_host='192.168.43.101',

master_user='repl',

master_password='123' ,

MASTER_AUTO_POSITION=1;

start slave;


#db04:

change master to 

master_host='192.168.43.103',

master_user='repl',

master_password='123' ,

MASTER_AUTO_POSITION=1;

start slave;


六、配置主/被調度器Keepalived(101和103機器)(在主庫上配置)

101機器:

[root@master ~]# yum -y install keepalived

[root@master ~]# vi /etc/keepalived/keepalived.conf 

! Configuration File for keepalived


global_defs {

   router_id mysql1

}


vrrp_script check_run {

    script "/etc/keepalived/check_mysql.sh"

    interval 5

}


vrrp_instance VI_1 {

    state MASTER

    interface ens33

    virtual_router_id 88

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    track_script {

        check_run

    }

    virtual_ipaddress {

        192.168.43.200

    }

}

[root@master ~]# systemctl restart keepalived


103機器:

[root@backup ~]# yum -y install keepalived

[root@backup ~]# vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived


global_defs {

   router_id mysql2

}


vrrp_script check_run {

    script "/etc/keepalived/check_mysql.sh"

    interval 5

}


vrrp_instance VI_1 {

    state MASTER

    interface ens33

    virtual_router_id 88

    priority 50

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    track_script {

        check_run

    }

    virtual_ipaddress {

        192.168.43.200

    }

}

[root@backup ~]# systemctl restart keepalived


七、配置mysql狀態檢測腳本(兩臺MySQL一樣的腳本)

[root@master ~]# vi /etc/keepalived/check_mysql.sh

#!/bin/bash

/usr/bin/mysql -uroot -e "show status" &>/dev/null

if [ $? != 0 ];then

    systemctl stop keepalived

fi

[root@master ~]# chmod a+x /etc/keepalived/check_mysql.sh

[root@master ~]# systemctl restart keepalived


八、測試

C:\Users\巖峯>mysql -urepl -p123 -h 192.168.43.200

mysql> create database db1;

Query OK, 1 row affected (0.00 sec)


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| db1               |

| mysql              |

| performance_schema |

| test               |

+--------------------+

5 rows in set (0.00 sec)


[root@master ~]# systemctl stop mariadb

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

+--------------------+

4 rows in set (0.00 sec)

相關文章
相關標籤/搜索