| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> MySQL主从复制配置总结 -> 正文阅读 |
|
[系统运维]MySQL主从复制配置总结 |
一、MySQL主从复制1.1、MySQL主从复制简介
MySQL横向扩展解决方案 在多个从库之间扩展负载以提高性能。在这种环境中,所有写入和更新在主库上进行。但是,读取可能发生在一个或多个从库上。该读写分离模型可以提高写入的性能(由于主库专用于更新),同时在多个从库上读取,可以大大提高读取速度。 1.2、为什么要做主从复制
1.3、MySQL主从复制原理MySQL主从复制涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点 主节点 binary log dump 线程 当从节点连接主节点时,主节点会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主节点上的bin-log加锁,当读取完成,甚至在发动给从节点之前,锁会被释放。 从节点 I/O 线程 当从节点上执行`start slave`命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I/O线程接收到主节点binlog dump 进程发来的更新之后,保存在本地relay-log中。 从节点 SQL 线程 SQL线程负责读取relay log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性。 对于每一个主从连接,都需要三个进程来完成。当主节点有多个从节点时,主节点会为每一个当前连接的从节点建一个binary log dump 进程,而每个从节点都有自己的I/O进程,SQL进程。从节点用两个线程将从主库拉取更新和执行分成独立的任务,这样在执行同步数据任务的时候,不会降低读操作的性能。比如,如果从节点没有运行,此时I/O进程可以很快从主节点获取更新,尽管SQL进程还没有执行。如果在SQL进程执行之前从节点服务停止,至少I/O进程已经从主节点拉取到了最新的变更并且保存在本地relay日志中,当服务再次起来之后,就可以完成数据的同步。 要实施复制,首先必须打开Master 端的binary log(bin-log)功能,否则无法实现。 整个复制过程实际上就是Slave 从Master 端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。如下图所示: ?复制的基本过程如下: 从节点上的I/O 进程连接主节点,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;主节点接收到来自从节点的I/O请求后,通过负责复制的I/O进程根据请求信息读取指定日志指定位置之后的日志信息,返回给从节点。返回信息中除了日志所包含的信息之外,还包括本次返回的信息的bin-log file 的以及bin-log position;从节点的I/O进程接收到内容后,将接收到的日志内容更新到本机的relay log中,并将读取到的binary log文件名和位置保存到master-info 文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log 的哪个位置开始往后的日志内容,请发给我”;Slave 的 SQL线程检测到relay-log 中新增加了内容后,会将relay-log的内容解析成在祝节点上实际执行过的操作,并在本数据库中执行。 1.4、MySQL主从同步配置的基本步骤有很多种配置主从同步的方法,可以总结为如下的步骤:
二、MySQL主从复制配置2.1、环境准备工作
首先在两台机器上装上MySQL,保证正常启动可以使用 MySQL 5.7安装参考:Linux基础3:CentOS7安装配置JDK、Mysql 和Tomcat服务器环境 2.2、Master-Server 配置配置 Master 以使用基于二进制日志文件位置的复制,必须启用二进制日志记录并建立唯一的服务器ID,否则则无法进行主从复制。 (1)修改主服务器配置文件my.cnf,开启binlog ,每台服务器设置不同的 server-id
编辑mysqld下的配置文件,设置log_bin和server-id
(2)进入数据库,创建用于数据同步的账户(目的,让从服务器来复制数据)
这个配置的含义就是创建了一个数据库用户repl,密码是yourPassword, 在从服务器使用repl这个账号和主服务器连接的时候,就赋予其REPLICATION SLAVE的权限, *.* 表面这个权限是针对主库的所有表的,其中xxx就是从服务器的ip地址。 (3)? 重启MySQL让配置文件my.cnf生效,查看主库状态
启动成功之后,查看我们的配置是否起作用 查看主库状态
2.3、Slave-Server 配置如果要设置多个从库,则每个从库的server-id与主库和其他从库设置不同的唯一值。 (1)修改配置文件my.conf
重启数据库使配置生效
(2)进入数据库,配置主从库通信 要设置从库与主库进行通信复制,使用必要的连接信息配置从库在从库上执行以下代码
这里面的xxx是主服务器ip,同时配置端口,repl代表访问主数据库的用户上述步骤执行完毕后执行 (3) start slave启动从服务器复制线程
查看复制状态命令,\G表示换行查看
当两个圆圈中的状态显示为yes时,代表配置成功 检查主从复制通信状态
2.4、测试主从复制在 Master-Server 创建试库和用户表
在 Slave-Server 查看是否同步过来
2.5、MySQL主从复制命令总结
参考链接: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 20:42:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |