设为首页 收藏本站
查看: 1125|回复: 0

[经验分享] MySQL集群MHA架构部署

[复制链接]

尚未签到

发表于 2018-9-27 10:51:22 | 显示全部楼层 |阅读模式
  MHA的组件中主要有两个,一个是Manager节点组件。类似于一个监督者。
  Node节点组件则是安装于数据库节点,其中一个作为Master。
  MHA在主节点发生故障时需要进行主节点自动切换,所以必不可少地需要管理员权限。所以多个节点之间需要基于ssh秘钥认证。
  MHA的主要配置在于manager。
  准备三台机器统一安装mysql-5.7 (1922.168.6.12,192.168.6.92,192.168.6.91)
  创建用户
useradd -s /sbin/nologin -M mysql  创建数据目录
mkdir -p /data/mysql  
chown -R mysql.mysql /data/mysql
  初始化数据库 (5.7版本注意初始化时的密码)
/usr/local/mysql/bin/mysqld --no-defaults --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/  配置开机自启动
cp support-files/mysql.server /etc/init.d/mysqld  
chmod +x /etc/init.d/mysqld
  
chkconfig --add mysqld
  
chkconfig --list
  
/etc/init.d/mysqld start
  修改初始密码:
/usr/local/mysql/bin/mysqladmin -uroot -p password '123456'  创建软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql  
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
  第一步:修改/etc/my.cnf配置文件 (三台节点的server-id不同)
  master节点
[mysqld]  
basedir=/usr/local/mysql
  
datadir=/data/mysql
  
socket=/tmp/mysql.sock
  
log-error=/var/log/mysql.log
  
log-bin=/data/mysql/mysql-bin
  
binlog_format=row                        开启行模式
  
secure-file-priv=/tmp                      限制mysqld 的导入|导出只能发生在/tmp/目录下
  
server-id=12
  
#GTID
  
gtid-mode=on                          启用gtid类型,否则就是普通的复制架构
  
enforce-gtid-consistency=true                 强制GTID的一致性
  
log-slave-updates=1                      slave更新是否记入日志(5.6必须的)
  
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  slave 节点
[mysqld]  
server-id=13
  
basedir=/usr/local/mysql
  
datadir=/data/mysql
  
socket=/tmp/mysql.sock
  
log-error=/var/log/mysql.log
  
log-bin=/data/mysql/mysql-bin
  
binlog_format=row
  
secure-file-priv=/tmp
  
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  
slave_parallel_workers = 16
  
slave_parallel_type= logical_clock
  
#GTID
  
gtid-mode=on
  
enforce-gtid-consistency=true
  
log-slave-updates=1
  开启半同步复制
  master 节点安装插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';  #半同步复制(加到配置文件my.cnf)
rpl_semi_sync_master_enabled=1  
rpl_semi_sync_master_timeout=10000
  slave 节点 安装插件 主从同步开启才能启动
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';  #半同步复制(加到配置文件my.cnf)
rpl_semi_sync_slave_enabled=1  注意:修改完,重启三个节点的数据库
  第二步:创建复制用户
  主节点:
GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY '123456';  从库开启复制:
change master to master_host='192.168.6.12',master_user='repl',master_password='123456',MASTER_AUTO_POSITION=1;  
start slave;
  第三步:关闭relaylog自动删除
  MySQL数据库主从复制在缺省情况下从库的relay logs会在SQL线程执行完毕后被自动删除,但是对于MHA场景下,对于某些滞后从库的恢复依赖于其他从库的relay log,因此采取禁用自动删除功能以及定期清理的办法。对于清理过多过大的relay log需要注意引起的复制延迟资源开销等。MHA可通过purge_relay_logs脚本及配合cronjob来完成此项任务。
set global relay_log_purge = 0; 临时(建议三个节点都做)  
relay_log_purge = 0   永久,在配置文件,建议在三个节点都做
  第四步:安装各个节点node软件包
  安装mha node:
  依赖包perl-DBD-MySQL ,并在三个节点都安装node软件
yum  -y install perl-DBD-MySQL  
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
  主库中创建mha管理用户
grant all privileges on *.* to mha@'%' identified by '123456';  第五步:部署manger节点(从库192.168.6.91上部署)
yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes  
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
  创建必须目录
mkdir -p /etc/mha  
mkdir -p /var/log/mha/app1    ----》可以管理多套主从复制
  创建配置文件
vim /etc/mha/app1.cnf          -----》serverdefault可以独立  
[server default]
  
manager_log=/var/log/mha/app1/manager.log
  
manager_workdir=/var/log/mha/app1
  
master_ip_failover_script=/usr/local/bin/master_ip_failover
  
user=mha
  
password=123456
  
ping_interval=2
  
repl_password=123456
  
repl_user=repl
  
ssh_user=root
  
[server1]
  
candidate_master=1
  
check_repl_delay=0
  
hostname=192.168.6.12
  
port=3306
  
[server2]
  
candidate_master=1                           ----》不管怎样都切到优先级高的主机,一般在主机性能差异的时候用
  
check_repl_delay=0                           ----》不管优先级高的备选库,数据延时多久都要往那切
  
hostname=192.168.6.92
  
port=3306
  
[server3]
  
hostname=192.168.6.91
  
port=3306
  检测互信
masterha_check_ssh  --conf=/etc/mha/app1.cnf  测试复制是否正常
masterha_check_repl --conf=/etc/mha/app1.cnf  第六步:MHA自带高可用
vim /usr/local/bin/master_ip_failover  
my $vip = '192.168.6.166/24';
  
my $key = '0';
  
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
  
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
  在主节点上做
ifconfig eth0:0 192.168.6.166/24  启动mha
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &  检查状态:
masterha_check_status --conf=/etc/mha/app1.cnf


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602717-1-1.html 上篇帖子: 3分钟解决MySQL 1062 主从错误 下篇帖子: MySQL 分区表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表