mysql数据库主从同步读写分离(一)主从同步
1.mysql数据库主从同步读写分离
1.1.主要解决的生产问题
1.2.原理

a、为什么需要读写分离?
一台服务器满足不了访问需要。数据的访问基本都是2-8原则。
b、怎么做?
不往从服务器去写了,那就要主上写的操作都要同步到从(主从同步)
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将更改应用到自己的数据上。
把读的请求同步到从,把写的请求分发的主。(读写分离) 技术选型,myproxy
2.主从同步
2.1.准备两台数据库服务器
这里在一台计算机上模拟开启两台数据库服务,主从服务器配置好后如下图:

1.准备主服务器,并输出日志(方便定位问题),步骤如下:
a.拷贝已经按装好的数据库安装文件,并改名为 MySQL Server 5.5_master,拷贝完成后

b.找到my.ini文件修改端口号、安装路径、数据存储路径等

c.拷贝数据(如果不拷贝数据无法登录),登录用户等相关数据拷贝到b步骤中设置好的数据路径中,注意要在原始数据的my.ini中查看数据存放位置,当前查看情况如图所示:

d.安装及启动:
在该路径下D:\MySQL\MySQL Server 5.5_master\bin,执行如下命令:
mysqld --install MySQLXY --defaults-file="D:\MySQL\MySQL Server 5.5_master\my.ini" 安装服务
注意:MySQLXY是服务名称,可以任意取名称
defaults-file="D:\MySQL\MySQL Server 5.5_master\my.ini"是主数据库配置文件地址
net start MySQLXY 启动服务
sc delete MySQLXY 删除服务
安装成功后,可以在任务管理其中查看该服务:

e.在客户端中连接该数据

如可以正常连接,并使用则主数据看准备完成。当然在实际生产中主数据库就是我们平时正常的数据库。
2.准备从服务器,并输出日志(方便定位问题),步骤如配置主服务器一样
2.2.master服务器配置
在2.1中我们已经准备好了两台数据库服务器,现在将其中一台配置成master服务器,及主服务器,步骤如下:
a. 修改master方的mysql.ini
log-bin=mysql-bin #见备注
server-id=1 #服务id,一个集群中必须保证唯一
innodb_flush_log_at_trx_commit=1 #暂时不配置
sync_binlog=1 #暂时不配置
binlog_ignore_db=mysql #暂时不配置
binlog_checksum=none #暂时不配置
备注: log-bin=mysql-bin,解释(来自百度):
bin-log日志的定义和作用我就直接百度过来了,也很好理解的。
基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中;
作用:可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、MySQL的复制(主主数据库的复制、主从数据库的复制)
文件位置:默认存放位置为数据库文件所在目录下
文件的命名方式: 名称为hostname-bin.xxxxx (重启mysql一次将会自动生成一个新的binlog)
状态的查看:mysql> show variables like '%log_bin%';
以上这些都是百度复制过来的,我们看完后也很好理解了,bin-log日志也就是二进制日志,只要数据发生改变(增删改),都是记录到日志里。所以我们可以通过bin-log日志进行数据恢复。
b.重启master服务,登录,查看data文件如下图说明配置成功

c.授权savle服务器的使用的账号及权限
假设:
master主服务器: 192.168.1.101
slave从服务器 : 192.168.1.102
1) 授权给slave数据库服务器192.168.1.102(master用户,只对slave服务器开放)
语法为:GRANT REPLICATION SLAVE ON *.* to '用户名'@'192.168.0.102' identified
by ‘密码’;
Mysql> GRANT REPLICATION SLAVE ON *.* to 's1'@'192.168.0.102'identified by 'admin';
参数说明:
s1:slave连接master使用的账号
IDENTIFIED BY 'admin' :slave连接master使用的密码
192.168.0.102:slave IP地址
2)查询主数据库状态
Mysql> show master status;

记录 File 和 Position的值,在slave端使用。
2.3.从数据库slave配置
步骤如下:
a.修改slave服务器的配置文件my.ini将 server-id = 1修改为 server-id = 10,并确保这个 ID没有被别的MySQL服务所使用。
b.启动slave服务器,登录
c.在slave端,配置master链接信息 (执行语句)
1) 配置
Mysql> change master to
master_host='192.168.1.101', #master IP
master_user='s1', #master数据库通过GRANT授权的账号
master_password='admin', #master数据库通过GRANT授权的密码
master_port=3307, #master数据库的端口号
master_log_file='mysql-bin.000001', #master数据库中通过show master status显示的File名称
master_log_pos=1144 #master数据库的通过show master status显示的Position的值,表示从1144操作的步骤开始执行同步
2) (重启)连接
Mysql> start slave;
3)主从同步检查
show slave status;
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
d.测试
1) 在master上,建库、建表、添加数据
2) 刷新slave库,记录也存在
由此,整个MySQL主从复制的过程就完成了,接下来,我们进行MySQL读写分离的安装与配置。
mysql数据库主从同步读写分离(一)主从同步的更多相关文章
- mysql 主从同步-读写分离
主从同步与读写分离测试 一. 实验环境(主从同步) Master centos 7.3 192.168.138.13 Slave ...
- Mysql读写分离与主从数据库设置方案
Mysql读写分离与主从数据库设置方案 亿仁网 18-10-0711:31 Mysql无非四个功能:增,删,改,读.而将增删改和读分离操作.这样有利于提高系统性能.下面是非常直观的操作: 1.配置: ...
- 使用docker 实现MySQL主从同步/读写分离
1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...
- mysql主从同步--读写分离。
1.mysql 安装参考 https://www.cnblogs.com/ttzzyy/p/9063737.html 2. 主mysql,从mysql 指定配置文件启动 mysqld --defaul ...
- 聊聊Mysql主从同步读写分离配置实现
Hi,各位热爱技术的小伙伴您们好,好久没有写点东西了,今天写点关于mysql主从同步配置的操作日志同大家一起分享.最近自己在全新搭建一个mysql主从同步读写分离数据库简单集群,我讲实际操作步骤整理分 ...
- Docker容器启动Mysql,Docker实现Mysql主从,读写分离
Docker容器启动Mysql,Docker实现Mysql主从,读写分离 一.Docker文件编排 二.配置主从复制 2.1 配置master 2.2 配置slave 三.验证主从复制 3.1 mas ...
- Mysql主从配置+读写分离
Mysql主从配置+读写分离 MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. ...
- Mysql主从配置+读写分离(转)
MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. 注:安装前须查看是否已经安装了 ...
- MySQL+Amoeba实现数据库主从复制和读写分离
MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...
随机推荐
- 事件驱动架构 (Event-Driven Architecture,EDA) 简介
EDA 是一种侧重于以生成/消费为基础的异步通信的架构模式.这主要对照于传统的基于线程的同步系统. EDA 是一种以事件 (event)为核心,提供事件产生,路由,消费已经结果回调等机制的架构模式. ...
- redis 连接超时。。
在虚拟机安装后.在项目中加入redis 想测试一下功能 然后在物理机死活连不上. 1.用物理机ping 虚拟机的IP 通.... 2.然后.把redis.conf 里面bind 0.0.0.0 依然没 ...
- 8.2.1-优化SELECT语句
8.2.1.优化 SELECT 语句 由SELECT 语句组成的查询,在数据中执行所有的查询.对这类语句的调优排在首位,无论是调优动态web网页的二级响应时间,还是减少生成巨大隔夜报告的时间. 而且, ...
- 温故而知新-robots.txt语法教程
用几个最常见的情况,直接举例说明: 1. 允许所有SE收录本站:robots.txt为空就可以,什么都不要写. 2. 禁止所有SE收录网站的某些目录: User-agent: * Disall ...
- Maven项目指定JDK版本
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...
- .Net MVC 获取Response和Request对象
通过 System.Web.HttpContext.Current 获取 public static string ConstractExportExcel(List<ERP_Contrac ...
- 编写优秀Bug报告的艺术及案例分析
编写优秀Bug报告的艺术及案例分析 ---Rex Black原著<Fine art of writing a good bug report > ---Kiki翻译于2005/5/28 前 ...
- Node 在 Centos7 系统下的安装
1,下载二进制包 https://nodejs.org/zh-cn/download/ 根据自己的需求选择对应的版本,不推荐使用源码包,容易出现错误 2,上传到 linux 服务器 3, 解 ...
- oracle的备份与恢复
转自:https://blog.csdn.net/kepa520/article/details/78958029 dba的职责: 1.安装和升级oracle数据库 2.建库.表空间.表.视图.索引. ...
- python中Strip()函数的用法
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列. 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符. str.strip([chars]) ...