# MySQL海量数据存储与优化(上) **Repository Path**: book_of_songs/mysql-A ## Basic Information - **Project Name**: MySQL海量数据存储与优化(上) - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-17 - **Last Updated**: 2021-01-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README https://zhuanlan.zhihu.com/p/344842085 搭建MySQL高可用架构集群环境 环境的要求: (4台主机:1主、2从、1 MHA) 首先实现一主两从的同步复制功能(采用半同步复制机制) 然后采用MHA实现主机出故障,从库能自动切换功能 MHA高可用搭建后,在主库新建商品表进行效果测试 在业务中职位表相当于电商系统的商品表,投递表相当于电商系统的订单表。职位表我们采用垂直拆分方法分为position(职位描述表)和 position_detail(职位详情表),表结构结构如下: position:id(int)、name(varchar)、salary(varchar)、city(varchar) position_detail:id(int)、pid(int)、description(text) MHA环境由MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,这里管理一个数据集群。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。 作用 主机IP 角色 server-id 主库 192.168.47.10 master 10 从库 192.168.47.11 slave1 11 从库 192.168.47.12 slave2 12 监控 192.168.47.13 manager 13 1.1 构建Linux系统 1.1.1 下载相关软件 安装VMware VMWare官网 下载 下载centOS7 使用国内的镜像源下载,如【阿里云镜像官网】、清华大学等。 下载MySQL5.7的rpm包 【MySQL官网】,也可以Linux环境搭建好后通过wget或者yum下载安装 1.1.2 构建Linux环境 创建4台虚拟机 该步骤省略...... 配置虚拟机的虚拟网卡 VMware的编辑菜单配置网络连接 这里配置VMnet8即可,注意红框的地方,这里我们需要配置虚拟机系统的固定ip,所以这里不勾选口使用本地DHCP服务将IP地址分配给虚拟机 ​ 再配置虚拟主机网关 注意最后一位是2,IP段跟前面设置的一致,都是192.168.47.xxx 配置虚拟网卡参数 ​ ​ 启动虚拟机 启动虚拟机时,有可能会出现下列错误: VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti 解决方法:关闭电脑的虚拟化 配置虚拟机的固定IP vi /etc/sysconfig/network-scripts/ifcfg-xxx TYPE=Ethernet BOOTPROTO=static #改成静态IP DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno16777736 UUID=50869bd1-6c4f-412d-a9e2-69fab94c15d3 DEVICE=eno16777736 ONBOOT=yes IPADDR=192.168.47.1 # 虚拟机的固定IP NETMARSK=255.255.255.0 # 子网掩码 GATEWAY=192.168.47.2 # 网关,与VMware的网络连接配置的网关一致 关闭Network Manager这个服务 如果开启,可能不能访问外网 #查看Network Manager服务状态 systemctl status NetworkManager #停止Network Manager服务 systemctl stop NetworkManager #关闭Network Manager开机启动 systemctl disable NetworkManager 设置DNS vi /etc/resolv.conf nameserver 192.168.47.2 nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 221.228.225.1 nameserver 114.114.114.114 重启网络 systemctl restart network 启动完成后,ping 内网和外网,确保虚拟机的可以访问网络 配置CentOS的yum源 使用默认的yum源可能比较慢,不能访问 安装wget yum install wget -y 修改yum源地址 # 备份原来的yum源 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 下载国内的yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 添加EPEL源 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo # 清理缓存并生成新的缓存 yum clean all && yum makecache && yum update -y 安装必要Linux工具包 yum install net-tools -y && \ yum install vim -y && \ yum install -y lrzsz && \ yum install -y unzip 关闭防火墙 systemctl stop firewalld systemctl disable firewalld systemctl status firewalld 其余的虚拟机安装部署和上面的操作一样。 2 部署MySQL服务 在其中的三态虚拟机上(192.168.47.10、192.168.47.11和192.168.47.12)先部署MySQL服务,然后在部署和配置主从以及主从切换 2.1 部署MySQL服务 删除centOS中的Mariadb数据 # 查询 rpm -qa | grep mariadb # 删除 rpm -e mariadb-libs-5.5.65-1.el7.x86_64 --nodeps 上传MySQL的rpm包 mysql-community-client-5.7.28-1.el7.x86_64.rpm mysql-community-common-5.7.28-1.el7.x86_64.rpm mysql-community-devel-5.7.28-1.el7.x86_64.rpm mysql-community-libs-5.7.28-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm mysql-community-server-5.7.28-1.el7.x86_64.rpm 同步到其余两台虚拟机上 scp ./mysql-community* root@192.168.11.105:/root 使用rpm安装MySQL相关包 注意:安装时,相关包有依赖关系,需要有顺序安装 # 1 rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm # 2 rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm # 3 rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm # 4 rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm # 5 rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm # 6 rpm -ivh mysql-community-devel-5.7.28-1.el7.x86_64.rpm 实例化MySQL mysqld --initialize --user=mysql 查看root用户的密码 car /var/log/mysqld.log # 192.168.47.10 A temporary password is generated for root@localhost: q0t9kAJoeS_v # 192.168.47.11 A temporary password is generated for root@localhost: wFEe?y:Oq1s4 # 192.168.47.12 A temporary password is generated for root@localhost: ?hsUiNadA9sy 开启MySQL服务 # 开启 systemctl start mysqld.service # 查看状态 systemctl status mysqld.service 登录mysql,修改root用户的密码 # 登录 mysql -uroot -p # 修改root用户密码 mysql> set password=password("root"); Query OK, 0 rows affected, 1 warning (0.00 sec) 至此为止,192.168.47.10、192.168.47.11和192.168.47.12三态虚拟机的MySQL服务启动成功。 2.2 部署MySQL半同步复制 2.2.1 配置主库 192.168.11.104为主库 安装半同步复制的插件 # 查看当前mysql是否支持动态加载 mysql> show variables like '%have_dynamic_loading%'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | have_dynamic_loading | YES | +----------------------+-------+ # 安装半同步插件 rpl_semi_sync_master,指定名称semisync_master.so mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so'; Query OK, 0 rows affected (0.32 sec) # 查看当前插件rpl_semi_sync_master的配置 mysql> show variables like '%semi%'; +-------------------------------------------+------------+ | Variable_name | Value | +-------------------------------------------+------------+ | rpl_semi_sync_master_enabled | OFF | | 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 | +-------------------------------------------+------------+ # 启动插件(也可以通过my.cnf配置文件设置) mysql> set global rpl_semi_sync_master_enabled=1; Query OK, 0 rows affected (0.00 sec) # 设置同步超时时间 mysql> set global rpl_semi_sync_master_timeout=1000; Query OK, 0 rows affected (0.00 sec) # 查看同步插件配置信息 mysql> show variables like '%semi%'; +-------------------------------------------+------------+ | Variable_name | Value | +-------------------------------------------+------------+ | rpl_semi_sync_master_enabled | ON | | rpl_semi_sync_master_timeout | 1000 | | 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 | +-------------------------------------------+------------+ 修改MySQL的配置文件my.cnf vim /etc/my.cnf [mysqld] # innodb_buffer_pool_size = 128M # 开启Binlog日志 log_bin=mysqlbinlog # server-id server-id=11 # binlog磁盘同步 sync_binlog=1 # 开启从服务器更新二进制日志文件功能 log-slave-updates=true # 指定哪些库同步,哪些库不同步,默认都同步 binlog-ignore-db=performance_schema binlog-ignore-db=information_schema binlog-ignore-db=sys # 指定哪些库同步 #binlog-do-db=lagou # 启动插件 rpl_semi_sync_master_enabled=1 # 同步超时时间 rpl_semi_sync_master_timeout=1000 # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 重启mysql服务 systemctl restart mysqld.service 授权从库 # 授权,给从库授权(执行用户或者ip) mysql> grant replication slave on *.* to 'root'@'%' identified by 'root'; Query OK, 0 rows affected, 1 warning (1.01 sec) mysql> grant all privileges on *.* to 'root'@'%' identified by 'root'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 2.2.2 配置从库 192.168.47.11和192.168.47.12为从库 安装半同步复制的插件 # 查看当前mysql是否支持动态加载 mysql> show variables like '%have_dynamic_loading%'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | have_dynamic_loading | YES | +----------------------+-------+ # 安装半同步插件 rpl_semi_sync_slave,指定名称semisync_slave.so mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; Query OK, 0 rows affected (0.20 sec) # 查看插件的信息 mysql> show variables like '%semi%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | rpl_semi_sync_slave_enabled | OFF | | rpl_semi_sync_slave_trace_level | 32 | +---------------------------------+-------+ # 开启插件(也可以通过my.cnf配置文件设置) mysql> set global rpl_semi_sync_slave_enabled=1; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%semi%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | rpl_semi_sync_slave_enabled | ON | | rpl_semi_sync_slave_trace_level | 32 | +---------------------------------+-------+ 修改MySQL的配置文件my.cnf vim /etc/my.cnf [mysqld] # innodb_buffer_pool_size = 128M # 开启Binlog日志 log_bin=mysqlbinlog # binlog磁盘同步 sync_binlog=1 #relay_log relay_log=mysqlrelaylog # 定义relay-log的位置和名称 relay-log-index=slave-relay-bin-bin.index # 当前从库只能读 read_only=1 # server-id : 192.168.11.105(22)和192.168.11.106(33) server-id=22 # 开启插件 rpl_semi_sync_slave_enabled=1 # 指定哪些库同步,哪些库不同步,默认都同步 binlog-ignore-db=performance_schema binlog-ignore-db=information_schema binlog-ignore-db=sys # 指定哪些库同步 #binlog-do-db=lagou # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 重启mysql服务 systemctl restart mysqld.service 在从库上执行同步复制 查看主库(192.168.47.10)信息 mysql> show master status \G; *************************** 1. row *************************** File: mysqlbinlog.000001 Position: 869 Binlog_Do_DB: Binlog_Ignore_DB: performance_schema,information_schema,sys Executed_Gtid_Set: 1 row in set (0.00 sec) 在192.168.47.11和192.168.47.12执行同步复制 mysql> change master to master_host='192.168.47.10',master_port=3306,master_user='root',master_password='root',master_log_file='mysqlbinlog.000001',master_log_pos=869; Query OK, 0 rows affected, 2 warnings (0.05 sec) 注意: master_log_file 指的是主库的当前binlog文件的名称,master_log_pos指的是当前主库binlog的位置。 主库的防火墙必须关闭,才能连接上。 开启从库 # 查看从库的状态 mysql> show slave status \G; Empty set (0.00 sec) # 如果从来没有开启过从库功能,这里是空的,如果有信息,说明开启过从库功能 # 开启从库 mysql> start slave; Query OK, 0 rows affected (0.03 sec) 查看从库的状态 mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.11.104 # 主库的ip Master_User: root # 登录主库的用户 Master_Port: 3306 # 主库的TCP端口 Connect_Retry: 60 Master_Log_File: mysqlbinlog.000001 # 主库的binlog Read_Master_Log_Pos: 869 Relay_Log_File: mysqlrelaylog.000002 Relay_Log_Pos: 322 Relay_Master_Log_File: mysqlbinlog.000001 Slave_IO_Running: Yes # 必须为YES Slave_SQL_Running: Yes # 必须为YES Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 869 Relay_Log_Space: 527 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 11 Master_UUID: 17be52dc-d045-11ea-ae49-000c295147b7 Master_Info_File: /var/lib/mysql/http://master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec) 注意: Slave_IO_Running 和 Slave_SQL_Running 这两个指标的必须为YES,否则不能同步 2.2.3 验证半同步复制 在主库192.168.47.10 # 创建数据库lagou mysql> create database lagou; Query OK, 1 row affected (0.01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | lagou | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use lagou; Database changed # 在lagou库中创建 position和position_detail两张表 mysql> CREATE TABLE `position` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `name` varchar(20) DEFAULT NULL, -> `salary` int(11) DEFAULT '0', -> `city` varchar(20)DEFAULT NULL, -> PRIMARY KEY (`id`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.01 sec) mysql> CREATE TABLE `position_detail` ( -> `id` int(11) NOT NULL, -> `pid` int(11) DEFAULT NULL, -> `description` text -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO `position` (name,salary,city)VALUES ('1', 'Java高级工程师', '24000', 'chengdu'); Query OK, 1 row affected (0.01 sec) mysql> insert into position_detail (id,pid,description) values(1,10001,'负责软件开发'); Query OK, 1 row affected (0.01 sec) mysql> select * from position; +----+---------------------+--------+---------+ | id | name | salary | city | +----+---------------------+--------+---------+ | 1 | Java高级工程师 | 24000 | chengdu | | 2 | Jack | 13000 | 北京 | +----+---------------------+--------+---------+ 2 rows in set (0.01 sec) mysql> select * from position_detail; +----+-------+--------------------+ | id | pid | description | +----+-------+--------------------+ | 1 | 10001 | 负责软件开发 | | 2 | 10001 | 负责软件开发 | +----+-------+--------------------+ 2 rows in set (0.00 sec) 在从库中查看 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | lagou | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use lagou; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-----------------+ | Tables_in_lagou | +-----------------+ | position | | position_detail | +-----------------+ 2 rows in set (0.00 sec) mysql> select * from position; +----+---------------------+--------+---------+ | id | name | salary | city | +----+---------------------+--------+---------+ | 1 | Java高级工程师 | 24000 | chengdu | | 2 | Jack | 13000 | 北京 | +----+---------------------+--------+---------+ 2 rows in set (0.00 sec) mysql> select * from position_detail; +----+-------+--------------------+ | id | pid | description | +----+-------+--------------------+ | 1 | 10001 | 负责软件开发 | | 2 | 10001 | 负责软件开发 | +----+-------+--------------------+ 2 rows in set (0.00 sec) 两个从库都需要验证 验证半同步复制 cat /var/log/mysqld.log mysql> stop slave; Query OK, 0 rows affected (0.01 sec) mysql> reset slave; Query OK, 0 rows affected (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.01 sec) 3 部署MHA 3.1 配置SSH无密码验证 在manager上配置所有数据节点的无密码登录 # 在 manager(192.167.47.13) 上配置到所有数据库节点的无密码认证: # 因为是无密码登录,所以这步一直回车即可(会出现密钥) ssh-keygen -t rsa # 输入“yes”;再输入密码即可 ssh-copy-id 192.168.47.10 ssh-copy-id 192.168.47.11 ssh-copy-id 192.168.47.12 在数据节点相互配置无密码登录 # 在 master(192.168.47.10) 上配置到数据库节点slave1 和slave2 的无密码认证: # 因为是无密码登录,所以这步一直回车即可(会出现密钥) ssh-keygen -t rsa # 输入“yes”;再输入密码即可 ssh-copy-id 192.168.47.11 ssh-copy-id 192.168.47.12 # 在 slave1(192.168.47.11) 上配置到数据库节点master 和slave2 的无密码认证: ssh-keygen -t rsa # 输入“yes”;再输入密码即可 ssh-copy-id 192.168.47.12 ssh-copy-id 192.168.47.10 # 在 slave2(192.168.47.12) 上配置到数据库节点master 和slave1 的无密码认证: # 因为是无密码登录,所以这步一直回车即可(会出现密钥) ssh-keygen -t rsa # 输入“yes”;再输入密码即可 ssh-copy-id 192.168.47.10 ssh-copy-id 192.168.47.11 验证是否无密码登录 # 在manager上登录192.168.47.13(5和6),若没有提示输入密码,就设置成功,否则设置无密码失败 ssh root@192.168.47.10 # 在数据节点上47.10(5和6)相互ssh登录,若没有提示输入密码,就设置成功,否则设置无密码失败 3.2 部署node 上传mha4mysql-node-0.58-0.el7.centos.noarch.rpm 到数据节点中 # 安装node yum localinstall mha4mysql-node-0.58-0.el7.centos.noarch.rpm -y 3.3 部署manager 上传mha4mysql-manager-0.58-0.el7.centos.noarch.rpm到manager节点 # 安装manager yum localinstall mha4mysql-manager-0.58-0.el7.centos.noarch.rpm 安装过程中报如下错误: 错误:软件包:mha4mysql-manager-0.58-0.el7.centos.noarch (/mha4mysql-manager-0.58-0.el7.centos.noarch) 需要:mha4mysql-node >= 0.54 错误:软件包:mha4mysql-manager-0.58-0.el7.centos.noarch (/mha4mysql-manager-0.58-0.el7.centos.noarch) 需要:perl(MHA::NodeUtil) 错误:软件包:mha4mysql-manager-0.58-0.el7.centos.noarch (/mha4mysql-manager-0.58-0.el7.centos.noarch)需要:perl(MHA::BinlogManager) 错误:软件包:mha4mysql-manager-0.58-0.el7.centos.noarch (/mha4mysql-manager-0.58-0.el7.centos.noarch) 需要:perl(MHA::NodeConst) 错误:软件包:mha4mysql-manager-0.58-0.el7.centos.noarch (/mha4mysql-manager-0.58-0.el7.centos.noarch)需要:perl(MHA::SlaveUtil) 解决: 需要安装node和其它依赖的perl脚本 # 安装node yum localinstall mha4mysql-node-0.58-0.el7.centos.noarch.rpm -y # 安装依赖模块 yum install perl-DBD-MySQL yum install perl-Config-Tiny yum install perl-Log-Dispatch yum install perl-Parallel-ForkManager 编辑manager的配置文件 # 存放mha-manager配置文件文件夹 mkdir -p /etc/masterha # 创建日志文件夹 mkdir -p /var/log/masterha/app1 vim /etc/masterha/app1.cnf [server default] # manager的工作目录 manager_workdir=/etc/masterha/app1 # manager的日志 manager_log=/var/log/masterha/app1/manager.log # 设置master保存binlog的位置,以便MHA可以找到master的日志 #master_binlog_dir=/var/lib/mysql # 设置远端mysql在发生切换时binlog的保存位置 remote_workdir=/var/log/masterha/app1 # 设置监控用户 user=root # 监控用户的密码 password=root # 设置ssh的登录用户名 ssh_user=root ssh_port=22 # 设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行railover #ping_interval=2 # 在所有slave上执行change master的复制用户名,这个用户最好是在主库上拥有replication slave权限 repl_password=root repl_user=root # 设置发生切换后发送的报警的脚本(需要自己编写perl脚本) #report_script=/usr/local/bin/send_report # 设置自动failover时候的切换脚本(需要自己编写perl脚本) #master_ip_failover_script=/usr/local/bin/master_ip_failover # 设置手动切换时候的切换脚本(需要自己编写perl脚本) #master_ip_online_change_script=/usr/local/bin/master_ip_online_change [server1] hostname=192.168.47.10 [server2] hostname=192.168.47.11 # 设置为候选master,如果设置该参数以后,发生主从切换以后将会将此从库提升为主库 #candidate_master=1 [server3] hostname=192.168.47.12 # 不能成为master #no_master=1 检查配置 检查ssh连通性 ## 保证:All SSH connection tests passed successfully masterha_check_ssh --conf=/etc/masterha/app1.cnf 检查复制状态 # 保证:MySQL Replication Health is OK masterha_check_repl --conf=/etc/masterha/app1.cnf 启动manager # 后台启动mha manager测试 nohup masterha_manager --conf=/etc/masterha/app1.cnf < /dev/null > /var/log/masterha/app1/manager.log 2>&1 & 检查manager的转态 # 显示成功启动 app1 (pid:1205) is running(0:PING_OK) masterha_check_status --conf=/etc/masterha/app1.cnf 关闭manager # 关闭mha manager masterha_stop --conf=/etc/masterha/app1.cnf 3.4 模拟故障,验证集群的可用性 关闭master(192.168.47.10)主机mysql服务 systemctl stop mysqld 查看mha的日志 查看192.168.47.10的slave状态 查看192.168.47.11的slave状态 在新master(192.168.47.11)进行DML,查看salve(192.47.10)的数据 3.5 重启之前(192.168.47.10)的master 查看现在的master(192.168.47.10)的master状态信息 将192.168.47.10同步新的master的数据 查看192.168.47.10的数据 启动MHA-manager 删除manager的工作目录的文件 启动manager 与3.3中启动步骤一样