笔记:mysql双主,keepalived 配置

server/2024/9/23 11:15:56/

准备工作

1,两台主机,3个IP
mysql-1:192.168.0.1
mysql-2:192.168.0.2
vip 192.168.0.3

2,mysql安装包
下载地址:https://dev.mysql.com/downloads/mysql/

3,keepalived安装包
下载地址:https://www.keepalived.org/download.html

安装mydwl

1,安装mysql软件

2,配置my.cnf
两台主机使用不同的 server-id

[client]
port=3306
socket=/data9/mysql/log/mysql.sock
#客户端编码
default-character-set=utf8[mysqld]
port=3306
basedir=/data9/mysql
datadir=/data9/mysql/data
socket=/data9/mysql/log/mysql.sock
log-error=/data9/mysql/log/mysql.log
pid-file=/data9/mysql/log/mysql.pidserver-id=1
log-bin=mysql-bin
#max_binlog_size = 500M
#expire_logs_days = 15
#主从同步时,需要同步的数据库,多个数据库写多行binlog_do_db配置
#binlog_do_db=test_db
#主从同步时,不需要同步的数据库,多个数据库写多行binlog_ignore_db配置
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=sys
binlog_ignore_db=performance_schema
#主从同步方式
binlog_format=row
#服务端编码
character-set-server=utf8

双主配置

mysql-1创建用户并授权

grant replication slave on *.* to slave@'192.168.0.2' identified by 'slave';
flush privileges;

查看mysql-1

mysql> show master status;
+------------------+----------+--------------+-------------------------------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                                | Executed_Gtid_Set |
+------------------+----------+--------------+-------------------------------------------------+-------------------+
| mysql-bin.000002 |      154 |              | mysql,information_schema,sys,performance_schema |                   |
+------------------+----------+--------------+-------------------------------------------------+-------------------+
1 row in set (0.00 sec)

配置mysql-2对mysql-1的从库
登录mysql-2数据库

mysql> change master to -> master_host='192.168.0.1',-> master_port=3306, -> master_user='slave',-> master_password='slave', -> master_log_file='mysql-bin.000002',-> master_log_pos=154; mysql> start slave;

相同方式配置mysql-1对mysql-2的从库

keepalived_82">keepalived

1,安装keepalived并创建shutdown.sh

[root@localhost ~]## cd /opt
[root@localhost opt]# yum -y install gcc openssl-devel popt-devel psmisc
[root@localhost opt]# tar -zxvf keepalived-2.3.1.tar.gz
[root@localhost opt]# cd keepalived-2.3.1
[root@localhost keepalived-2.3.1]# ./configure --prefix=/opt/keepalived-2.3.1
[root@localhost keepalived-2.3.1]# make && make install[root@localhost keepalived-2.3.1]mkdir /etc/keepalived
[root@localhost keepalived-2.3.1]cp keepalived/etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf
[root@localhost keepalived-2.3.1]cp keepalived/etc/init.d/keepalived /etc/init.d/
[root@localhost keepalived-2.3.1]cp keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost keepalived-2.3.1]cp bin/keepalived /usr/sbin/
[root@localhost keepalived-2.3.1]vi /etc/keepalived/shutdown.sh
#!/bin/bash
#该脚本是在mysql服务出现异常时,将keepalived应用停止,从而使虚拟vip主机自动连接到另一台mysql
killall keepalived
[root@localhost keepalived-2.3.1]chmod +x /etc/keepalived/shutdown.sh

2,查看网卡

bond0

[root@localhost ~]# ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500

3,配置keepalived
192.168.0.1:/etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_MASTERvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER#interface为刚才查到的本机网卡名称interface band0#同一网段中同一组virtual_router_id值相同。不同组virtual_router_id值唯一。virtual_router_id 212#字数越大,优先级越高,master必须大于backuppriority 100advert_int 1authentication {auth_type PASSauth_pass 2222}virtual_ipaddress {#该ip为虚拟出来的vip地址192.168.0.3}
}#配置virtual_server  ip为上面配置的虚拟vip地址  端口为mysql的端口
virtual_server 192.168.0.3 3306 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCP#real_server 该配置为实际物理机ip地址 以及实际物理机mysql端口real_server 192.168.0.1 3306 {#当该ip 端口连接异常时,执行该脚本notify_down /etc/keepalived/shutdown.shTCP_CHECK {#实际物理机ip地址connect_ip 192.168.0.1#实际物理机port端口connect_port 3306connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

192.168.0.2:/etc/keepalived/keepalived.conf

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_MASTERvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER#interface为刚才查到的本机网卡名称interface band0#同一网段中同一组virtual_router_id值相同。不同组virtual_router_id值唯一。virtual_router_id 212#字数越大,优先级越高,master必须大于backuppriority 100advert_int 1authentication {auth_type PASSauth_pass 2222}virtual_ipaddress {#该ip为虚拟出来的vip地址192.168.0.3}
}#配置virtual_server  ip为上面配置的虚拟vip地址  端口为mysql的端口
virtual_server 192.168.0.3 3306 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCP#real_server 该配置为实际物理机ip地址 以及实际物理机mysql端口real_server 192.168.0.2 3306 {#当该ip 端口连接异常时,执行该脚本notify_down /etc/keepalived/shutdown.shTCP_CHECK {#实际物理机ip地址connect_ip 192.168.0.2#实际物理机port端口connect_port 3306connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

4,开机自启动并启动keepalived

[root@localhost keepalived-2.3.1]# systemctl enable keepalived
[root@localhost keepalived-2.3.1]# systemctl start keepalived

http://www.ppmy.cn/server/55453.html

相关文章

配置jupyter时出现问题?怎么办?

在自己创建的虚拟环境&#xff08;nmjpytorch&#xff09;安装完jupyter&#xff0c;没有跳转到链接&#xff0c;问题如图&#xff1a; 解决方法&#xff1a; 1、查看自己的tornado版本为5.1.1&#xff0c;坑太高了&#xff0c;降低版本为4.5.3 2、卸载tornado-5.1.1 3、安装t…

Spring Boot 中的微服务监控与管理

微服务的概述 微服务架构的优点和挑战 优点: 灵活性和可扩展性:微服务架构允许每个服务单独部署和扩展,这使得系统可以更灵活地适应不同的业务需求和负载变化。 使团队更加聚焦:每个微服务都有明确的职责,这使得开发团队可以更加聚焦,专注于开发他们的服务。 技术和框…

2024年7月最佳免费天气API接口推荐

在我们的日常生活中&#xff0c;天气扮演着一个至关重要的角色&#xff0c;它影响着我们的情绪、健康、日常安排和商业决策。无论是计划一次户外活动、安排农作物种植&#xff0c;还是确保旅行安全&#xff0c;天气信息的准确性和及时性至关重要。随着技术的进步&#xff0c;天…

maven项目启动的时候,自动启动netty

1.写一个监听器,重开一个线程初始化,netty,一定要重开一个线程去启动,要不会阻塞的 public class StartupListener implements ServletContextListener {Overridepublic void contextInitialized(ServletContextEvent sce) {// 在Web应用启动时启动WebSocket服务器new Thread(…

Jenkins容器的部署

本文主要是记录如何在Centos7上安装docker,以及在docker里面配置tomcat、mysql、jenkins等环境。 一、安装docker 1.1 准备工作 centos7、VMware17Pro 1.2 通过yum在线安装dokcer yum -y install docker1.3 启动docker服务 systemctl start docker.service1.4 查看docke…

C# Web控件与数据感应之属性统一设置

目录 关于属性统一设置 准备数据源 范例运行环境 AttributeInducingFieldName 方法 设计与实现 如何根据 ID 查找控件 FindControlEx 方法 调用示例 小结 关于属性统一设置 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;Web控件与数据源之间的交互&…

导入的Docker 镜像无名称和标签问题

解决办法 第一种 重命名 docker tag [镜像id] [新镜像名称]:[新镜像标签]第二种 规范导出 docker save -o xxxx.tar [镜像名称]:[镜像标签]使用镜像ID打包的话导致解压的出来的镜像没有名字

系统管理(System Keeping):全新迭代,优化您的开发体验

随着科技的不断进步和用户需求的日益增长&#xff0c;系统管理&#xff08;System Keeping&#xff09;不断进行迭代更新&#xff0c;致力于为用户带来更加高效、便捷的开发体验。本次全新迭代&#xff0c;不仅在界面与交互上进行了革新&#xff0c;更在功能整合、个性化与安全…