master节点怎么安装mysql软件_Windows下搭建MySQL Master Slave

article/2025/10/2 6:03:26

转:http://www.cnblogs.com/gaizai/p/3248207.html

http://www.cnblogs.com/gaizai/archive/2013/03/15/2961868.html   MySQL表数据迁移自动化

http://www.cnblogs.com/gaizai/archive/2012/10/23/2735556.html  Ubuntu10下MySQL搭建Master Slave

一、背景

服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用keepalived这个HA工具,但是我们可以接受人工进行切换,有什么好的方案呢?

二、几种Master/Slave逻辑架构图

91e3e0ae1c537bab6ef5e440b7f06b4b.png

(Figure1:单Master-单Slave)

20edd80fdc6d5b003dccee5bd5a0ca69.png

(Figure2:单Master-多Slave)

0cfbb79f70d949a10ba9849020dc1879.png

(Figure3:单Master-级联Slave)

057bea7eecdd9a4ab5721eb02cad7fdc.png

(Figure4:Master/Slave部署逻辑图)

三、搭建过程

环境:Windows Server 2008 R2 + mysql-5.5.22-winx64

主服务器(Master):192.168.1.66

从服务器(Slave):192.168.1.67

使用Master/Slave架构,Slave为只读模式;

(一)配置主服务器(Master)

1.编辑数据库配置文件my.ini,在[mysqld]标签下面加入下面代码:

log-bin=mysql-bin

server-id=1

innodb_flush_log_at_trx_commit=1

sync_binlog=1

binlog_do_db=barfoo_weibo_hottop

binlog_ignore_db=mysql

说明:

1) log-bin=mysql-bin启用Binary Log,会在数据文件夹中生成一系列的滚动文件,类似:mysql-bin.000002

2) server-id=1中的1可以任定义,只要是唯一的就行,为了与其它Master和Slave进行区别;

3) innodb_flush_log_at_trx_commit = 0,每秒写一次trax log,并执行fsync;

innodb_flush_log_at_trx_commit = 1,每次trax 提交的时候写一次trax log, 并执行fsync;

innodb_flush_log_at_trx_commit = 2,每次trax 提交的时候写一次trax log, 不会执行fsync;

4) sync_binlog=1表示异步进行日志记录;

5) binlog_do_db=barfoo_weibo_hottop是表示只对数据barfoo_weibo_hottop做日志记录,如果想记录多个数据库,添加多几条binlog_do_db就可以了;

6) binlog_ignore_db=mysql表示忽略备份mysql;不加binlog_do_db和binlog_ignore_db,那就表示备份全部数据库。

2.重启MySQL服务

3.在Master服务器新建一个用户赋予“REPLICATION SLAVE”的权限,你不需要再赋予其它的权限,这里指定的IP为Slave的IP;

mysql>CREATE USER viajar@'192.168.1.67' IDENTIFIED BY 'BarFoo2013';

mysql>GRANT REPLICATION SLAVE ON *.* TO viajar@'192.168.1.67' IDENTIFIED BY 'abc2013';

4.在Master服务器执行下面的脚本,让数据库只能读;

mysql>FLUSH TABLES WITH READ LOCK;

5.拷贝数据库文件夹和ibdata1文件到本地临时文件夹中,马上执行下面的步骤;

6.查看Master服务器的状态,记下File及Position的值,后面设置Slave服务器的时候需要用到;

mysql>SHOW MASTER logs;

mysql>SHOW MASTER STATUS;

c6f1e6e560bbdfcdffd6a268747f9ca0.png

(Figure1:Master状态)

7.对表进行解锁,恢复数据库读写;

mysql>UNLOCK TABLES;

8.使用FTP等工具把第5步骤的临时文件传到Slave服务器;

(二)配置从服务器(Slave)

1.编辑数据库配置文件my.ini,在[mysqld]的下面加入下面代码,可以自己定义数值,只要保证唯一的就行,与Master的能区分开就行;

server-id=2

read-only=1

2.重启MySQL

3.登录MySQL服务器,执行下面的脚本命令:

mysql>CHANGE MASTER TO

MASTER_HOST='192.168.1.66',

MASTER_USER='viajar',

MASTER_PASSWORD='abc2013',

MASTER_PORT=3309,

MASTER_LOG_FILE='mysql-bin.000005',

MASTER_LOG_POS=7179684,

MASTER_CONNECT_RETRY=30;

说明:

1) MASTER_HOST:Master服务器的IP;

2) MASTER_USER:配置主服务器时建立的用户名;

3) ASTER_PASSWORD:用户名对应的密码;

4) ASTER_PORT:主服务器mysql端口,如果未曾修改,默认即可;

5) MASTER_LOG_FILE:log文件名,参考Figure1;

6) MASTER_LOG_POS:只上次备份时的log文件的偏移量,参考Figure1;

7) MASTER_CONNECT_RETRY:重新连接Master的时间间隔,单位为秒;

4.启动Slave进程,执行下面的脚本命令;

mysql>START SLAVE;

5.检查主从同步状态,执行下面的脚本命令,其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

mysql>SHOW SLAVE STATUS;

3cbc66e7edfa9711213e15b12badc960.png

(Figure2:Slave状态1)

3b94d498c40b3baa56092295e548c888.png

(Figure3:Slave状态2)

6.查看Slave服务器的MySQL日志;

aa0db73f620cb31463e9c38633fe08a8.png

(Figure4:Slave日志文件)

四、补充说明

1. 查看帮助

mysql>help

2. 查看slave帮助

mysql>help slave

3. 查找当前有哪些二进制日志文件

mysql> show binary logs;

4. 删除mysql-bin.000018之前的所有二进制日志文件

mysql> purge binary logs to 'mysql-bin.000018';

5. 从 MySQL 5.1.12 开始,能够用以下三种形式来告终:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混杂形式复制(mixed-based replication, MBR)。相应地,binlog的款式也有三种:STATEMENT,ROW,MIXED。MBR 形式中,SBR 形式是默认的。

#binlog_format="STATEMENT"

#binlog_format="ROW"

#binlog_format="MIXED"

当然了,也能够在运行时动态修正binlog的款式。例如

mysql> SET SESSION binlog_format = 'STATEMENT';

mysql> SET SESSION binlog_format = 'ROW';

mysql> SET SESSION binlog_format = 'MIXED';

mysql> SET GLOBAL binlog_format = 'STATEMENT';

mysql> SET GLOBAL binlog_format = 'ROW';

mysql> SET GLOBAL binlog_format = 'MIXED';

6. MySQL同步故障:Slave_SQL_Running:No

mysql> slave stop;

mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

mysql> slave start;

五、疑问

(一) 复制级别有以下几种,默认级别是那种?如何显式设置这个值?

1. Row Level:5.1.5开始支持。mater记录每行数据的更改日志,slave根据日志逐行应用。优点:数据一致性更有保障。缺点:可能造成日志文件比较大;

2. Statement Level:master记录每个执行的query语句以及一些上下文信息,slave节点根据这些信息重新在slave上执行。优点:binary log比较小。缺点:某些情况下数据一致性难以保障;

3. Mixed Level:MySQL根据情况选择哪种复制方式。5.1.8开始支持。

(二) 常用架构有以下几种,我想要的效果是:当MasterA宕机之后,MasterB还能读写,在MasterA在恢复之后重新让MasterA成为主Master。

1. Master-Slaves:通常都采用这种方式;

2. Dual Master(Master-Master):2个master节点互相同步更新。因为MySQL的异步复制方式,为了防止数据冲突造成的不一致性,一般仅将其中一台用于写操作,另一台不用或仅用于读操作。目的是其中一台master停机维护或者故障中断时可以使用另一台master;

3. 级联复制(Master-Slaves-Slaves):在Master Slaves中,如果slaves过多replication将增加master的负载,这时可以让master只向其中几台slave分发更新日志,这几台slave作为一级节点再向下级节点分发更新日志。

(三) 如果slave报错或者宕机一段时间,那么应该如何重新同步宕机时间master的数据到slave呢?

(四) 在Master设置binlog_do_db=test的时候,如何可以设置记录多个数据库?

解答:直接在配置文件my.ini加入多条binlog_do_db就可以了;

(五) 每天的日志文件就有10GB,如何清理?如何维护?有没什么设置或者方法可以减少日志量呢?

六、参考文献


http://chatgpt.dhexx.cn/article/xFXPltp6.shtml

相关文章

虚拟机安装ubuntu20服务器版,【Linux】 Windows安装VMware虚拟机安装Ubuntu系统20.04LTS图文教程...

这是一期VMware虚拟机安装Ubuntu系统的教程,用虚拟机是由于它安全性,可靠性高!测东西坏了重装一下又能继续了,能够不断的循环使用,方便快捷不会影响到你的电脑!那么直接开始吧!!html…

Docker 实践指南(一)下载、配置及应用等常见命令

一、下载及启动: 1、docker 启动 2、docker 删除 ubuntu中docker彻底卸载 - 饭米雪 - 博客园网上很多博主提供的命令行,其实并不能完全卸载docker。。。 #删除某软件及其安装时自动安装的所有包 sudo apt-get autoremove docker docker-ce docker-htt…

2022 rog 枪神6p Ubuntu20.04 AX211无线网卡 驱动无效

新买的电脑rog 枪神6p,装Ubuntu20.04.4,无线网卡是AX211 装20.04.1失败,装20.04.4成功 系统装好以后,没wifi驱动,右上角没有wifi 这是因为目前20.04 lts默认的内核是5.13,而根据https://wireless.wiki.k…

cmd文件闪退问题追踪办法

在日常中,经常会遇到一些.cmd文件双击打开的时候闪退的问题,这个时候我们看不到日志也无从看报错信息,因此很难分析问题,这个时候有个小技巧,找一个编辑器,如:Edit等,对cmd文件进行编…

cmd文件和bat文件的区别+一个的bat脚本+bat基础知识

一:cmd文件和bat文件的区别 cmd和bat文件都是批处理文件,都是靠cmd.exe解析执行,两者本质上没有区别,都是简单的文本编码方式,都可以用记事本创建、编辑和查看。两者所用的命令行代码也是共用的,只是cmd文…

cmd批量文件重命名

rename *.* asflh???.*cd 进入目录文件夹,对象是当前目录下的文件, . 表示所有格式的所有文件, asflh 添加asflh前缀,写在后面添加后缀 通配符*表示任意多个字符,?表示一个字符 -----------------------更新 fo…

CMD如何直接运行文件

CMD如何直接运行文件 方式一(简单粗暴):直接将写好的代码文件改后缀为.bat,然后双击运行方式二:打开cmd,然后将要执行的文件丢到cmd里,按回车就OK了方式三:运行某种类型的文件,使用start关键字文件的路径,或直接省略start C:\Users\DEll>start C:\Users\DEll\Desktop\conne…

windows cmd 查看文件目录树

windows cmd 查看文件目录树 tree /?:命令提示 tree:不输入任何参数,输出一棵目录树 不显示文件,只显示目录; D:. ├─ets │ ├─FormAbility │ ├─MainAbility │ │ └─pages │ ├─model │ └─Sec…

CMD文件详解与DSP存储空间

CMD文件详解与DSP存储空间 CMD的全称为链接命令配置文件。以ROM/FLASH和RAM两类存储器为对象,用户通过编写CMD文件,来管理和分配系统中的所有物理存储器和地址空间。DSP芯片的片内存储器,只要没有被出厂占用,用户都可以全权支配。…

cmd 执行html文件,cmd执行bat文件 cmd文件和bat文件有什么区别?

cmd怎么执行dos下的bat文件在文件目录直接输入bt4.bat就可以了。记住要输入完整的文件名,包换后缀名。比如:11.bat在D盘根目录:在D:\>后面直接输入11.bat 回车。 cmd下执行bat文件的命令 在cmd下执行bat文件的命令的命令 新建一个.bat批处理文件,文件命令为@ECHO OFF c…

CCS中CMD文件

CMD使用举例 技术栈提前认知 1. 如何查看CCS中编译器版本? 概述 TI官方例程分析 1. 在CMD文件中进行配置 //判断当前编译器当前版本,上面有提到如何查看编译器版本 #if __TI_COMPILER_VERSION__ > 15009000 #if defined(__TI_EABI__) //判断“输出格式”…

[DSP学习笔记]cmd文件的讲解

一、前言 在笔者学习F28335的过程中,发现网上少有对于cmd文件的讲解,而学习DSP,肯定是要编写或修改cmd文件的。故笔者基于自己的学习经验,给出了自己对于cmd文件的理解。 在正式开始学习cmd文件之前,我们首先需要知道…

QT 运行时出现U1077:“cl”返回代码“0x1”报错时的解决思路

作为一个萌新小白,在第一次给QT配置环境并运行时出现了如下错误 遇到这个问题时我上网查找解决办法,但是都没有用,我在这个问题上卡了两三天,试了各种方法! 后来我无意中找到了解决办法,现分享给大家。 首…

0x1、寄存器

通用寄存器 8086的所有CPU都是16位的,可以存放两个字节。 AX、BX、CX、DX这四个寄存器通常用来存放数据,被称为通用寄存器。 因为8086CPU上一代都是8为的寄存器。 因此,为了兼容上一代寄存器,AX、BX、CX、DX这四个寄存器都是两个可…

·穷途末路之举·解决VirtualBox启动问题-Error relaunching VirtualBox VM process 5/terminated with exit code1(0x1)

近来需安装linux虚拟机进行一些学习,选择使用VM VirtualBox安装ubuntu系统。 VirtualBox配置完成之后,在启动时,报错,内容如下: “Failed to open a session for the virtual machine exit code 1 (0x1) – E_FAIL (0x…

WIN10设置计划任务执行报(0x1)调用的函数不正确或调用了未知函数

前提:此任务的exe在本地可以正常执行,同时在修改前可以使用计划任务定时执行。排除脚本问题及权限问题。 报错如图: 相比之前可以使用计划任务执行的脚本,新脚本增加了读取配置文件的操作。怀疑是读取不到配置文件导致。 通过查…

进制的转换

通常使用的基本数据类型是十进制的就是0,1,2,3,4,5,6,7,8,9,10,11,12............ 通过八进制表达就是 01,02&#xff0c…

【Python】初学者也可以实现的人脸识别系统-0x1

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…

解决windows服务器上定时任务执行时报0x1错误,但是手动执行顺利完成

最近修改定时任务重新部署后,定时运行后运行结果为0x1,但是手动执行后,任务可以顺利完成。 windows官网解释如下: 0x0: 操作已成功完成 0x1: 调用的函数不正确或调用了未知函数。 因为手动可以执行&…

Windows定时执行.py文件报(0x1)错

Windows定时执行.py文件报(0x1)错 按照博客https://blog.csdn.net/David_jiahuan/article/details/99960427,创建定时任务后报错(0x1)如下图,在终端里运行py文件正常,排除代码问题。 在网上查资料,有因为是…