注意1:安装过程中,本机没有对应版本的包怎么办?
1.找到安装过程中提示没有的包或指定版本的包.
2.通过网络yum源,yum provides libmysqlclient.so.18 去搜索对应的软件包
3.然后yum install –dwnloadonly –downloaddir=. mysql-community-server 下载这个包和依赖包,
4.移动到软件仓库,createrepo –update /var/ftp/myrepo ,然后另外连接他的机器yum makecache,再重新安装
注意2:lvs绑定虚拟ip注意,看第四天的视频
他做的是dr
虚拟ip要绑定在lvs!!!!!!!!
弹性云服务器里面,有个 网卡—源/目的检查(除了安全组之类意外,虚拟交换机间的检查)———-我们把他关闭——–其他正常设置就好了.(3台机器都关闭)
记得关闭arp的地址表
sysctl -w net.ipv4.conf.lo.arp_announce=2
ip add add 192.168.10/32 brd 192.168.1.255 dev lo label lo:1
注意3:利用lvs的原理,让后端机器上网(没有公网ip的机器直接通过网关出去)
利用LVS机制:修改mac地址,转发数据报文的机制,让后端机器没有公网ip的机器可以上网
192.168.1.11是有往的机器(11网卡的源目的检查要关闭,打开就通不了)
在没有网的机器上面
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/16 -j SNAT –to-source 192.168.1.11
伪装的是从eth0流出的数据包
-o 出去
-s 源地址
ip route del default via 192.168.1.1
ip route add default via 192.168.1.11
MHA工作过程
MHA Manager 会定时探测集群中的 master 节点, 当 master 出现故障时,它可以自动将最新 数据的 sl ave 提升为新的 master ,然后将所有其他的 slave 重新指向新的 master 。整个 故障转移过程对应用程 序完全透明。
– ( 1 )从宕机崩溃的 master 保存二进制日志事件( binlog events )
—————————————————-
– ( 2 )识别含有最新更新的 slave (半同步复制至少有一台是和主库一致的,半同步复制原理)
– ( 3 )然后应用(2)的差异的中继日志( relay log )到其他的 slave
主库挂了,从库上有部分从库没有接收到所有的events,选择出最新的slave,从中拷贝其他从所缺少的events。
—————————————————
– ( 4 )应用从 master 保存的二进制日志事件( binlog events )
– ( 5 )提升一个 slave 为新的 master ;
– ( 6 )使其他的 slave 连接新的 master 进行复制;
[mysql]
192.168.1.[51:55]
[mha]
192.168.1.56
1.获得yum源
2.安装,启动mysql
————————————————
cat > install_mysql.sh <<EOF
yum remove yum remove -y mariadb-libs
yum clean all;yum makecache
yum install -y mysql-community-*
EOF
————————————————
ansible mysql -m script -a “install_mysql.sh”
ansible mysql -m service -a “name=mysqld state=restarted enabled=yes”
3.设置互相免密码
for i in 192.168.1.{51..56}
do
scp /root/.ssh/id_rsa $i:/root/.ssh/;scp /etc/ssh/ssh_config $i:/etc/ssh
done
4.编译mha环境准备
使用mha包做成yum仓库
在所有主机上安装Perl依赖包(51-56操作)
yum -y install perl-Config-Tiny perl-Email-Date-Format perl-Log-Dispatch perl-Mail-Sender perl-Mail-Sendmail perl-MIME-Lite perl-MIME-Types perl-Parallel-ForkManager
在所有数据库服务器上安装mha-node包(51-55操作)
yum -y install perl-DBD-mysql perl-DBI mha4mysql-node
在管理主机上安装mha_node 和 mha-manager包(56操作)
yum -y install perl-DBD-mysql perl-DBI mha4mysql-node perl-ExtUtils-* perl-CPAN-*
5.开始编译mha
tar -zxf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56/
perl Makefile.PL
make && make install
6.主从设置
a.3台竞争主库的my.cnf机器配置(51-53)
server_id=51
log-bin=mysql51
binlog-format=’mixed’
relay_log_purge=off
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
validate_password_length=6
validate_password_policy=0
b.2台机器做真的从库(54-55)
server_id=54
relay_log_purge=off
plugin-load =’rpl_semi_sync_slave=semisync_slave.so’
rpl-semi-sync-slave-enabled = 1
validate_password_length=6
validate_password_policy=0
c.MHA节点配置(56)
cd /root/mha4mysql-manager-0.56
\cp bin/* /usr/local/bin/
mkdir /etc/mha_manager
\cp samples/conf/app1.cnf /etc/mha_manager
第一个文件:
vim /etc/mha_manager/app1.cnf
[server default]
manager_workdir=/etc/mha_manager
manager_log=/etc/mha_manager/manager.log
master_ip_failover_script=/usr/local/bin/master_ip_failover
ssh_user=root
ssh_port=22
repl_user=repluser
repl_password=123456
user=root
password=123456
[server1]
hostname=192.168.1.51
port=3306
candidate_master=1
[server2]
hostname=192.168.1.52
port=3306
candidate_master=1
[server3]
hostname=192.168.1.53
port=3306
candidate_master=1
[server4]
hostname=192.168.1.54
no_master=1
[server5]
hostname=192.168.1.55
no_master=1
第二个文件:
第一步:
cp /mha-soft-student/master_ip_failover /usr/local/bin/
文件里面设置vip
my $vip = ‘192.168.1.100/24’;
chmod +x /usr/local/bin/master_ip_failover
第二步:
先给192.168.1.51配置虚拟ip,预设先让他做老大
ifconfig eth0:1 192.168.1.100/24
华为云上需要设置一下虚拟ip,把三台准备竞选主机,飘vip的机器加入进去.具体可以看第二天的说明
7.启动mysql和修改密码
————————————————
chpass.sh
systemctl restart mysqld
pass=$(grep ‘temporary password’ /var/log/mysqld.log |awk -F ‘: ‘ ‘{print $2}’)
mysqladmin -uroot -p${pass} password 123456
ansible mysql -m script -a “chpass.sh”
————————————————
8.主库授权账号给从库,从库指定主库
master_log_file=$(ssh 192.168.1.51 “mysql -u root -p123456 -e ‘grant replication slave on *.* to repluser@\”%\” identified by \”123456\”; show master status'”|awk ‘NR==2{print $1}’)
master_log_pos=$(ssh 192.168.1.51 “mysql -u root -p123456 -e ‘grant replication slave on *.* to repluser@\”%\” identified by \”123456\”; show master status'”|awk ‘NR==2{print $2}’)
for i in 192.168.1.{52..55}
do
ssh $i “mysql -u root -p123456 <<EOF
stop slave;
change master to master_host=’192.168.1.51′,
master_user=’repluser’,master_password=’123456′,
master_log_file=\”$master_log_file\”,
master_log_pos=$master_log_pos;
start slave;show slave status\G
EOF
done
mysql主节点上通过show processlist;可以看机器是否连上他
8.验证mha
a.在56上面验证ssh 免密登陆数据节点主机
masterha_check_ssh –conf=/etc/mha_manager/app1.cnf
b.在56上面验证数据节点的主从同步配置
masterha_check_repl –conf=/etc/mha_manager/app1.cnf
c.启动管理服务MHA_Manager ,然后 另开一个终端查看状态
masterha_manager –conf=/etc/mha_manager/app1.cnf –remove_dead_master_conf –ignore_last_failover
另开一个终端
masterha_check_status –conf=/etc/mha_manager/app1.cnf
d.停止服务
masterha_stop –conf=/etc/mha_manager/app1.cnf
9.测试故障转移
主节点上创建一个测试用户和数据库和表给客户端访问,模拟测试主节点机器挂掉后对用户没有影响
主库上:
create database db8;
create table db8.a(id int);
grant select,insert on db8.a to tt@’%’ identified by ‘123456’;
客户端连接虚拟ip:
mysql -utt -p123456 -h192.168.1.100
select @@hostname;
然后把停止主库mysql,看是否会自动切换
systemctl stop mysqld
10.维护mha集群
把坏掉的数据库服务器51再添加到集群
#############先做master数据备份还原(因为这个过程中数据有写入之类的###实战的时候记得做备份恢复期间丢失的数据),然后再去查主节点的偏移量
第一步:之前宕机的机器,手动change to master 重新指向新的主库52,也就是[配置为当前主库的从库
master_host
master_log_file
master_log_pos
注意:这三个参数在下面指定的时候是变动的
change master to master_host=”192.168.1.52″,master_user=’repluser’,master_password=’123456′,master_log_file=”mysql52.000001″,master_log_pos=414; start slave; show slave status\G
第二步:mangaer配置文件/etc/mha_manager/app1.cnf重新写上[server1]
[server1]
hostname=192.168.1.51
port=3306
candidate_master=1
第三步:启动管理主机56的管理服务,并查看管理信息check_status
更多扩展:
加入新节点
常用维护命令
注意要点
/var/lib/mysql/auto.cnf 这个存mysql的uuid的,如果是复制或克隆其他机器的注意改一下
–remove_dead_master_conf //删除宕机主库配置./etc/mha_manager/app1.cnf这个里面的server1如果挂掉就会删除server1的配置,里面就没有server1的配置了
–ignore_last_failover //忽略最后的故障转移,忽略你连续切换的频率,当前的51坏掉,8个小时之类连续出现故障的时候就不给切换了,忽略xxx.health文件,用了这个参数后,就不受这个影响,还是正常切换,什么时候坏了就给你什么时候故障切换转移
failover 故障转移
因为51设置了vip是100,所以当服务启动的时候,51上的机器就是master,他会监控51
cat /etc/mha_manager/app1.master_status.health 前面-ignore_last_failover就是对应这个,忽略故障切换转移了几回

发表评论

邮箱地址不会被公开。 必填项已用*标注