我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短
MySQL双主复制,即互为Master-Slave(默认只使用一台MasterA负责数据写入,另一台MasterB备用),可以实现数据库服务器的热备,但是一台Master宕机后不能实现动态切换。
使用Keepalived,可以通过虚拟IP,实现双主对外的统一接口以及自动检查、失败切换机制,从而实现MySQL数据库的高可用方案。
把mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz上传到/usr/local/src/
1、mysql安装
2、创建mysql用户组和用户
3、初始化数据
4、修改配置
5、配置环境变量
#将mysql的bin目录配置到环境变量中
PATH=$PATH:$HOME/bin:/usr/local/mysql/mysql-5.7.28/bin
export PATH
#使配置修改后立即生效
source ~/.bash_profile
6、修改密码、配置远程访问和安全启动
#安全启动
cd /usr/local/mysql/mysql-5.7.28/bin
./mysqld_safe –user=mysql &
#修改密码
#进入mysql
mysql
use mysql
update user set authentication_string=password(“123456″) where user=”root”;
#刷新权限表
flush privileges;
#配置远程访问
use mysql
#允许所有机器访问root用户 %代表所有机器
update user set host=’%’ where user=’root’;
#授权所有机器的root用户拥有所有数据库的所有权限 远程访问密码root %代表所有机器
grant all privileges on *.* to root@’%’ identified by ‘root’;
#刷新权限表
flush privileges;
#退出mysql
exit
#安全关闭
./mysqladmin -uroot -p shutdown
#删除免密登录配置
vi /etc/my.cnf
#删除skip-grant-tables=1并保存
#安全启动
./mysqld_safe –user=mysql &
1、创建主从同步replication用户
2、授权
192.168.0.101
192.168.0.102
3、添加配置文件
server-id = 101
skip-external-locking
log_bin = mysql-binlog
binlog_do_db = sample
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema
binlog_group_commit_sync_delay = 100000 # 单位微妙
binlog_group_commit_sync_no_delay_count = 20 # 单位每组事物数量
#设置复制类型
slave-parallel-type=LOGICAL_CLOCK
#设置并行数量
slave-parallel-workers=4
#主主需要加的部分
replicate-do-db = sample
log-slave-updates=true
#sync_binlog=1
auto_increment_offset=1
auto_increment_increment=2
innodb_buffer_pool_size = 12G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_chunk_size = 128M
innodb_log_file_size = 256M
innodb_log_buffer_size = 32M
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 120
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/log/slow.log
long_query_time = 5
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
secure_file_priv=/usr/local/mysqlcsvfiles/
expire_logs_days=7
max_binlog_size=1024M
!includedir /etc/my.cnf.d
4、添加之后
5、安全关闭
6、安全启动
7、进入mysql执行
#分别记录主的binlog位置,在101的角度上102为主,在102的角度上,101为主
File:mysql-bin.000001
Position: 154
#设置同步关系(两个主都要设置)
#其中master_log_file和master_log_pos要登录到对方机器执行show master status\G;去查看
stop slave;
(在192.168.0.101)
change master to master_host=’192.168.0.102′,master_user=’replication’,master_password=’replication’,master_log_file=’mysql-bin.000001′,master_log_pos=154;
(在192.168.0.102)
change master to master_host=’192.168.0.101′,master_user=’replication’,master_password=’replication’,master_log_file=’mysql-bin.000001′,master_log_pos=154;
#分别启动slave
start slave;
1、安装编译依赖包
2、安装Keepalived
#配置keepalived 得到一个Makefile的文件夹
#–prefix:keepalived安装目录
#–sysconf:keepalived的核心配置文件,必须要在/etc目录下面,改为其他位置会导致启动不了,不配置在该目录下的话,启动keepalived时日志文件里面会报错,显示找不到/etc这个文件夹
cd /usr/local/keepalived
./configure –prefix=/usr/local/keepalived/ –sysconf /etc
#编译和安装keepalived
make && make install
#创建keepalived软链接 /usr/sbin/如果存在keepalived就先删除
ln -s/usr/local/keepalived/sbin/keepalived /usr/sbin/
#复制keepalived脚本文件到/etc/init.d/目录下
cd keepalived
cp /usr/local/keepalived/etc/init.d/keepalived /etc/init.d/
#设置Keepalived开机自启动
chkconfig –add keepalived
chkconfig keepalived on
#启动keepalived
service keepalived start
1、编辑keepalived配置文件
2、主服务器添加对应配置文件
vrrp_script check_run {
script “/etc/keepalived/mysql_check.sh”
interval 5#5秒执行一次脚本
}
vrrp_instance VI_1 {
state MASTER#主服务器
interface eth0#承载VIP地址到物理接口
virtual_router_id 51#虚拟路由器ID号,每个热播组保持一致
priority 100#优先级,数值越大优先级越高
advert_int 1#检查间隔,默认为1s
authentication {#认证信息,每个热播组保持一致
auth_type PASS#认证类型
auth_pass 1111#密码字串
}
virtual_ipaddress {
192.168.0.144#VIP地址(内网地址)
}
track_script {
check_run
}
}
3、备份服务器添加对应配置文件
附mysql_check.sh
4、重启keepalived
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。