搭建顺序:1.安装两台Mysql的数据库 2.配置Msql的主从复制
安装Mysql数据库的步骤,参见:Devops环境搭建 2.2 1 MySQL搭建
一、主从配置
下面忽略安装数据库的步骤,直接开始Mysql的主从复制的配置过程
实施过程:
注意:要先关闭两台主机的防火墙 system stop firewalld
1.首先调整Mysql的配置,由于我们需要用到Mysql数据库的binlog文件,所以需要两个都需开启这个配置
vim /etc/my.cnf
[mysqld]
#添加如下配置
server_id=1 #mysql的id,这个id不能一致(配置中是我自定义的)
log_bin=mysql-bin #开启mysql的binlog日志
重启生效配置Mysql的两台服务器service mysqld restart(具体根据mysql的服务控制来定)
启用主从同步
两台服务器主服务器命名为Mysql1,从服务器为Mysql2
Mysql1上的配置:
mysql> show master status; #查看binlog的位置号Position,从Mysql就是根据这个位置号来于主Mysql
来配置从那个位置号开始读取binlog日志的信息,File字段下的例如mysql-bin.000001就是Mysql1的binlog日志文件,这个要在后面的Mysql2的配置中配置读取那个文件的binlog日志
因为实际环境操作在Mysql的8.0版本,所以创建用户和赋予权限是不能在同一条sql语句上的,所以在这之前先修改Mysql的密码策略如下:
SHOW VARIABLES LIKE 'validate_password%; #查看密码策略的具体信息
set global validate_password_policy=LOW; #设置密码策略为观察行策略(根据密码位数来做策略通过)
set global validate_password_length=6; #设置密码长度为多少来作为密码策略观察的标准(我设置为6位)
create user 'mym'@'%' identified by '123456'; #创建主从复制的用户
grant replication slave on * .* to 'mym'@'%' ; #赋予主从用户权限
flush privileges; #更新所创配置
mysql> select User,Host from mysql.user; #查找是否成功创建用户
Mysql2上的配置:
mysql> change master to master_host='10.13.1.92',master_user='mym',master_pa
ssword='123456',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=855;
#在Slave上来去配置使用刚在主上创建的主从复制的用户来保持到主从同步的状态,
如上的sql语句都是必须要写的,最后一个master_log_pos=855 表示要从主服务器的哪个位置号开始同步,根据在主上的位置号输出配置
mysql> start slave; #启动从服务器的从状态,默认是关闭的
最后确认主从复制的状态:
mysql> show slave status\G;
#输出返回信息中要输出如下两个为Yes就主从复制状态正常
Slave_IO_Running: Yes #Slave的IO线程运行正常
Slave_SQL_Running: Yes #Slave的SQL线程运行正常
二、vip配置
背景:因为有两台Mysql服务器,为了防止客户端连接数据库的情况下数据库down了,就是用Keepliaved来做vip飘移
依据两台Mysql服务器来做vip,vip通过Keepalived服务来实现vip和故障切换vip飘移
1.实施过程:
依然用92(Mysql主)和93(Mysql从)两台主机
两台主机已经实现安装过了Keepalived了,而且已经启动(下载url:https://www.keepalived.org/download.html,版本可以以文档中用的版本为主)
1.2:修改配置
profile:/etc/keepalived/keepalived.conf
92和93两台服务器配置92为master,93为backup,配置为:
92:
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
}
vrrp_script check_nginx { #脚本引用
script "/usr/bin/killall -0 mysqld" #一旦发现mysqld进程没有则执行下面代码减权重,权重低于另一个keepalived就会做vip飘移
interval 1
weight -30
fall 3
rise 5
timeout 2
}
vrrp_instance VI_1 {
state MASTER
interface ens192 #(网卡接口,配置在那个网卡上添加虚拟vip)
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234567
}
virtual_ipaddress {
10.13.1.100/24 dev ens192
}
track_script { #脚本配置,通过脚本来做Mysql服务的故障切换
check_nginx
}
}
93:
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
}
vrrp_script check_nginx { #脚本引用
script "/usr/bin/killall -0 mysqld"
interval 1
weight -30
fall 3
rise 5
timeout 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens192
virtual_router_id 80
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1234567
}
virtual_ipaddress {
10.13.1.100/24 dev ens192
}
track_script { #脚本配置,通过脚本来做Mysql服务的故障切换
check_nginx
}
}
1.3 启动服务
systemctl enable --now keepalived
1.4 检查服务器vip
查看master主机92上是否由vip生成
网友评论