日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MHA管理所有数据库服务器

發(fā)布時間:2025/3/21 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MHA管理所有数据库服务器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

一.MHA概述

1.MHA簡介

2.MHA組成

3.MHA工作過程

二.部署MHA集群

1.環(huán)境準備架構(gòu)圖

2.數(shù)據(jù)庫服務(wù)器基礎(chǔ)配置

3.配置ssh免密登錄

4.安裝MHA

5.配置一主多從結(jié)構(gòu)

6.配置MHA管理節(jié)點

7. 配置數(shù)據(jù)節(jié)點

8. 測試配置

9.訪問集群

10.測試高可用

11.修復故障服務(wù)器


一.MHA概述

1.MHA簡介

????????- 由日本DeNA公司youshimaton開發(fā)
????????- 是一套優(yōu)秀的實現(xiàn)MySQL高可用的解決方案
????????- 數(shù)據(jù)庫的自動故障切換操作能做到在0~30秒之內(nèi)完成
????????- MHA能確保在故障切換過程中最大限度保證數(shù)據(jù)的一致性,以達到真正意義上的高可用

2.MHA組成

????????- MHA Manager(管理節(jié)點)
??????? - 可以單獨部署在一臺獨立的機器上
??????? - 也可以部署在某臺數(shù)據(jù)庫服務(wù)器上

????????- MHA Node(數(shù)據(jù)節(jié)點)
? ????? - 存儲數(shù)據(jù)的MySQL服務(wù)器
? ????? - 運行在每臺MySQL服務(wù)器上

3.MHA工作過程

????????- 由Manager定時探測集群中的master節(jié)點
????????- 當master故障時,Manager自動將擁有最新數(shù)據(jù)的slave提升為新的master

二.部署MHA集群

1.環(huán)境準備架構(gòu)圖

?2.數(shù)據(jù)庫服務(wù)器基礎(chǔ)配置

1) - 配置服務(wù)器192.168.1.11

[root@mysql1 ~]# vim /etc/my.cnf [mysqld] server_id = 11 log-bin = master11 plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" rpl_semi_sync_master_enabled=1 rpl_semi_sync_slave_enabled=1 relay_log_purge=0 # 禁止slave_sql線程執(zhí)行完relay log后將其刪除。 ... ...[root@mysql1 ~]# systemctl start mysqld [root@mysql1 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> grant replication slave on *.* to repluser@'%' Identified by 'NSD2021@tedu.cn';

2) 配置服務(wù)器192.168.1.12

[root@mysql2 ~]# vim /etc/my.cnf [mysqld] server_id=12 log_bin=master12 plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" rpl_semi_sync_master_enabled=1 rpl_semi_sync_slave_enabled=1 relay_log_purge=0[root@mysql2 ~]# systemctl start mysqld [root@mysql2 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> grant replication slave on *.* to repluser@'%' Identified by 'NSD2021@tedu.cn';

3)配置服務(wù)器192.168.1.13

[root@mysql3 ~]# vim /etc/my.cnf [mysqld] server_id=13 log_bin=master13 plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" rpl_semi_sync_master_enabled=1 rpl_semi_sync_slave_enabled=1 relay_log_purge=0 ... ...[root@mysql3 ~]# systemctl start mysqld [root@mysql3 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> grant replication slave on *.* to repluser@'%' Identified by 'NSD2021@tedu.cn';

3.配置ssh免密登錄

- 配置服務(wù)器192.168.1.11

[root@mysql1 ~]# ssh-keygen [root@mysql1 ~]# for i in 12 13 > do > ssh-copy-id root@192.168.1.$i > done

- 配置服務(wù)器192.168.1.12

[root@mysql2 ~]# ssh-keygen [root@mysql2 ~]# for i in 11 13; do ssh-copy-id root@192.168.1.$i; done

- 配置服務(wù)器192.168.1.13

[root@mysql3 ~]# ssh-keygen [root@mysql3 ~]# for i in 11 12; do ssh-copy-id root@192.168.1.$i; done

### 配置管理服務(wù)器

- 實現(xiàn)免密連接三臺數(shù)據(jù)庫服務(wù)器

[root@mha1 ~]# ssh-keygen [root@mha1 ~]# for i in 11 12 13; do ssh-copy-id root@192.168.1.$i; done

4.安裝MHA

1) 配置yum源

[root@zzgrhel8 mha-soft-student]# ls mha4mysql-node-0.56-0.el6.noarch.rpm perl-Config-Tiny-2.14-7.el7.noarch.rpm perl-Email-Date-Format-1.002-15.el7.noarch.rpm perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm perl-Mail-Sender-0.8.23-1.el7.noarch.rpm perl-Mail-Sendmail-0.79-21.el7.art.noarch.rpm perl-MIME-Lite-3.030-1.el7.noarch.rpm perl-MIME-Types-1.38-2.el7.noarch.rpm perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm [root@zzgrhel8 mha-soft-student]# cp *.rpm /var/www/html/mysql/ [root@zzgrhel8 mha-soft-student]# cd /var/www/html/mysql/ [root@zzgrhel8 mysql]# createrepo -v .

2)在三臺數(shù)據(jù)庫服務(wù)器和管理節(jié)點上安裝perl軟件包

# mha node節(jié)點 [root@mysql{1,2,3} ~]# yum clean all [root@mysql{1,2,3} ~]# yum install -y gcc pcre-devel pkgconfig autoconf automake perl-ExtUtils-MakeMaker perl-CPAN perl-DBI perl-DBD-MySQL# mha 管理節(jié)點 [root@mha1 ~]# yum clean all [root@mha1 ~]# yum install -y perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-ExtUtils-MakeMaker perl-CPAN

5.配置一主多從結(jié)構(gòu)

1) 配置主服務(wù)器192.168.1.11
[root@mysql1 ~]# mysql -uroot -pNSD2021@tedu.cn
mysql> show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File??????????? | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master11.000002 |????? 701 |????????????? |????????????????? |?????????????????? |
+-----------------+----------+--------------+------------------+-------------------+
1 row in set (0.18 sec)

2)配置主服務(wù)器192.168.1.12
[root@mysql2 ~]# mysql -uroot -pNSD2021@tedu.cn

mysql> change master to-> master_host="192.168.1.11",-> master_user="repluser",-> master_password="NSD2021@tedu.cn",-> master_log_file="master11.000002",-> master_log_pos=701;mysql> start slave;mysql> show slave status\G ... ...Slave_IO_Running: YesSlave_SQL_Running: Yes

3)配置主服務(wù)器192.168.1.13

[root@mysql3 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> change master to-> master_host="192.168.1.11",-> master_user="repluser",-> master_password="NSD2021@tedu.cn",-> master_log_file="master11.000002",-> master_log_pos=701;mysql> start slave;mysql> show slave status\G ... ...Slave_IO_Running: YesSlave_SQL_Running: Yes ... ...

6.配置MHA管理節(jié)點

1)安裝軟件

[root@mha1 ~]# yum clean all [root@mha1 ~]# yum install -y mha4mysql-node

下載地址:https://code.google.com/p/mysql-master-ha/wiki/Downloads?tm=2https://code.google.com/p/mysql-master-ha/wiki/Downloads?tm=2

# 拷貝mha服務(wù)端到管理節(jié)點

[root@zzgrhel8 mha]# scp mha4mysql-manager-0.56.tar.gz 192.168.1.15:/root[root@mha1 ~]# tar xf mha4mysql-manager-0.56.tar.gz [root@mha1 ~]# cd mha4mysql-manager-0.56 [root@mha1 mha4mysql-manager-0.56]# perl Makefile.PL [root@mha1 mha4mysql-manager-0.56]# make [root@mha1 mha4mysql-manager-0.56]# make install

2)修改主配置文件

[root@mha1 ~]# mkdir /etc/mha # 拷貝配置文件到mha服務(wù)器,并修改,或改本地配置文件 [root@zzgrhel8 mha]# scp app1.cnf 192.168.1.15:/etc/mha/ [root@mha1 ~]# vim /etc/mha/app1.cnf [server default] manager_log=/var/log/manager.log # 日志文件 manager_workdir=/etc/mha # 工作目錄 master_ip_failover_script=/etc/mha/master_ip_failover # 故障切換腳本repl_user=repluser # 主服務(wù)器數(shù)據(jù)同步授權(quán)用戶 repl_password=NSD2021@tedu.cn # 密碼ssh_port=22 # ssh服務(wù)端口 ssh_user=root # 訪問ssh服務(wù)用戶user=mhamon # 監(jiān)控用戶 password=NSD2021@tedu.cn # 密碼[server1] # 第1臺數(shù)據(jù)庫服務(wù)器配置 candidate_master=1 hostname=192.168.1.11 port=3306[server2] # 第2臺數(shù)據(jù)庫服務(wù)器配置 candidate_master=1 hostname=192.168.1.12 port=3306[server3] # 第3臺數(shù)據(jù)庫服務(wù)器配置 candidate_master=1 hostname=192.168.1.13 port=3306

3)創(chuàng)建故障切換腳本
# 拷貝故障切換腳本文件到mha服務(wù)器,并修改

注:在/root/mha4mysql-manager-0.56該目錄下故障文件,與主配置文都有

[root@zzgrhel8 mha]# scp master_ip_failover 192.168.1.15:/etc/mha/ [root@mha1 ~]# vim +35 /etc/mha/master_ip_failover ... ... my $vip = '192.168.1.100/24'; # Virtual IP my $key = "1"; my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip"; my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down"; ... ... [root@mha1 ~]# chmod +x /etc/mha/master_ip_failover- 在當前主服務(wù)器部署vip地址 [root@mysql1 ~]# ifconfig eth0:1 192.168.1.100/24 up [root@mysql1 ~]# ip a s eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:22:3a:a0 brd ff:ff:ff:ff:ff:ffinet 192.168.1.11/24 brd 192.168.1.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet 192.168.1.100/24 brd 192.168.1.255 scope global secondary eth0:1valid_lft forever preferred_lft foreverinet6 fe80::96a0:26f0:cac4:f130/64 scope link noprefixroutevalid_lft forever preferred_lft forever

7. 配置數(shù)據(jù)節(jié)點

1) 在所有數(shù)據(jù)庫服務(wù)器上,安裝mha-node軟件包

[root@mysql{1,2,3} ~]# yum clean all [root@mysql{1,2,3} ~]# yum install -y mha4mysql-node-0.56-0.el6

2)在所有數(shù)據(jù)服務(wù)器上添加監(jiān)控用戶

[root@mysql1 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> grant all on *.* to mhamon@"%" identified by "NSD2021@tedu.cn"; mysql> show grants for mhamon; +---------------------------------------------+ | Grants for mhamon@% | +---------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'mhamon'@'%' | +---------------------------------------------+ 1 row in set (0.00 sec)# 在從服務(wù)器上查看同步過來的監(jiān)控用戶 [root@mysql2 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> show grants for mhamon; +---------------------------------------------+ | Grants for mhamon@% | +---------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'mhamon'@'%' | +---------------------------------------------+ 1 row in set (0.00 sec)[root@mysql3 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> show grants for mhamon; +---------------------------------------------+ | Grants for mhamon@% | +---------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'mhamon'@'%' | +---------------------------------------------+ 1 row in set (0.00 sec)

8. 測試配置

#### 測試集群環(huán)境

- 在管理主機,測試ssh配置

[root@mha1 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf ... ... Thu Apr 15 20:15:39 2021 - [info] All SSH connection tests passed successfully.

- 在管理主機,測試主從同步

[root@mha1 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf ... ... MySQL Replication Health is OK.

- 啟動管理服務(wù)

[root@mha1 ~]# masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover # 打開新終端查看服務(wù)狀態(tài) [root@mha1 ~]# masterha_check_status --conf=/etc/mha/app1.cnf app1 (pid:7199) is running(0:PING_OK), master:192.168.1.11# 查看工作目錄文件列表 [root@mha1 ~]# ls /etc/mha app1.cnf app1.master_status.health master_ip_failover ```

9.訪問集群

- 在主服務(wù)器 添加訪問數(shù)據(jù)的連接用戶

[root@mysql1 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> create database db1 default charset utf8mb4; Query OK, 1 row affected (0.02 sec)mysql> grant select,insert on db1.* to dbuser1@"%" identified by 'NSD2021@tedu.cn'; Query OK, 0 rows affected, 1 warning (0.02 sec)mysql> create table db1.students(id int primary key auto_increment, name varchar(20)); Query OK, 0 rows affected (0.74 sec)

- 客戶端192.168.1.10連接vip192.168.1.100地址訪問集群

[root@node10 ~]# mysql -h192.168.1.100 -udbuser1 -pNSD2021@tedu.cn mysql> insert into db1.students values(1, 'tom'); Query OK, 1 row affected (0.04 sec)mysql> select * from db1.students; +----+------+ | id | name | +----+------+ | 1 | tom | +----+------+ 1 row in set (0.00 sec)

- 在兩臺從服務(wù)器查看數(shù)據(jù)

[root@mysql2 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> select * from db1.students; +----+------+ | id | name | +----+------+ | 1 | tom | +----+------+ 1 row in set (0.00 sec)[root@mysql3 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> select * from db1.students; +----+------+ | id | name | +----+------+ | 1 | tom | +----+------+ 1 row in set (0.00 sec)

10.測試高可用

- 停止主服務(wù)器192.168.1.11的mysql服務(wù)

[root@mysql1 ~]# systemctl stop mysqld

- 查看管理服務(wù) ,輸出的監(jiān)控信息
# 此時啟動管理服務(wù)的監(jiān)控主機終端已經(jīng)退出

[root@mha1 ~]# masterha_check_status --conf=/etc/mha/app1.cnf app1 is stopped(2:NOT_RUNNING).

- 客戶端依然連接vip192.168.1.100地址,可以訪問到數(shù)據(jù)。如果稍有卡頓,請耐心等待

[root@node10 ~]# mysql -h192.168.1.100 -udbuser1 -pNSD2021@tedu.cn mysql> select * from db1.students; +----+------+ | id | name | +----+------+ | 1 | tom | +----+------+ 1 row in set (0.00 sec)

- 在工作的兩臺主機192.168.1.12和192.168.1.13上查看VIP地址。VIP地址將會轉(zhuǎn)移到某一臺主機上。

[root@mysql2 ~]# ip a s eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:cf:98:9a brd ff:ff:ff:ff:ff:ffinet 192.168.1.12/24 brd 192.168.1.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet 192.168.1.100/24 brd 192.168.1.255 scope global secondary eth0:1valid_lft forever preferred_lft foreverinet6 fe80::88e7:d3e5:dc70:7b30/64 scope link noprefixroutevalid_lft forever preferred_lft forever

- 在新的主服務(wù)器上更新數(shù)據(jù)

[root@mysql2 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> insert into db1.students values(2, 'jerry'); Query OK, 1 row affected (0.08 sec)# 在從服務(wù)器上查看數(shù)據(jù)是否同步 [root@mysql3 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> select * from db1.students; +----+-------+ | id | name | +----+-------+ | 1 | tom | | 2 | jerry | +----+-------+ 2 rows in set (0.00 sec)

11.修復故障服務(wù)器

- 啟動出現(xiàn)故障服務(wù)器的mysqld服務(wù)

? [root@mysql1 ~]# systemctl start mysqld

- 同步現(xiàn)有數(shù)據(jù)到修復的服務(wù)器

[root@mysql2 ~]# mysqldump -uroot -pNSD2021@tedu.cn --master-data db1 > db1.sql [root@mysql2 ~]# scp db1.sql 192.168.1.11:/root/[root@mysql1 ~]# mysql -uroot -pNSD2021@tedu.cn db1 < db1.sql

- 配置修復的服務(wù)器為當前主服務(wù)器的從服務(wù)器

[root@mysql1 ~]# grep master12 db1.sql CHANGE MASTER TO MASTER_LOG_FILE='master12.000002', MASTER_LOG_POS=964;[root@mysql1 ~]# mysql -uroot -pNSD2021@tedu.cn mysql> change master to-> master_host="192.168.1.12",-> master_user="repluser",-> master_password="NSD2021@tedu.cn",-> master_log_file="master12.000002",-> master_log_pos=964; Query OK, 0 rows affected, 2 warnings (0.42 sec)mysql> start slave; Query OK, 0 rows affected (0.03 sec)mysql> show slave status\G ... ...Slave_IO_Running: YesSlave_SQL_Running: Yes... ...

- 配置管理服務(wù)器,將修復的服務(wù)器添加到服務(wù)器聲明中

[root@mha1 ~]# vim /etc/mha/app1.cnf # 尾部追加以下內(nèi)容 ... ... [server1] candidate_master=1 hostname=192.168.1.11 port=3306[點擊并拖拽以移動]# 測試集群環(huán)境 [root@mha1 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf ... ... Thu Apr 15 20:52:53 2021 - [info] All SSH connection tests passed successfully.# 測試主從同步 [root@mha1 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf ... ... MySQL Replication Health is OK.

- 重啟管理服務(wù)

[root@mha1 ~]# masterha_stop --conf=/etc/mha/app1.cnf [root@mha1 ~]# masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover &[root@mha1 ~]# masterha_check_status --conf=/etc/mha/app1.cnf app1 (pid:7856) is running(0:PING_OK), master:192.168.1.12

總結(jié)

以上是生活随笔為你收集整理的MHA管理所有数据库服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。