MySQL Replication常用SQL、应用、文件、流程、模式_MySQL
bitsCN.com
MySQL Replication常用SQL、应用、文件、流程、模式
无聊时写的,算科普吧,毕竟内置的Replication是MySQL的骄傲
㈠ SQL语句篇
管理主库部分
show master logs
列出主库二进制日志
show master status
列出当前主库二进制日志状态
show slave hosts
列出连接到主库的备库信息
show binlog events in 'log_name'
列出二进制日志中的事件
reset master
置空二进制日志索引文件,并创建一个新的二进制日志
purge master logs to 'log_name'
purge master logs before 'date'
删除主库的二进制日志
建议删除流程:
① 目标日志确认如下:
在主库:show master logs
在备库:show slave status[每个备库都执行,抓取延迟最大的备库]
② 备份
③ purge
管理备库部分
change master to master_**
告诉备库如何连接到主库并重放其二进制日志
参数较多较杂,请自行参阅手册
reset slave
删除master.info、relay-log.info以及所有中继日志,并新建一个中继日志
show slave status
查看当前备库状态
输出较多,下面捡几个重要的谈谈
Slave_IO_State、Slave_IO_Running、Slave_SQL_Running:表示IO线程和SQL线程健康状况
Master_Log_File:IO线程当前正在读取的主库的二进制日志的名称
Read_Master_Log_Pos:当前主库的二进制日志中,IO线程已经读取的位置
Relay_Log_File:SQL线程当前正在读取和执行的中继日志的名称
Relay_Log_Pos:当前中继日志中,SQL线程已经读取和执行的位置
Exec_Master_Log_Pos:同步到备库的二进制日志的位置
能借助该输出来计算复制延迟:
Read_Master_Log_Pos-Exec_Master_Log_Pos:表示SQL线程延迟,进而表示了主备是否同步
顺道提一点,二进制日志坐标:Position,减去Read_Master_Log_Pos:表示IO线程延迟
start slave
启动备库SQL线程/IO线程
stop slave
停止备库SQL线程/IO线程
㈡ 应用篇
数据分布
→给地理上互相隔离的IDC分发数据
热备份
→复制是备份的技术补充,但不能代替备份
读扩展
→负载均衡
报表分析
→在不影响主库业务的情况下,月底的审计和报表分析可放到备库上做
升级测试
→用最新版本的mysql做备库
故障转移
→提升备库为主库,最小化宕机时间
㈢ 文件篇
master.info
记录备库连接主库所需要的信息,如:主机、用户名、密码、当前二进制日志坐标等
同时,他也能告诉主库:"我需要某个日志的某个位置之后的内容,请发给我"
relay-log.info
记录当前备库正在复制的二进制日志和中继日志的坐标
binlog index
记录主库磁盘上二进制日志文件
relay log
存储IO线程从主库复制的二进制日志事件
relay log index
作用同binlog index
㈣ 流程篇
⑴ 主库记录二进制日志:按事务提交的顺序记录事件
⑵ 备库将主库的二进制日志复制到本地中继日志
启动IO线程
发起TCP/IP连接
在主库启动binlog dump线程
读取主库二进制日志
IO线程记录到relay log和master.info
⑶ 备库读取并重放二进制日志事件
㈤ 模式篇
复制模式可分:STATEMENT和ROW,通过binlog_format控制
没有哪种模式能胜任任何场景,谓之:存在即是合理
MySQL能在这两种模式动态却换(binlog_format='MIXED')
缺省以STATEMENT运行,当无法正确复制时则以ROW运行
下面列出他们各自的优缺点
ROW模式
优点
几乎没有基于行的复制无法处理的场景
更少的锁竞争,因为对强串行化的需求降低
更低的CPU花费,因为没有必要在构造SQL上下文信息
更好的保证了复制到备库的数据的品质
更快的定位和解决数据不一致,如当找不到修改的行时,ROW模式会使整个复制过程停止而STATEMENT不会
缺点
无法确定执行了什么SQL
黑盒子,很难定位出故障的地方
占用更多的磁盘空间
更多的网络带宽开销
STATEMENT模式
优点
基于行的复制整个过程基本上就是执行SQL
这很容易定位问题
缺点
无法正确复制,特别是当涉及到存储过程、触发器、函数等
这会失去复制的意义
bitsCN.com

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이진 연산은 이진수를 기반으로 하는 연산 방법으로 덧셈, 뺄셈, 곱셈, 나눗셈이 포함됩니다. 기본 연산 외에도 이진 연산에는 논리 연산, 변위 연산 및 기타 연산이 포함됩니다. 논리 연산에는 AND, OR, NOT 등의 연산이 포함되며 변위 연산에는 왼쪽 시프트 연산과 오른쪽 시프트 연산이 포함됩니다. 이러한 연산에는 해당 규칙과 피연산자 요구 사항이 있습니다.

이진수는 1과 0으로 표현됩니다. 16비트 16진수 체계는 2진수 표현을 16진수로 변환하기 위해 {0,1,2,3…..9,A(10),B(11),…F(15)} 비트를 나타냅니다. 문자열 ID는 최하위 쪽부터 시작하여 니블이라고 하는 4비트 청크로 그룹화됩니다. 각 블록은 해당하는 16진수로 대체됩니다. 16진수와 2진수 표현을 명확하게 이해하기 위해 예를 살펴보겠습니다. 001111100101101100011101 3 E 5 B&nb

EDVAC에는 두 가지 주요 개선 사항이 있습니다. 하나는 바이너리를 사용하는 것이고, 다른 하나는 저장된 프로그램을 완성하는 것입니다. 이는 하나의 프로그램 명령에서 다음 명령으로 자동으로 진행할 수 있으며 해당 작업은 명령을 통해 자동으로 완료될 수 있습니다. "명령어"란 기계의 메모리 장치에 코드 형태로 입력되는 데이터와 프로그램을 포함합니다. 즉, 데이터를 저장하는 메모리 장치와 동일한 메모리 장치를 사용하여 작업을 수행하는 명령을 저장하는 새로운 개념입니다. - 저장된 프로그램이라고 합니다.

Golang에서 바이너리 파일을 읽는 방법은 무엇입니까? 바이너리 파일은 컴퓨터가 인식하고 처리할 수 있는 데이터가 포함된 바이너리 형식으로 저장된 파일입니다. Golang에서는 몇 가지 방법을 사용하여 바이너리 파일을 읽고 이를 원하는 데이터 형식으로 구문 분석할 수 있습니다. 다음은 Golang에서 바이너리 파일을 읽는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저, 파일 객체를 반환하는 os 패키지의 Open 함수를 사용하여 바이너리 파일을 열어야 합니다. 그럼 우리는 만들 수 있습니다

컴퓨터가 이진 시스템을 사용하는 주요 이유: 1. 컴퓨터는 논리 회로로 구성됩니다. 논리 회로는 일반적으로 스위치가 켜지고 꺼지는 두 가지 상태만 가지며 이 두 상태는 "1"과 "0"으로 표시될 수 있습니다. . 바이너리 시스템에서는 0과 1의 두 숫자만 사용하므로 전송 및 처리 시 오류가 덜 발생하므로 컴퓨터의 높은 신뢰성이 보장됩니다.

제목: Go 언어에서 16진수를 2진수로 변환하는 방법을 쉽게 배웁니다. 컴퓨터 프로그래밍에서는 서로 다른 진수 간의 변환 작업이 필요한 경우가 많습니다. 그중에서도 16진수와 2진수 간의 변환이 비교적 일반적입니다. Go 언어에서는 몇 가지 간단한 코드 예제를 통해 16진수를 2진수로 변환할 수 있습니다. 먼저 16진수와 2진수의 표현방법을 살펴보자. 16진수는 숫자를 표현하는 방식으로 0~9, A~F를 사용하여 1을 표현합니다.

Golang이 바이너리 파일을 처리할 수 있나요? Go 언어에서는 바이너리 파일을 처리하는 것이 매우 일반적이고 편리합니다. 내장된 패키지와 메소드를 사용하면 바이너리 파일을 쉽게 읽고, 쓰고, 조작할 수 있습니다. 이 문서에서는 Go에서 바이너리 파일을 처리하는 방법을 설명하고 구체적인 코드 예제를 제공합니다. 바이너리 파일 읽기 바이너리 파일을 읽으려면 먼저 파일을 열고 해당 파일 객체를 생성해야 합니다. 그런 다음 Read 메서드를 사용하여 파일에서 데이터를 읽고 바이트 단위로 저장할 수 있습니다.
