博客分享的第一篇技术文章;
项目主要搭建:主主数据库高可用集群搭建。
数据库互为主备,应用技术:MM+keepalived
使用的是虚拟机搭建的实验向大家展示:
数据库1:192.168.4.7
数据库2:192.168.4.77
VIP:192.168.4.68
web1:192.168.4.69
web2:192.168.4.70
一、安装MySQL,部署主主同步结构。
直接yum安装
配置主主同步:
由于主数据库192.168.4.7里面存放着数据,所以需要先导出数据,方法很多,我们采取mysqldump:
#mysqldump -uroot -p123456 --all-databases > /opt/all.sql
然后需要将数据拷贝到数据库192.168.4.77。
数据库2:
1、修改配置文件:
数据库192.168.4.7
[mysqld]
server_id=7 #两台主机不能重复
log-bin=master7 #开启binlog功能
log-bin-index=master7.index
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
binlog_format="mixed"
数据库192.168.4.77
[mysqld]
#vim
/etc/my.cnf
[mysqld]
log-bin=master77
server_id=77
binlog_format="mixed"
log_slave_updates
datadir=/var/lib/
mysqlsocket=/var/lib/mysql/mysql.sock
:wq
依次启动两台数据库:systemctl
start mariadb
2、导入数据库:
将数据库192.168.4.7备份出来的数据库导入到数据库192.168.4.77,以此保持两端数据一致
mysql -uroot -p123456 < all.sql
3、配置用户授权并查看master信息:
数据库192.168.4.7
给用户授权:允许192.168.4.77的数据库用户slave拥有replication slave权限:
mysql>grant replication slave on *.* to slave@"192.168.4.77" identified by "123456";
mysql>show master status; //查看状态;
数据库192.168.4.77
给用户授权:允许192.168.4.7的数据库用户slave拥有replication slave权限:
mysql>grant replication slave on *.* to slave@"192.168.4.7" identified by "123456";
mysql>show master status; //查看状态;
4、配置相互主从,并开启slave模式:
数据库192.168.4.7
#mysql -uroot -p123456
mysql>change master to master_host="192.168.4.77",master_user="slave",master_password="12
3456",master_log_file="master77.000001",master_log_pos=357;
mysql>start slave; //启动slave
mysql>show slave status\G; //查看slave状态
数据库192.168.4.77
mysql>change master to master_host="192.168.4.7",master_user="slave",master_password="123
456",master_log_file="master7.000001",master_log_pos=357;
mysql>start slave;
mysql>show slave status\G; //查看slave状态
状态都为yes是正常,否则主主同步异常,需要进一步排查
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
主主同步配置完成后可以进行一些建库,建表的测试测试,看看两边的数据是否一致
二、安装keepalived并设置监控
keepalived是安装在两台MySQL服务器上的
首先安装keepalived过程不解释就正常解压安装就好
1、修改配置文件/etc/keepalived/keepalived.conf
!
Configuration File for keepalived
global_defs
{
notification_email
{
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from
Alexandre.Cassen@firewall.loc
smtp_server
192.168.200.1
smtp_connect_timeout
30
router_id
LVS_DEVEL
}
vrrp_script
check_mysql {
script "/opt/mysql.sh" //监控脚本存放位置(最后有参考脚本,也可以自己写)
interval 2 //(检测脚本执行的间隔)
weight 2
}
vrrp_instance
VI_1 {
state MASTER //备份服务器上将MASTER改为 BACKUP
interface eth0
virtual_router_id 51 //主、备机的virtual_router_id必须相同
priority 100 //主、备机取不同的优先级,主机值较大,备份机值较小,备份服
务器设置为99
advert_int 1
authentication
{
auth_type
PASS
auth_pass
1111 //主、备机一样
}
track_script
{
check_mysql //检测脚本
}
virtual_ipaddress
{
192.168.4.68 //VIP(虚拟IP,对外提供服务的IP)
}
}
数据库192.168.4.77配置文件:
vim
/etc/keepalived/keepalived.conf
!
Configuration File for keepalived
global_defs
{
notification_email
{
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from
Alexandre.Cassen@firewall.loc
smtp_server
192.168.200.1
smtp_connect_timeout
30
router_id
LVS_DEVEL
}
vrrp_script
check_mysql {
script
"/opt/mysql.sh"
interval 2
weight 2
}
vrrp_instance
VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication
{
auth_type
PASS
auth_pass
1111
}
track_script
{
check_mysql
}
virtual_ipaddress
{
192.168.4.68
}
}
******************************************************************************
监控脚本的作用是:实现keepalived主备的切换
附:监控脚本
vim
/opt/ mysql.sh
#!/bin/bash
a=`ps
-C mysqld --no-header | wc -l`
if
[ $a -eq 0 ];then
systemctl
start mariadb
sleep
3
b=`ps
-C mysqld --no-header | wc -l`
if
[ $b -eq 0 ];then
killall
keepalived
fi
fi
网页名称:MM(主主数据库)+keepalived主备高可用集群
本文链接:
http://bzwzjz.com/article/gehojj.html