mysql mha

来源:https://www.cnblogs.com/omgasw/archive/2019/03/20/10566295.html
-Advertisement-
Play Games

1.rpm安裝mysql5.7 2.啟動mysql,更改root密碼 3.主從配置 查看master狀態 在slave上設置master 查看slave狀態 4.配置3個節點ssh互信 最後測試三個節點之間可以無密碼登錄 5.安裝MHA 安裝依賴包 在3個節點安裝MHA的node 在slave/MH ...


1.rpm安裝mysql5.7

yum remove mariadb* -y
rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

2.啟動mysql,更改root密碼

systemctl start mysqld
grep "temporary password" /var/log/mysqld.log
mysqladmin -uroot -p password

3.主從配置

修改mysql配置文件/etc/my.cnf,添加以下內容
[client]
user=root
password=JPcms123!
[mysqld]
server-id=1
read-only=1
log-bin=mysql-bin
relay-log=mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
創建同步賬戶
mysql>grant replication slave on *.* to 'repl_user'@'192.168.1.%' identified by 'REPL_passwd123!';
mysql>grant all on *.* to 'root'@'192.168.1.%' identified by 'JPcms123456!';    #很重要

查看master狀態

在slave上設置master

change master to master_host='192.168.1.111',master_user='repl_user',master_password='REPL_passwd123!',master_log_file='mysql-bin.000001',master_log_pos=742;

查看slave狀態

start slave;
show slave status\G;

4.配置3個節點ssh互信

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.111
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.112
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.113

最後測試三個節點之間可以無密碼登錄

ssh 192.168.1.111 date
ssh 192.168.1.112 date
ssh 192.168.1.113 date

5.安裝MHA

 安裝依賴包

rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
yum install epel-release -y
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Config-IniFiles perl-Time-HiRes

在3個節點安裝MHA的node

rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

在slave/MHA manager節點上安裝mha4mysql-manage

rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

6.配置MHA

mkdir -p /etc/mha/scripts
vim /etc/masterha_default.cnf
[server default]
user=root
password=JPcms123456!
ssh_user=root
repl_user=repl_user
repl_password=REPL_passwd123!
ping_interval=1
secondary_check_script=masterha_secondary_check -s 192.168.1.111 -s 192.168.1.112 -s 192.168.1.113 --user=repl_user --master_host=localhost.localdomain --master_ip=192.168.1.111 --master_port=3306
master_ip_failover_script="/etc/mha/scripts/master_ip_failover"
# master_ip_online_change_script="/etc/mha/scripts/master_ip_online_change"
# shutdown_script= /script/masterha/power_manager
report_script="/etc/mha/scripts/send_report"
vim /etc/mha/app1.cnf
腳本
#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';
use Getopt::Long;
my (
 $command, $ssh_user, $orig_master_host, $orig_master_ip,
 $orig_master_port, $new_master_host, $new_master_ip, $new_master_port
);
my $vip = '192.168.1.115/24';
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
GetOptions(
 'command=s' => \$command,
 'ssh_user=s' => \$ssh_user,
 'orig_master_host=s' => \$orig_master_host,
 'orig_master_ip=s' => \$orig_master_ip,
 'orig_master_port=i' => \$orig_master_port,
 'new_master_host=s' => \$new_master_host,
 'new_master_ip=s' => \$new_master_ip,
 'new_master_port=i' => \$new_master_port,
);
exit &main();
sub main {
 print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";
 if ( $command eq "stop" || $command eq "stopssh" ) {
 my $exit_code = 1;
 eval {
 print "Disabling the VIP on old master: $orig_master_host \n";
 &stop_vip();
 $exit_code = 0;
 };
 if ($@) {
 warn "Got Error: $@\n";
 exit $exit_code;
 }
 exit $exit_code;
 }
 elsif ( $command eq "start" ) {
 my $exit_code = 10;
 eval {
 print "Enabling the VIP - $vip on the new master - $new_master_host \n";
 &start_vip();
 $exit_code = 0;
 };
 if ($@) {
 warn $@;
 exit $exit_code;
 }
 exit $exit_code;
 }
 elsif ( $command eq "status" ) {
 print "Checking the Status of the script.. OK \n";
 exit 0;
 }
 else {
 &usage();
 exit 1;
 }
}
sub start_vip() {
 `ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
sub stop_vip() {
 return 0 unless ($ssh_user);
 `ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}
sub usage {
 print
 "Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host
--orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip
--new_master_port=port\n";
}

在master上添加VIP

ifconfig eth0:1 192.168.1.115/24

 

測試MHA

a.通過 masterha_check_ssh 驗證 ssh 信任登錄是否成功

masterha_check_ssh --conf=/etc/mha/app1.cnf

b.masterha_check_repl 驗證 mysql 複製是否成功

masterha_check_repl --conf=/etc/mha/app1.cnf

 


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

-Advertisement-
Play Games
更多相關文章
  • 最近一直有安裝虛擬機的想法,今天剛剛知道win10有自帶的Linux子系統,就準備試一下: 首先要保證自己的電腦處於開發者選項: 然後就要在控制面板的程式和功能頁面點擊“啟用或者關閉WIndows功能‘ 然後愉快的等待重啟,對要很愉快! 重啟之後呢,按win+R,輸入cmd進入命令界面,輸入bash ...
  • 本文講述如何通過樹莓派的硬體PWM控制好盈電調來驅動RC車子的前進後退,以及如何驅動伺服電機來控制車子轉向。 1. 好盈電調簡介 車子上的電調型號為:WP-10BLS-A-RTR,在好盈官網並沒有搜到對應手冊,但找到一份通用RC競速車的電調使用說明,不過說明書中並沒有提及信號調製方式,繼續尋找,看到 ...
  • linux中刪除文件內空白行的幾種方法 有時你可能需要在 Linux 中刪除某個文件中的空行。如果是的,你可以使用下麵方法中的其中一個。有很多方法可以做到,但我在這裡只是列舉一些簡單的方法。 你可能已經知道 grep、awk 和 sed 命令是專門用來處理文本數據的工具。 下列 5 種方法可以做到。 ...
  • 1.linux 查看安裝了什麼擴展 2.查看文件位置 3. 查看php.ini位置 ...
  • 轉載自:http://www.cnblogs.com/wainiwann/p/3942203.html 在開發的一個基於rtmp聊天的程式時發現了一個很奇怪的現象。 在windows下當我們執行 closesocket的操作之後,阻塞的 recv會立即返回 1 。 而在linux下當我們執行clos ...
  • 作者:不悔 原文鏈接: "https://www.opsbj.com/2019/03/20/mysql install/" 常見的 MySQL 安裝方式有如下三種: 1. RPM 包方式:這種方式安裝適合對資料庫要求不太高的場合,安裝速度快; 2. 通用二進位包方式:安裝速度相較於源碼方式快,可以自 ...
  • 大數據是什麼? 首先提一個問題:“大數據"是一項專門的技術嗎?有的人可能會以為大數據是一項專門的技術,其實不是。“大數據"這三個字只是一門市場語言(Marketing Language),其背後是硬體、資料庫、操作系統、I-ladoop等一系列技術的綜合應用。 大數據導論 <!--[if gte v ...
  • 概述 本lab將用go完成一個MapReduce框架,完成後將大大加深對MapReduce的理解。 Part I: Map/Reduce input and output 這部分需要我們實現common_map.go中的doMap()和common_reduce.go中的doReduce()兩個函數 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...