首页 > 数据库 >Mysql互为主备配置

Mysql互为主备配置

时间:2024-10-15 08:50:11浏览次数:11  
标签:slave log mysql Mysql 配置 master 为主 数据库

背景

  • 项目中某些设备,包含两块主控板,需要实现某一块板卡拔掉之后,另一块主控板继续提供服务

基础环境

  • CentOS 7 x86-64位
  • mysql 8.0.39
  • nginx windows 1.18.0

基础参数

  • 虚拟机A:192.168.100.100
  • 虚拟机B:192.168.100.110
  • 宿主机:192.168.0.5

主备配置

  • 默认已成功安装mysql,以后再增加安装文档链接(虚拟机部署时,我一般部署一个,然后克隆过去,修改一下参数就行)。
  • 通过虚拟机克隆的,修改一下mysql在初始化数据库时,指定的data目录下auto.cnf文件,保证主备uuid唯一。

#data/auto.cnf配置
[auto]
server-uuid=dd18c317-86ce-xxxx-xxxx-000c296b2ece

#uuid一致时,开启slave时,所报错误
[ERROR] [MY-013117] [Repl] Replica I/O for channel ‘’: Fatal error: The replica I/O thread stops because source and replica have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: MY-013117

  • 用户准备,数据同步时,slave需要一个用户连接到master,用以监听master事件,然后进行binlog的io操作
  • 两台mysql服务都执行以下SQL

#创建用户
create user ‘sync’@‘%’ identified by ‘123456’;
#授权账号复制权限
grant replication slave on . to ‘sync’@‘%’;
#刷新配置
FLUSH PRIVILEGES;

互为主备配置

  • windows下默认为my.ini,linux在mysql初始化数据库时(–initialize时),可指定,一般定义为my.cnf
  • 以下为mysql配置my.cnf,能满足双主的简单示例,复制之后根据注释小小修改以下就行

[mysqld] #基础配置
basedir=/usr/local/apps/mysql8/
datadir=/usr/local/apps/mysql8/data
socket=/usr/local/apps/mysql8/tmp/mysql.sock #可删,默认在/tmp目录下
#主从配置
server-id=2 #需改,保证唯一
character-set-server=UTF8MB4
#本地中继文件名,从服务接收过来要存在data目录下
relay-log = mysql-relay-bin
#服务器的二进制文件名称,作为主,必配项,要给slave提供的文件
log-bin=log-bin
#不用同步的库
replicate-ignore-db = mysql
replicate-ignore-db = infomation_schema
replicate-ignore-db = performance_schema
[mysql_safe]
#默认在/var/log/mariadb/mariadb.log中
log-error=/usr/local/apps/mysql8/log/mysqld.log

  • 只是进行主备配置的话,master删掉replicate-xxx那三个配置、relay-log,slave删掉log-bin

服务设置

  • 以A机为master,B为slave示例(主备),反过来修修改改再执行一遍(双主)
  • 查询A机master状态,列File和Position需要在slave设置的时候使用

master status

  • B作为A的备用服务,需要设置,以A作为master的相关参数

STOP SLAVE;

CHANGE MASTER TO
master_host = ‘192.168.100.110’,
master_user = ‘sync’,
master_password = ‘123456’,
– 主服务器数据库上的File值
master_log_file = ‘log-bin.000002’,
– 主服务器数据库的Position值
master_log_pos = 1476,
get_master_public_key=2;

START SLAVE;

  • 这就完了,然后去随便修修改改,测试一下对端数据库是否会变化
  • 是服务级别的同步,创建一个数据库也会被同步过去

Nginx实现VIP

  • 需要nginx1.9以上,支持stream
  • 修改nginx.conf

nginx配置

故障排查

  • 设置master/slave之后,如果发现数据更新未同步,查看slave状态,Last_IO_Error会显示最后一次失败的简要说明
    主备报错
  • 日志查看
    • 如果是mysql启动问题,查看/var/log/message
    • 如果是运行期间的问题,默认查看var/log/mariabd/mariabd.log
  • 不知道日志在哪里时,查看mysql线程:ps -ef | grep mysql;里面有详细参数
    mysql线程

标签:slave,log,mysql,Mysql,配置,master,为主,数据库
From: https://blog.csdn.net/qq_36075491/article/details/142858747

相关文章

  • 阿里云Milvus配置监控告警
    阿里云Milvus提供了告警设置功能,通过对重要的监控指标设置报警规则,可以实时了解实例的运行状况,及时处理潜在风险,保障实例稳定运行。背景信息阿里云Milvus的监控报警是通过阿里云云监控产品实现的。通过云监控,您可以设置监控项,在触发监控项报警规则时,通知报警联系组中的所有联......
  • vim安装及配置
    以下是你安装Vim及使用插件的过程总结:1.安装Vim你已经在系统上安装了Vim作为编辑器,具体方式可能包括以下几种方式之一:使用系统包管理器安装(例如sudoaptinstallvim)。或者,手动编译Vim以获得最新版本。2.安装Node.jsCoc.nvim依赖于Node.js作为其底层运行环......
  • CANFD通信基础配置与介绍
    英飞凌TC397的CAN接口符合CAN2.0B标准,支持高速、低速和单线CAN通信。它具有丰富的CAN控制功能、数据缓存、错误检测和纠错机制,可保证稳定、可靠的通信。该微控制器还支持CANFD(FlexibleData-Rate)协议,可提供更高的数据传输速率和更灵活的通信方式。CAN通信是车载局域网通信的......
  • vite打包 删除console,还有拆分太大的包配置
    在Vite中,你可以通过使用Rollup插件来自动去除console.log语句。一个常用的插件是rollup-plugin-terser,它能够压缩和优化代码,包括去除调试语句。以下是如何在Vite中配置该插件的步骤:安装插件:首先,你需要安装terser和rollup-plugin-terser:npminstallterserrollu......
  • Scala连接数据库(mysql,redis)
    1、Scala连接mysql数据库:importjava.sql.{Connection,DriverManager,PreparedStatement,ResultSet}objectmysqlConn{defmain(args:Array[String]):Unit={Class.forName("com.mysql.jdbc.Driver")valconn:Connection=DriverManager.getCon......
  • 【MySQL】内置函数
    >作者:დ旧言~>座右铭:松树千年终是朽,槿花一日自为荣。>目标:了解MySQL的相关的内置函数,并能熟练使用。>毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安!>专栏选自:带你玩转MySQL>望小伙伴们点赞......
  • centos 让 mysql 随系统启动
    [root@VM-8-12-centos~]#systemctlenablemysqlFailedtoexecuteoperation:Nosuchfileordirectory systemctlstartmysqldJobformysqld.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemctlstatusmysqld.service"......
  • mysql5.7及以后版本设置密码
    开启skip-grant-tables配置由于安装时没有指定密码,需要配置`/etc/my.cnf`(或者`/etc/mysql/my.cnf`等已存在的配置文件),在[mysqld]下一行加上skip-grant-tables,表示无密码登入`vim/etc/my.cnf`输入“:wq”保存退出完成后重启mysqlsystemctlrestartmysqld重启后,重新登录mysq......
  • C++在vscode中的code runner配置/环境配置
    C++在vscode中快捷运行(coderunner)一、配置tasks.json在vscode中创建文件夹或打开文件夹,会发现文件夹下多了一个.vscode文件夹,在该文件夹下创建tasks.json文件,并添加一下内容{"version":"2.0.0","tasks":[{"type":"shell","la......
  • Neo4j的下载与配置
    本篇文章为java8与配套的neo4j的下载与配置一、JDK的检查注意如果下载过多个java版本,需要使jdk1.8的环境变量在其他版本上面cmd中输入java,出现下面的显示,说明下载成功二、Neo4j的下载与环境变量配置1.Neo4j的下载从Neo4j官网中下载Neo4jcommunity版本(注意要下载3.xx版......