MySQL集群技术

MySQL部署方式

源码安装

安装配置

主从复制

一主两从

延迟复制

慢查询日志

并行复制

半同步模式

MySQL高可用之组复制(MGR)

实现mysql组复制

[MySQL route部署方式](#MySQL route部署方式)

MySQL高可用之MHA

故障切换

为MHA添加VIP功能


MySQL部署方式

源码安装

复制代码
两个linux7主机,mysql-node1-10、mysql-node2-20

yum install cmake -y

#当cmake出错后如果想重新检测,删除 mysql-5.7.44 中 CMakeCache.txt重新检测即可

#下载安装依赖性

[root@mysql mysql-5.7.44]# yum install cmake gcc-c++ openssl-devel ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm rpcgen.x86_64 -y



[root@mysql mysql-5.7.44]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/

[root@mysql mysql-5.7.44]# make -j4

[root@mysql mysql-5.7.44]# make install

#完成

安装配置

复制代码
[root@mysql ~]# cd /usr/local/mysql/

[root@mysql mysql]# useradd -s /sbin/nologin -M mysql

[root@mysql mysql]# mkdir /data/mysql -p

[root@mysql mysql]# chown mysql.mysql -R /data/mysql

[root@mysql mysql]# cd support-files/



[root@mysql support-files]# cp mysql.server /etc/init.d/mysqld

[root@mysql support-files]# vim /etc/my.cnf



[mysqld]

datadir=/data/mysql

socket=/data/mysql/mysql.sock

symbolic-links=0



[root@mysql support-files]# vim ~/.bash_profile

[root@mysql support-files]# source ~/.bash_profile



PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

[root@mysql ~]# mysqld --user mysql --initialize

#默认密码

#启动

[root@mysql ~]# /etc/init.d/mysqld start

Starting MySQL.Logging to '/data/mysql/mysql.node1.err'.

 SUCCESS!



#设置开机启动

[root@mysql ~]# chkconfig mysqld on

安全初始化

[root@mysql ~]# mysql_secure_installation

#如果初始化有问题,删掉重新初始化

#复制默认密码

n-->n-->y-->y-->一直y

#登录
[root@mysql ~]# mysql -uroot -p

主从复制

MySQL 内建的复制功能是构建大型,高性能应用程序的基础
通过将 MySQL 的某一台主机( master )的数据复制到其他主机( slaves )上,并重新执行一遍来执行
复制过程中一台服务器充当主服务器,而其他一个或多个其他服务器充当从服务器
1 、 MySQL 支持的复制类型
基于语句( statement )的复制
在主服务器上执行 SQL 语句,在从服务器上执行同样的语句。 MySQL 默认采用基于语句的复制,效率比
较高。
基于行( row )的复制
把改变的内容复制过去,而不是把命令在从服务器上执行一遍。从 MySQL 5.0 开始支持。
混合型( mixed )的复制
默认采用基于语句的复制,一旦发现基于语句的无法精确复制时,就会采用基于行的复制。
2 、为什么要做主从复制
灾备
数据分布
负载平衡
读写分离
提高并发能力
3、主从复制原理
主要基于 MySQL 二进制日志
主要包括三个线程( 2 个 I/O 线程, 1 个 SQL 线程)

复制代码
[root@mysql ~]# vim /etc/my.cnf



[mysqld]

datadir=/data/mysql

socket=/data/mysql/mysql.sock

symbolic-links=0

log-bin=mysql-bin

server-id=10



[root@mysql ~]# /etc/init.d/mysqld restart

[root@mysql ~]# mysql -uroot -p -e "select @@server_id"



mysql> create user repl@'%' identified by '123';

mysql> grant replication slave on *.* to repl@'%';

查看

mysql> show master status;

mysql> change master to master_host='192.168.86.10',master_user='repl',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=595;

mysql> start slave;

一主两从

拉数据

锁库锁表

从master节点备份数据。

复制代码
[root@mysql-node1 ~]# mysqldump -uroot -p tyw > tyw.sql
Enter password: 
把 sql 语句拷贝到30主机。

[root@mysql-node1 ~]# scp tyw.sql root@172.25.254.30:/mnt/
root@172.25.254.30's password: 
scp: /mnt//tyw.sql: Read-only file system

30中建立 tyw 这个数据库。

复制代码
[root@mysql-node3 opt]# mysql -uroot -pmysql -e "CREATE DATABASE tyw;"
mysql: [Warning] Using a password on the command line interface can be insecure.
把数据导入库。

[root@mysql-node3 opt]# mysql -uroot -pmysql tyw < tyw.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

延迟复制

目的:防止误操作

从服务器

30关闭 sql 线程,设置延迟同步时间,再开启线程。

复制代码
mysql> STOP SLAVE SQL_THREAD;
Query OK, 0 rows affected (0.00 sec)

mysql> change master to master_delay=60;
Query OK, 0 rows affected (0.00 sec)

mysql> start slave sql_thread;
Query OK, 0 rows affected (0.00 sec)

慢查询日志

MySQL 如果启用了 slow_query_log = ON 选项,就会记录执行时间超过 long_query_time 的查询(初使表锁
定的时间不算作执行时间)。日志记录文件为 slow_query_log_file [ = file_name ] ,如果没有给出
file_name 值, 默认为主机名,后缀为 - slow .log 。如果给出了文件名,但不是绝对路径名,文件则写入数
据目录。
默认与慢查询相关变量:
mysql > SHOW GLOBAL VARIABLES LIKE '%slow_query_log%' ;
默认没有启用慢查询,为了服务器调优,建议开启
开启方法:
SET GLOBAL slow_query_log = ON ; 当前生效,永久有效配置文件中设置
使用 mysqldumpslow 命令获得日志中显示的查询摘要来处理慢查询日志

mysqldumpslow slow.log

那么多久算是慢呢?
如果查询时长超过 long_query_time 的定义值(默认 10 秒),即为慢查询:
mysql > SHOW GLOBAL VARIABLES LIKE 'long_query_time' ;

主服务器

复制代码
mysql> SHOW variables like "slow%";
+---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| slow_launch_time    | 2                                |
| slow_query_log      | OFF                              |
| slow_query_log_file | /data/mysql/mysql-node1-slow.log |
+---------------------+----------------------------------+
3 rows in set (0.00 sec)



#开启慢查询

mysql> SET GLOBAL slow_query_log=ON;
Query OK, 0 rows affected (0.00 sec)


mysql> SHOW variables like "slow%";
+---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| slow_launch_time    | 2                                |
| slow_query_log      | ON                               |
| slow_query_log_file | /data/mysql/mysql-node1-slow.log |
+---------------------+----------------------------------+
3 rows in set (0.00 sec)

并行复制

GTID 用于在 binlog 中唯一标识一个事务。当事务提交时, MySQL Server 在写 binlog 的时候,会先写一个
特殊的 Binlog Event ,类型为 GTID_Event ,指定下一个事务的 GTID ,然后再写事务的 Binlog 。主从同步
时 GTID_Event 和事务的 Binlog 都会传递到从库,从库在执行的时候也是用同样的 GTID 写 binlog ,这样
主从同步以后,就可通过 GTID 确定从库同步到的位置了。也就是说,无论是级联情况,还是一主多从情
况,都可以通过 GTID 自动找点儿,而无需像之前那样通过 File_name 和 File_position 找点儿了。
1 、 master 更新数据时,会在事务前产生 GTID ,一同记录到 binlog 日志中。
2 、 slave 端的 i/o 线程将变更的 binlog ,写入到本地的 relay log 中。
3 、 sql 线程从 relay log 中获取 GTID ,然后对比 slave 端的 binlog 是否有记录。
4 、如果有记录,说明该 GTID 的事务已经执行, slave 会忽略。
5 、如果没有记录, slave 就会从 relay log 中执行该 GTID 的事务,并记录到 binlog 。

开启多线程回放实现
GTID 核心参数
重要参数:
GTID 复制配置过程:
1> 准备配置文件
建议使用 5.7.17 以上版本。
replicate - wild - ignore - table = information_schema. %
replicate - wild - ignore - table = performance_schema. %
gtid-mode = on
enforce-gtid-consistency = true
log-slave-updates = 1
gtid-mode = on -- 启用 gtid 类型,否则就是普通的复制架构
enforce-gtid-consistency = true -- 强制 GTID 的一致性
log-slave-updates = 1 --slave 更新是否记入日志

编辑主配置文件。打开GTID。保证ID强一致性。

复制代码
[root@mysql-node2 ~]# vim /etc/my.cnf

[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
server-id=20
super_read_only=on
gtid_mode=ON
enforce-gtid-consistency=ON
slave-parallel-type=LOGICAL_CLOCK        #基于组提交
slave-parallel-workers=16            #开启线程数量    
master_info_repository=TABLE        #master信息在表中记录,默认记录在/data/mysql//master.info
relay_log_info_repository=TABLE        #回放日志信息在表中记录,默认记录在/data/mysql/relay-log.info
relay_log_recovery=ON                #日志回放恢复功能开启

#重启数据库
[root@mysql-node2 ~]# /etc/init.d/mysqld restart
Shutting down MySQL.... SUCCESS! 
Starting MySQL. SUCCESS!

半同步模式

主服务器

复制代码
#启用半同步

#编辑10配置文件

[root@mysql-node1 ~]# vim /etc/my.cnf

[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
server-id=10
slow_query_log=on
log-bin=mysql-bin
gtid_mode=ON
enforce-gtid-consistency=ON
rpl_semi_sync_master_enabled=1

[root@mysql-node1 ~]# /etc/init.d/mysqld restart
Shutting down MySQL............ SUCCESS! 
Starting MySQL. SUCCESS!

#安装半同步插件
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.00 sec)

#查看是否安装成功
mysql> select * from information_schema.PLUGINS where PLUGIN_NAME LIKE '%semi%'\G
*************************** 1. row ***************************
           PLUGIN_NAME: rpl_semi_sync_master
        PLUGIN_VERSION: 1.0
         PLUGIN_STATUS: ACTIVE
           PLUGIN_TYPE: REPLICATION
   PLUGIN_TYPE_VERSION: 4.0
        PLUGIN_LIBRARY: semisync_master.so
PLUGIN_LIBRARY_VERSION: 1.7
         PLUGIN_AUTHOR: He Zhenxing
    PLUGIN_DESCRIPTION: Semi-synchronous replication master
        PLUGIN_LICENSE: GPL
           LOAD_OPTION: ON
1 row in set (0.00 sec)

#打开半同步功能
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
Query OK, 0 rows affected (0.00 sec)

#查看插件状态
mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | ON         |
| rpl_semi_sync_master_timeout              | 10000      |
| rpl_semi_sync_master_trace_level          | 32         |
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
+-------------------------------------------+------------+
6 rows in set (0.00 sec)

从服务器上

复制代码
[root@mysql-node2 ~]# /etc/init.d/mysqld stop
Shutting down MySQL. SUCCESS! 
[root@mysql-node2 ~]# vim /etc/my.cnf

[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
server-id=20
#super_read_only=on
gtid_mode=ON
enforce-gtid-consistency=ON
#rpl_semi_sync_master_enable=1

[root@mysql-node2 ~]# /etc/init.d/mysqld start 
Starting MySQL. SUCCESS! 

#安装插件

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Query OK, 0 rows affected (0.01 sec)

mysql> SET GLOBAL rpl_semi_sync_slave_enabled =1;
Query OK, 0 rows affected (0.00 sec)

mysql> STOP SLAVE IO_THREAD;
Query OK, 0 rows affected (0.00 sec)

mysql> START SLAVE IO_THREAD;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | ON    |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
2 rows in set (0.00 sec)

mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+
1 row in set (0.00 sec)

MySQL高可用之组复制(MGR)

支持单主和多主

多主用的多

实现mysql组复制

复制代码
停服务,删数据

[root@mysql ~]# /etc/init.d/mysqld stop

[root@mysql ~]# ps aux | grep mysql

kill -9 号

[root@mysql ~]# rm -rf /data/mysql/*



初始化

[root@mysql ~]# mysqld --user=mysql --initialize





进入后更改密码

mysql> alter user root@localhost identified by '123';
Query OK, 0 rows affected (0.00 sec)
编辑my.cnf文件



[mysqld]

datadir=/data/mysql

socket=/data/mysql/mysql.sock

symbolic-links=0

log-bin=mysql-bin

server-id=10

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

gtid_mode=ON

enforce_gtid_consistency=ON

master_info_repository=TABLE

relay_log_info_repository=TABLE

binlog_checksum=NONE

log_slave_updates=ON

log_bin=binlog

binlog_format=ROW

plugin_load_add='group_replication.so'

transaction_write_set_extraction=XXHASH64

group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"

group_replication_start_on_boot=off

group_replication_local_address="192.168.86.10:33061"

group_replication_group_seeds="192.168.86.10:33061,192.168.86.20:33061,192.168.86.30:33061"

group_replication_ip_whitelist="192.168.86.0/24,127.0.0.1/8"

group_replication_bootstrap_group=off

group_replication_single_primary_mode=OFF

group_replication_enforce_update_everywhere_checks=ON

group_replication_allow_local_disjoint_gtids_join=1

配置mysql

复制代码
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'lee';

Query OK, 0 rows affected (0.00 sec)



mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';

Query OK, 0 rows affected (0.01 sec)



mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)



mysql> SET SQL_LOG_BIN=1;

Query OK, 0 rows affected (0.00 sec)



mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='lee' FOR CHANNEL 'group_replication_recovery';

Query OK, 0 rows affected, 2 warnings (0.02 sec)



mysql> SET GLOBAL group_replication_bootstrap_group=ON;

mysql> START GROUP_REPLICATION;



mysql> SET GLOBAL group_replication_bootstrap_group=OFF;



mysql> select * from performance_schema.replication_group_members;

#3台主机做本地解析,提高数据同步速度。

[root@mysql-node1 ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.86.10   mysql-node1.timinglee.org
192.168.86.20   mysql-node2.timinglee.org
192.168.86.30   mysql-node3.timinglee.org

#复制配置到20、30上

[root@mysql-node1 ~]# scp /etc/my.cnf root@192.168.86.20:/etc/my.cnf
root@192.168.86.20's password: 
my.cnf                                       100%  963     1.1MB/s   00:00    
[root@mysql-node1 ~]# scp /etc/my.cnf root@192.168.86.30:/etc/my.cnf
root@192.168.86.30's password: 
my.cnf                                       100%  963     1.5MB/s   00:00 

20主机上

复制代码
修改id

server-id=20


[root@mysql-node2 ~]# rm -rf /data/mysql/*
[root@mysql-node2 ~]# mysqld --user=mysql --initialize


[root@mysql-node2 ~]# /etc/init.d/mysqld start


mysql> alter user root@localhost identified by '123';
Query OK, 0 rows affected (0.00 sec)

后续同10

最后10上查看。

复制代码
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+---------------------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST               | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+---------------------------+-------------+--------------+
| group_replication_applier | 03200011-63c5-11ef-ac95-000c2937a656 | mysql-node1.timinglee.org |        3306 | ONLINE       |
| group_replication_applier | f749ef58-63c9-11ef-8f23-000c2957fcc4 | mysql-node2.timinglee.org |        3306 | RECOVERING   |
+---------------------------+--------------------------------------+---------------------------+-------------+--------------+
2 rows in set (0.00 sec)

MySQL route部署方式

并不能限制数据库的读写

复制代码
#先安装mysql-router

[root@mysql_router ~]# rpm -ivh mysql-router-community-8.4.0-1.el7.x86_64.rpm
[root@mysql_router ~]# vim /etc/mysqlrouter/mysqlrouter.conf

[routing:rw]
bind_address = 0.0.0.0
bind_port = 7002
destinations = 172.25.254.30:3306,172.25.254.20:3306,172.25.254.10:3306
routing_strategy = first-available

[root@mysql_router ~]# systemctl start mysqlrouter.service

mysql> CREATE USER lee@'%' IDENTIFIED BY 'lee';

mysql> GRANT ALL ON lee.* TO lee@'%';

MySQL高可用之MHA

MySQL+MHA 架构
MHA 目前在 Mysql 高可用方案中应该也是比较成熟和常见的方案,它由日本人开发出来,在 mysql 故障
切换过程中, MHA 能做到快速自动切换操作,而且还能最大限度保持数据的一致性


此架构特点:
1 、安装布署简单,不影响现有架构
2 、自动监控和故障转移
3 、保障数据一致性
4 、故障切换方式可使用手动或自动多向选择
5 、适应范围大(适用任何存储引擎)

mha-50

复制代码
解压进入目录下

[root@mysql_mha ~]# unzip MHA-7.zip

[root@mysql_mha ~]# cd MHA-7/

免密

[root@mha ~]# ssh-keygen

10、20、30上只需要

root@mysql \~\]# vim /etc/my.cnf ![](https://i-blog.csdnimg.cn/direct/a1ad57578ee043aaa54ff86f603eb408.png) 在10中加 log_bin=mysql-bin [root@mysql ~]# /etc/init.d/mysqld stop [root@mysql ~]# rm -rf /data/mysql/* [root@mysql ~]# mysqld --user=mysql --initialize [root@mysql ~]# /etc/init.d/mysqld start mysql> alter user root@localhost identified by '123'; Query OK, 0 rows affected (0.00 sec) 10中 mysql> create user 'repl'@'%' identified by 'lee'; Query OK, 0 rows affected (0.00 sec) mysql> grant replication slave on *.* to repl@'%'; Query OK, 0 rows affected (0.00 sec) mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so'; Query OK, 0 rows affected (0.01 sec) set global rpl_semi_sync_master_enabled = 1; #查看 mysql> show variables like 'rpl_semi_sync%'; 20、30中 mysql> change master to master_host='192.168.86.10', master_user='repl',master_password='lee', master_auto_position=1; Query OK, 0 rows affected, 2 warnings (0.02 sec) INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; SET GLOBAL rpl_semi_sync_slave_enabled =1; mysql> stop slave io_thread; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> start slave io_thread; Query OK, 0 rows affected (0.00 sec) 部署mha [root@mysql_mha MHA-7]# yum install *.rpm -y 10、20、30中 [root@mysql_mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@192.168.86.10:/mnt [root@mysql1 ~]# yum install /mnt/mha4mysql-node-0.58-0.el7.centos.noarch.rpm -y mysql> create user root@'%' identified by 'lee'; Query OK, 0 rows affected (0.00 sec) 50上 [root@mysql_mha conf]# cat masterha_default.cnf app1.cnf > /etc/masterha/app1.cnf [root@mysql_mha conf]# vim /etc/masterha/app1.cnf [server default] user=root password=lee ssh_user=root repl_user=repl repl_password=lee master_binlog_dir= /data/mysql remote_workdir=/tmp secondary_check_script= masterha_secondary_check -s 192.168.86.10 -s 192.168.86.20 ping_interval=3 # master_ip_failover_script= /script/masterha/master_ip_failover # shutdown_script= /script/masterha/power_manager # report_script= /script/masterha/send_report # master_ip_online_change_script= /script/masterha/master_ip_online_change [server default] manager_workdir=/etc/masterha manager_log=/var/etc/masterha/manager.log [server1] hostname=192.168.86.10 candidate_master=1 check_repl_delay=0 [server2] hostname=192.168.86.20 candidate_master=1 check_repl_delay=0 [server3] hostname=192.168.86.30 no_master=1 #检测网络及ssh免密 [root@mysql_mha conf]# masterha_check_ssh --conf=/etc/masterha/app1.cnf mysql1 [root@mysql_mha conf]# mysql -p123456 mysql> GRANT ALL ON . TO root@'%' identified by '123456'; mha #执行检测 [root@mysql_mha conf]# masterha_check_repl --conf=/etc/masterha/app1.cnf ### 故障切换 未发生故障手动切换 **MHA** 前提:主mysql还在正常运行 #在master数据节点还在正常工作情况下 [root@mysql-mha ~]# masterha_master_switch \ --conf=/etc/masterha/app1.cnf \ #指定配置文件 --master_state=alive \ #指定master节点状态 --new_master_host=192.168.86.20 \ #指定新master节点 --new_master_port=3306 \ #执行新master节点端口 --orig_master_is_new_slave \ #原始master会变成新的slave --running_updates_limit=10000 #切换的超时时间 yes-->yes-->yes #测试 #模拟master故障 [root@mysql-node20 mysql]# /etc/init.d/mysqld stop #在MHA-master中做故障切换 [root@mysql-mha masterha]# masterha_master_switch --master_state=dead -- conf=/etc/masterha/app1.cnf --dead_master_host=192.168.56.12 -- dead_master_port=3306 --new_master_host=192.168.56.11 --new_master_port=3306 --ignore_last_failover #恢复故障mysql节点 [root@mysql-node20 tmp]# /etc/init.d/mysqld start Starting MySQL. SUCCESS! [root@mysql-node20 tmp]# mysql -p mysql> CHANGE MASTER TO MASTER_HOST='192.168.86.10', MASTER_USER='repl', MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1; mysql> show slave\G #测试一主两从是否正常 [root@mysql-mha masterha]# masterha_check_repl --conf=/etc/masterha/app1.cnf [root@mysql-mha masterha]# rm -fr app1.failover.complete #删掉切换锁文件 #监控程序通过指定配置文件监控master状态,当master出问题后自动切换并退出避免重复做故障切换 [root@mysql-mha masterha]# masterha_manager --conf=/etc/masterha/app1.cnf [root@mysql-mha masterha]# cat /etc/masterha/manager.log #恢复故障节点 [root@mysql-node20 mysql]# /etc/init.d/mysqld start mysql> CHANGE MASTER TO MASTER_HOST='192.168.86.10', MASTER_USER='repl', MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1 [root@mysql-mha masterha]# rm -rf app1.failover.complete manager.log ### 为MHA添加VIP功能 mha [root@mysql_mha ~]# cp master_ip_failover master_ip_online_change /usr/local/bin/ [root@mysql_mha ~]# chmod +x /usr/local/bin/master_ip_* [root@mysql_mha ~]# vim /usr/local/bin/master_ip_failover my $vip = '192.168.86.100/24'; my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0"; my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0"; [root@mysql_mha ~]# vim /usr/local/bin/master_ip_online_change my $vip = '192.168.86.100/24'; my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0"; my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0"; my $exit_code = 0; [root@mysql_mha masterha]# rm -rf app1.failover.complete manager.log

相关推荐
陌北v1几秒前
为什么我从 MySQL 迁移到 PostgreSQL
数据库·mysql·postgresql
alexhilton1 小时前
务实的模块化:连接模块(wiring modules)的妙用
android·kotlin·android jetpack
ji_shuke2 小时前
opencv-mobile 和 ncnn-android 环境配置
android·前端·javascript·人工智能·opencv
就叫飞六吧3 小时前
mysql表字段反查表名脚本-筛选法-查表技巧
数据库·mysql
1.14(java)3 小时前
MySQL数据库操作全攻略
java·数据库·mysql
jmxwzy3 小时前
MySQL
数据库·mysql
sunnyday04263 小时前
Spring Boot 项目中使用 Dynamic Datasource 实现多数据源管理
android·spring boot·后端
幽络源小助理5 小时前
下载安装AndroidStudio配置Gradle运行第一个kotlin程序
android·开发语言·kotlin
inBuilder低代码平台5 小时前
浅谈安卓Webview从初级到高级应用
android·java·webview
豌豆学姐5 小时前
Sora2 短剧视频创作中如何保持人物一致性?角色创建接口教程
android·java·aigc·php·音视频·uniapp