锦州做网站的个人,常德seo招聘,什么是域名解析服务,宁海县高质量营销型网站建设搭建 MySQL MHA 搭建 MySQL MHA实验拓扑图实验环境实验思路MHA架构故障模拟 实验部署数据库安装主从复制部署时间同步主服务器配置从服务器配置创建链接 MHA搭建安装依赖的环境安装 node 组件安装 manager 组件配置无密码认证在 manager 节点上配置 MHA管理 mysql 节点服务器创… 搭建 MySQL MHA 搭建 MySQL MHA实验拓扑图实验环境实验思路MHA架构故障模拟 实验部署数据库安装主从复制部署时间同步主服务器配置从服务器配置创建链接 MHA搭建安装依赖的环境安装 node 组件安装 manager 组件配置无密码认证在 manager 节点上配置 MHA管理 mysql 节点服务器创建相关目录 编写配置文件手动开启虚拟IP测试 ssh 无密码认证及 MySQL主从连接情况启动 MHA 故障模拟———— Master 节点意外故障停止 Master 节点MySQL服务查看 mysql2 是否接管 VIP修复故障启动原来的主节点修复数据在 manager 节点上修改配置文件对mysql1和mysql2 进行重启在 manager 节点上启动 MHA 搭建 MySQL MHA
实验拓扑图 实验环境
主机IPMaster主库服务器10.190.33.71Slave从库服务器0110.190.33.72Slave从库服务器0210.190.33.73MHA Manager服务器10.190.33.74Client10.190.33.75
实验思路
MHA架构
数据库安装一主两从MHA搭建
故障模拟
主库失效备选主库成为主库原故障主库恢复重新加入到MHA成为从库
实验部署
数据库安装
MySQL安装教程
主从复制部署
时间同步
所有服务器均需要进行配置(仅以Master服务器举例)
yum install -y chronyvim /etc/chrony.conf #注释原有ntp服务器添加阿里ntp服务源server ntp.aliyun.com iburstsystemctl restart chronydchronyc sources -vsystemctl enable --now chronyd主服务器配置
vim /etc/my.cnfserver-id1log_bin mysql-binbinlog_format mixedlog-slave-updates truerelay-log relay-log-binrelay-log-index slave-relay-bin.index systemctl restart mysqld
mysql -u root -pAdmin123grant replication slave on *.* to myslave10.190.33.% identified by Admin123;grant all privileges on *.* to manager10.190.33.% identified by Admin123;grant all privileges on *.* to manager10.190.33.71 identified by Admin123;grant all privileges on *.* to manager10.190.33.72 identified by Admin123;grant all privileges on *.* to manager10.190.33.73 identified by Admin123;flush privileges;show master status;从服务器配置
vim /etc/my.cnfserver-id 2log_bin mysql-binbinlog_format mixedlog-slave-updates truerelay-log relay-log-binrelay-log-index slave-relay-bin.indexsystemctl restart mysqldmysql -u root -pAdmin123grant replication slave on *.* to myslave10.190.33.% identified by Admin123;grant all privileges on *.* to manager10.190.33.% identified by Admin123;grant all privileges on *.* to manager10.190.33.71 identified by Admin123;grant all privileges on *.* to manager10.190.33.72 identified by Admin123;grant all privileges on *.* to manager10.190.33.73 identified by Admin123;flush privileges;change master to master_host10.190.33.71,master_usermyslave,master_passwordAdmin123,master_log_filemysql-bin.000001,master_log_pos3400;start slave;show slave status\Gset global read_only1; Slave1 Slave2
创建链接
所有的数据库服务器(仅以Master服务器举例) ln -s /usr/local/mysql/bin/mysql /usr/sbin/ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/ MHA搭建
安装依赖的环境
所有的服务器(仅以Master服务器举例)
yum install epel-release --nogpgcheck -yyum install -y perl-DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN安装 node 组件
所有的服务器(仅以Master服务器举例)
cd /opttar xf mha4mysql-node-0.57.tar.gzcd mha4mysql-node-0.57perl Makefile.PLmake make install安装 manager 组件
manager服务器
cd /opttar xf mha4mysql-manager-0.57.tar.gzcd mha4mysql-manager-0.57perl Makefile.PLmake make install 配置无密码认证
所有的服务器
#manager节点上配置到所有数据库节点的无密码认证ssh-keygen -t rsassh-copy-id 10.190.33.71ssh-copy-id 10.190.33.72ssh-copy-id 10.190.33.73#master节点上配置到数据库节点 slave1 和 slave2的无密码认证ssh-keygen -t rsassh-copy-id 10.190.33.72ssh-copy-id 10.190.33.73#slave1节点上配置到数据库节点 master和 slave2的无密码认证ssh-keygen -t rsassh-copy-id 10.190.33.71ssh-copy-id 10.190.33.73#slave2节点上配置到数据库节点 master和 slave1 的无密码认证ssh-keygen -t rsassh-copy-id 10.190.33.71ssh-copy-id 10.190.33.72
manager master slave1 slave2 在 manager 节点上配置 MHA
cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/binll /usr/local/bin/scripts/cp /usr/local/bin/scripts/master_ip_failover /usr/local/binvim /usr/local/bin/master_ip_failover###删除所有后拷贝前输入 :set paste 解决vim粘贴乱序问题#!/usr/bin/env perluse 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 10.190.33.100;my $brdc 10.190.33.255;my $ifdev ens33; ##看下自己网卡是ens33则不用动不是ens33就换成自己网卡名my $key 1;my $ssh_start_vip /sbin/ifconfig ens33:$key $vip;my $ssh_stop_vip /sbin/ifconfig ens33:$key down;my $exit_code 0;#my $ssh_start_vip /usr/sbin/ip addr add $vip/24 brd $brdc dev $ifdev label $ifdev:$key;/usr/sbin/arping -q -A -c 1 -I $ifdev $vip;iptables -F;;#my $ssh_stop_vip /usr/sbin/ip addr del $vip/24 dev $ifdev label $ifdev:$key;GetOptions(commands \$command,ssh_users \$ssh_user,orig_master_hosts \$orig_master_host,orig_master_ips \$orig_master_ip,orig_master_porti \$orig_master_port,new_master_hosts \$new_master_host,new_master_ips \$new_master_ip,new_master_porti \$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 \;}## A simple system call that disable the VIP on the old_mastersub stop_vip() {ssh $ssh_user\$orig_master_host \ $ssh_stop_vip \;}sub usage {printUsage: master_ip_failover --commandstart|stop|stopssh|status --orig_master_hosthost --orig_master_ipip --orig_master_portport --new_master_hosthost --new_master_ipip --new_master_portport\n;} 管理 mysql 节点服务器
创建相关目录
所有的服务器(仅以Master服务器举例)
mkdir -p /opt/mysql-mha/mha-node编写配置文件
mkdir -p /opt/mysql-mha/mha-managervim /opt/mysql-mha/mysql_mha.cnf[server default]manager_log/opt/mysql-mha/manager.logmanager_workdir/opt/mysql-mha/mha-managerremote_workdir/opt/mysql-mha/mha-nodemaster_binlog_dir/usr/local/mysql/dataping_interval1master_ip_failover_script/usr/local/bin/master_ip_failovermaster_ip_online_change_script/usr/local/bin/master_ip_online_changeusermanagerpasswordAdmin123repl_usermyslaverepl_passwordAdmin123port3306secondary_check_script/usr/local/bin/masterha_secondary_check -s 10.190.33.72 -s 10.190.33.73shutdown_scriptssh_userroot[server1]hostname10.190.33.71port3306[server2]candidate_master1check_repl_delay0hostname10.190.33.72port3306[server3]hostname10.190.33.73port3306 手动开启虚拟IP
Master服务器
/sbin/ifconfig ens33:1 10.190.33.100/24ifconfig 测试 ssh 无密码认证及 MySQL主从连接情况
masterha_check_ssh -conf/opt/mysql-mha/mysql_mha.cnf#测试 ssh 无密码认证masterha_check_repl -conf/opt/mysql-mha/mysql_mha.cnf#MySQL主从连接情况 启动 MHA nohup masterha_manager \
--conf/opt/mysql-mha/mysql_mha.cnf \
--remove_dead_master_conf \
--ignore_last_failover /dev/null /var/log/mha_manager.log 21 masterha_check_status --conf/opt/mysql-mha/mysql_mha.cnf#查看 MHA 状态cat /opt/mysql-mha/manager.log | grep current master#查看 MHA 日志 故障模拟———— Master 节点意外故障
停止 Master 节点MySQL服务
systemctl stop mysqld查看 mysql2 是否接管 VIP ifconfig 修复故障
启动原来的主节点
systemctl start mysqld 修复数据
现主MySQL服务器原从MySQL服务器1 mysql -u root -pmysql show master status; 在原来的主节点 change master to master_host10.190.33.72,master_usermyslave,master_passwordAdmin123,master_log_filemysql-bin.000001,master_log_pos1777;start slave;在 manager 节点上修改配置文件 vim /opt/mysql-mha/mysql_mha.cnf······[server1]hostname 10.190.33.71port3306······对mysql1和mysql2 进行重启 systemctl restart mysqld
在 manager 节点上启动 MHA masterha_stop --conf/opt/mysql-mha/mysql_mha.cnfnohup masterha_manager \
--conf/opt/mysql-mha/mysql_mha.cnf \
--remove_dead_master_conf \
--ignore_last_failover /dev/null /var/log/mha_manager.log 21