MySQL高可用安裝

来源:https://www.cnblogs.com/cheng9999/archive/2022/07/21/16500925.html
-Advertisement-
Play Games

本文包含SQL基礎語法、函數、索引、sql編程、事務、事務原則、備份恢復,許可權資料庫設計、三大範式、JDBC、SQL註入、資料庫連接池等所有知識都在這裡了 ...


目錄

MySQL HA部署

環境準備

地址 說明
10.5.12.92 pro-mysql-ha01,主節點 1
10.5.12.93 pro-mysql-ha02,主節點 2
10.5.12.91 pro-mysql-vip,虛擬 Virtual IP

創建本地yum源

上傳 CentOS-7-x86_64-DVD-1708.iso 到/opt/software

cd /etc/yum.repos.d/
mkdir bkp
mv *.repo bkp
sudo touch /etc/yum.repos.d/local.repo

編輯文件 local.repo 的內容

[CentOS74]  
name=CentOS7.4  
baseurl=file:///media  
enabled=1gpgcheck=0
gpgkey=file:///media/RPM-GPG-KEY-CentOS-7

掛載並清空yum緩存

mount /opt/software/CentOS-7-x86_64-DVD-1708.iso /media -o loop 
yum clean all 
yum makecache 

確認關閉 SELinux

1、臨時關閉:輸入命令setenforce 0,重啟系統後還會開啟。
2、永久關閉:輸入命令vi /etc/selinux/config,將SELINUX=enforcing改為SELINUX=disabled,然後保存退出。

防火牆設置

使用 root 用戶在 pro-mysql-ha01 和 pro-mysql-ha02 上需要將相應的埠(例如 MySQL 使用的 23306 埠)加入到防火牆的過濾規則裡面

firewall-cmd --zone=public --add-port=23306/tcp –permanent  
firewall-cmd –reload 
firewall-cmd –list-all

在這裡插入圖片描述

MySQL安裝

使用 root 用戶操作創建相關的用戶組和用戶

groupadd mysql 
useradd -r -g mysql mysql 
passwd mysql

上傳/解壓介質

將 mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz 上傳到/opt/software 目錄,並解壓介質到 目錄/opt/mysql

tar zxvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.gz -C /opt 
ln -s /opt/mysql-8.0.22-linux-glibc2.12-x86_64 /opt/mysql
yum remove mariadb-libs-5.5.56-2.el7.x86_64 #mariadb 相關內容卸載
mkdir /mysql-data #用來存放 mysql 的數據,後面的配置文件需要用到

編輯/etc/my.cnf 文件,如下

[mysqld] 
basedir = /opt/mysql 
datadir = /mysql-data 
socket = /mysql-data/mysql.sock 
skip-name-resolve 
log-error = /mysql-data/error.log 
pid-file = /mysql-data/mysql.pid 
character-set-server=utf8mb4 
port=23306 
lower_case_table_names = 1 
default-storage-engine=INNODB 
[client] 
socket = /mysql-data/mysql.sock 
default-character-set=utf8mb4 
port=23306

設置自啟動

cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld 

修改/etc/init.d/mysqld 的 basedir 和 datadir 為上面指定的實際值
......
basedir=/opt/mysql
datadir=/mysql-data
......

vi /usr/lib/systemd/system/mysqld.service 
[Unit] 
Description=MySQL 
After=syslog.target network.target remote-fs.target nss-lookup.target 
Before=shutdown.target 
[Service] 
User=mysql 
Group=mysql 
Type=forking 
PIDFile=/mysql-data/mysql.pid 
#Disable service start and stop timeout logic of systemd for mysqld service. 
TimeoutSec=0 
#Execute pre and post scripts as root 
PermissionsStartOnly=true# Start|Stop main service 
ExecStart=/etc/init.d/mysqld start 
ExecStop=/etc/init.d/mysqld stop 
#Sets open_files_limit 
LimitNOFILE = 5000 
Restart=on-failure 
RestartPreventExitStatus=1 
PrivateTmp=false 
[Install] 
WantedBy=multi-user.target 
Alias=mysqld.service 

使用 root 用戶執行以下的命令修改 basedir 和 datadir 的屬主

chown mysql:mysql /etc/init.d/mysqld 
chown -Rf mysql:mysql /opt/mysql /opt/mysql-8.0.22-linux-glibc2.12-x86_64 
chown -Rf mysql:mysql /mysql-data 
systemctl daemon-reload 
chkconfig --level 345 mysqld on 
chkconfig --add mysqld 

Mysql初始化

cd /opt/mysql/bin 
./mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/mysql-data 
cat /mysql-data/error.log #獲取 root 的臨時密碼 

在這裡插入圖片描述

啟動mysql

/opt/mysql/bin/mysqld_safe --user=mysql &

在這裡插入圖片描述

進入mysql修改root密碼

/opt/mysql/bin/mysql -uroot -p
alter user root@'localhost' identified with mysql_native_password by '指定的密碼';  #修改root密碼
/opt/mysql/bin/mysqladmin -uroot -p -S /mysql-data/mysql.sock shutdown #停止MySQL

在這裡插入圖片描述

到此,pro-mysql-ha0l 和pro-mysql-ha02上的MySQL安裝並設置完畢

主主同步環境配置

1.1.3.1 基礎配置
編輯 pro-mysql-ha01 伺服器上的文件/etc/my.cnf 的,在 mysqld 部分添加下麵的配置

server-id = 1 
log_bin = mysql-bin 
expire_logs_days=10 
sync_binlog = 1 
binlog_checksum = none 
binlog_format = mixed 
auto-increment-increment = 2 
auto-increment-offset = 1 
slave-skip-errors = all 

使用 root 用戶執行 systemctl restart mysqld 重啟 mysql 服務

systemctl restart mysqld

登錄 mysql 執行一下操作

create user syncoper@'%' identified with mysql_native_password by '指定的密碼'; 
grant replication slave, replication client on *.* to syncoper@'%'; 
flush privileges; 
flush tables with read lock; 
show master status;

編輯 pro-mysql-ha02 伺服器上的文件/etc/my.cnf 的,在 mysqld 部分添加下麵的配置

server-id = 2 
log_bin = mysql-bin 
expire_logs_days=10 
sync_binlog = 1 
binlog_checksum = none 
binlog_format = mixed 
auto-increment-increment = 2 
auto-increment-offset = 2 
slave-skip-errors = all

使用 root 用戶執行 systemctl restart mysqld 重啟 mysql 服務

systemctl restart mysqld

登錄 mysql 執行一下操作

create user syncoper@'%' identified with mysql_native_password by '指定的密碼'; 
grant replication slave, replication client on *.* to syncoper@'%'; 
flush privileges; 
flush tables with read lock; 
show master status;

pro-mysql-ha01同步操作測試

登錄 mysql 命令行,執行下麵的操作

unlock tables; 
stop slave; 
change maste master_host='10.5.15.18', master_user='syncoper',master_password= 'syncoper 的用戶密碼',master_log_file='mysql-bin.000001',master_log_pos=871; 
start slave; 
show slave status\G; 

在這裡插入圖片描述
其中master_host 為 dev-mysql-ha02 的地址
master_user 為連接的用戶
master_password 為連接密碼
master_log_file 為上一步在 dev-mysql-ha02 執行得到 binlog 文件名
master_log_pos 為上一步在 dev-mysql-ha02 執行得到 binlog

pro-mysql-ha02同步操作測試

unlock tables; 
stop slave; 
change master to master_host='10.5.15.17', master_port=23306, 
master_user='syncoper', master_password='syncoper 
的 用 戶 密 碼 ', 
master_log_file='mysql-bin.000002', master_log_pos=1435; 
start slave; 
show slave status\G;

在這裡插入圖片描述

MySQL +Keepalived配置

Keepalived安裝

yum install keepalived  

使用 root 用戶配置兩台伺服器上的 keepalived, pro-mysql-ha01 上的配置內容

vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived 
global_defs { 
notification_email { 
[email protected] 
[email protected] 
} 
notification_email_from [email protected] 
smtp_server 127.0.0.1 
smtp_connect_timeout 30 
router_id MySQL_HA 
} 
vrrp_instance VI_1 { 
state BACKUP 
interface ens160 
virtual_router_id 51 priority 100 
advert_int 1 
nopreempt 
authentication { 
auth_type PASS 
auth_pass 12345678 
} 
virtual_ipaddress { 
10.5.15.16 
} 
} 
virtual_server virtual_server 10.5.15.16 23306 { 
delay_loop 2 
persistence_timeout 50 
protocal TCP 
real_server 10.5.15.17 23306 { 
weight 3 
notify_down /opt/mysql/monitor/switch_keepalived.sh 
TCP_CHECK { 
connect_timeout 3 
nb_get_retry 3 
delay_before_retry 3 
} 
} 
} 

pro-mysql-ha02 上的配置內容

! Configuration File for keepalived 
global_defs { 
notification_email { 
[email protected] 
[email protected] 
} 
notification_email_from [email protected] 
smtp_server 127.0.0.1 
smtp_connect_timeout 30 
router_id MySQL_HA 
} 
vrrp_instance VI_1 { 
state BACKUP 
interface ens160 
virtual_router_id 51 
priority 90 
advert_int 1 
# nopreempt 
authentication { 
auth_type PASS 
auth_pass 12345678 
} 
virtual_ipaddress { 
10.5.15.16 
}} 
virtual_server virtual_server 10.5.15.16 23306 { 
delay_loop 2 
persistence_timeout 50 
protocal TCP 
real_server 10.5.15.18 23306 { 
weight 3 
notify_down /opt/mysql/monitor/switch_keepalived.sh 
TCP_CHECK { 
connect_timeout 3 
nb_get_retry 3 
delay_before_retry 3 
} 
} 
}

修改防火牆,註意命令中要修改自己的網卡名稱ens33

firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload

執行一下的命令設置 keepalived 為隨伺服器自啟動
重新載入

systemctl daemon-reload 

設置開機自動啟動

systemctl enable keepalived.service

查看兩台vip配置情況, 若兩台主機只有一個VIP,則配置正常

ip addr

至此,MySQL HA 配置完成


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Totally Accurate Battle Simulator for Mac是由游戲廠商Landfall所發行的一款休閑策略游戲,全面戰爭模擬器Mac版是一款非常具有魔性及挑戰性的游戲,游戲人物角色非常“沙雕”,感興趣的朋友快來看一看吧~ 詳情:全面戰爭模擬器 for Mac(休閑策略類游戲) ...
  • 背景 在生產過程中,由於磁碟空間、保留周期等因素,會對系統、應用等日誌提出要求,要求系統日誌定期進行輪轉、壓縮和刪除,從而減少開銷,而系統自帶的logrotate 則是一個簡單又實用的小工具,下麵著重介紹一下,滿足日常需求。 語法 Usage: logrotate [OPTION...] <conf ...
  • 六、DSL操作ES 6.1、RESTful風格介紹 REST(Representational State Transfer 表述性狀態轉移),是一組架構約束條件和原則,滿足這些約束條件和原則的應用程式或設計就是RESTful。就是一種定義介面的規範。有以下特征: 基於HTTP 可以使用XML格式定 ...
  • 一、ElasticSearch的倒排索引 1.1、資料庫存在的問題 問題1: 查詢title中包含"手機"的信息 SELECT * FROM goods WHERE title LIKE '%手機%' 使用模糊搜索,左邊有通配符,不會走索引,會全表掃描,性能低 問題2:查詢title中包含"我要買一 ...
  • 首先明確一下定義: 內連接:在多表查詢的時候,只檢索出表之間相互匹配的行(滿足匹配條件的行),結果中不包括兩個表之間不匹配的行。 一個不太準確但易懂的例子:比如有兩個表,表1存儲了 (1,2,3,4,5 )這五個數字。表2存儲了(3,4,5,6,7,8)這6個數字。多表查詢時兩個表的關聯條件是 “表 ...
  • 分享嘉賓:管正雄 阿裡雲 高級演算法工程師 出品平臺:DataFunTalk **導讀:**面對海量的用戶問題,有限的支持人員該如何高效服務好用戶?智能QA生成模型給業務帶來的提效以及如何高效地構建演算法服務,為業務提供支持。本文將介紹:阿裡雲計算平臺大數據產品答疑場景;基於達摩院AliceMind預訓 ...
  • 原文鏈接:當我們在聊「開源大數據調度系統Taier」的數據開發功能時,到底在討論什麼? 課件獲取:關註公眾號__ “數棧研習社”,後臺私信 “Taier”__ 獲得直播課件 視頻回放:點擊這裡 Taier 開源項目地址:github 丨 gitee 喜歡我們的項目給我們點個__ STAR!STAR! ...
  • Postico for Mac是Mac平臺上一款功能強大的PostgreSQL客戶端,Postico Mac版憑藉著簡單易用的操作界面深受專業人員和新手的喜愛。 詳情:Postico for Mac(超好用的PostgreSQL客戶端) 功能特色 1、查看你的資料庫,然後根據需要編輯 Postico ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...