四、Mysql主从同步
一、MySQL Replication介绍
MySQL Replication
Replication可以实现将数据从一台数据库服务器(master)复制到一或多台数据库服务器(slave)
默认情况下属于异步复制,无需维持长连接 通过配置,可以复制所有的库或者几个库,甚至库中的一些表 是MySQL内建的,本身自带的
三个步骤:
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,修改salve上的数据。
二、MySQL的主从配置
数据库的主从配置
1、准备和注意事项
MySQL的主从复制是通过binlog日志来实现的,
主从复制中的"主"指的是MySQL主服务器上的数据库,
"从"指的是MySQL从服务器上的数据库,且这种复制是基于数据库级别的,
为此从服务器中的数据库名称必须和主服务器中的数据库名称保持一致,那么,要想实现主从复制,
我们至少要有两个MySQL服务器
(最好是两个MySQL服务器分别位于不同的主机上,或者在一个主机上安装两个MySQL,端口不同即可)。
安装5.8的
https://blog.csdn.net/Fanpei_moukoy/article/details/81054231
具体步骤
1、官网:https://dev.mysql.com/
2、拉到网页底部,找到自己操作系统的版本,这里我选择linux7版本,右侧有个download按钮,鼠标单击进入下载页面


在网页看到是否登录进行下载,我们不登录,看到下面提示“不,谢了,我直接下载”,不要单击,鼠标放在上面,单击右键选择复制链接,拿到链接地址
3、在终端中使用wget命令直接下载
wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
务必要http方式下载 ,不然本地安装失败

4、添加mysql yum库到系统—Adding the MySQL Yum Repository(因为下载是rpm格式包)
格式:sudo rpm xxx.rpm

5、yum repolist all | grep mysq 查看
6、使用命令yum install安装
sudo yum install mysql-community-server
-------------------------------------------------------------------------------------------------------------------------------------
上面的配置略过,一台linux 从新搭建2个mysql版本不同的端口
-------------------------------------------------------------------------------------------------------------------------------------
2、Mysql主服务器配置
2.1、修改my.conf文件

在[mysqld]段下添加:
#主从复制的数据库的名字
binlog-do-db=master
#忽略mysql数据库
binlog-ignore-db=mysql
#启用二进制日志
log-bin=mysql-bin
#服务器唯一ID,一般取IP最后一段
server-id=16
2.2、重启mysql服务
service mysqld restart
2.3、创建一个用于slave和master通信的用户账号即授权数据复制的用户,使用master分配的用户账号读取master二进制日志。
mysql> CREATE USER 'repl'@'192.168.199.198' IDENTIFIED WITH mysql_native_password BY 'Ron_master_1';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.199.198';
2.4、刷新权限
mysql> FLUSH PRIVILEGES;
2.5、查询master的状态
mysql> show master status;

注意:这里会生成二进制文件,mysql-bin.000004,指明了position为120,Binlog_Do_DB是master,小编就在这里出了错误,修改了my.conf后,没有重新启动mysql的服务,就没有产生新的二进制文件。
3、从库配置
3.1、修改my.conf文件
mysql>change master to master_host='192.168.137.16',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=120;
3.2、配置连接
mysql>change master to master_host='192.168.137.16',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=120;
注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。
3.3、启动从服务器复制功能
Mysql>start slave;
3.4、检查从服务器复制功能状态:
mysql> show slave status
……………………(省略部分)
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
……………………(省略部分)
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
三、mycat配置Mysql读写分离
当MySQL按照之前的主从复制方式配置好集群以后,可以开启Mycat的读写分离机制,Mycat 1.4 支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,以以下的配置为例,表明一个从节点hostS1与一个主节点hostM1组成了标准的一主一从的读写分离模式:
四、Mysql主从同步的更多相关文章
- 三十四.MySQL主从同步 、主从同步模式
mysql51:192.168.4.51 主 mysql52:192.168.4.52 从 mysql50:192.168.4.50 客户机 1.MySQL一主一从 1.1 51,52 安装m ...
- mysql 主从同步-读写分离
主从同步与读写分离测试 一. 实验环境(主从同步) Master centos 7.3 192.168.138.13 Slave ...
- mysql 主从 同步原理及配置
一.在mssql 里头实现同步镜像,只能主库用而镜像库不能同时用,而mysql 主从同步可以实现 数据库的读写分离,主库负责 update insert delete ,从库负责select 这样一来 ...
- MySQL主从同步那点事儿
一.前言 关于mysql主从同步,相信大家都不陌生,随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时,将数据库的读写效率骤然下降,甚至不可用;为了解决此类问题,通 ...
- 基于mysql主从同步的proxy读写分离
mysql-proxy 简介 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载 ...
- windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致
原文:windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致 mysql主从同步的好处以及原理 之前看到很多新闻说某某的服务器奔溃,磁盘碎了,导致数据丢失 ...
- mysql主从同步原理及错误解决
mysql主从同步的原理: 1.在master上开启bin-log日志功能,记录更新.插入.删除的语句. 2.必须开启三个线程,主上开启io线程,从上开启io线程和sql线程. 3.从上io线程去连接 ...
- MySQL主从同步、读写分离配置步骤、问题解决笔记
MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记: 现在使用的两台服务器已经 ...
- zabbix利用percona-toolkit工具监控Mysql主从同步状态
一.下载percona-toolkit工具包 percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等. [root ...
- Linux下的MySQL主从同步
网上一些关于Linux下的MySQL主从同步教程非常之多,有些很简单的配置却弄的非常复杂,有些根本无法配通,下面是我通过简单的配置完成的主从同步过程,大家可以参考,此文章更适用于新手. 一.测试环境: ...
随机推荐
- day15--认识模块、导入模块、自执行与模块的区别
一.认识模块 什么是模块? 模块本质是一些功能的集合体 创建的一个py文件就是一个模块 使用模块: 在使用模块的py文件中 通过 import 或者 from import导入模块 模块的优点: 可 ...
- class文件魔数CAFEBABE的由来
https://blog.csdn.net/ustcyy91/article/details/78462378 https://blog.csdn.net/renfufei/article/detai ...
- RabbitMQ详解(二)------消息通信的概念
PS:近期在南宁出差,工作比较忙,所以更新会比较慢. 说到消息通信,可能我们首先会想到的是邮箱,QQ,微信,短信等等这些通信方式,这些通信方式都有发送者,接收者,还有一个中间存储离线消息的容器.但是这 ...
- UITableView 和 UITableViewController
UITableView:显示有多行数据的一个列. 新建一个过程:Xcode -> File -> New -> Project...,然后选择iOS -> Applicatio ...
- SpringBoot整合Shiro使用Ehcache等缓存无效问题
前言 整合有缓存.事务的spring boot项目一切正常. 在该项目上整合shiro安全框架,发现部分类的缓存Cache不能正常使用. 然后发现该类的注解基本失效,包括事务Transaction注解 ...
- HDU - 1255 扫描线+离散化进阶
这道题最开始我以为和HDU - 1542 那道题一样,只需要把cover次数改成2次即可,但是后面仔细一想,我们需要求的是覆盖次数大于等于2次的,这样的话,我们需要维护两个长度,HDU-1542 由于 ...
- Spring MVC普通类或工具类中调用service报空空指针的解决办法(调用service报java.lang.NullPointerException)
当我们在非Controller类中应用service的方法是会报空指针,如图: 这是因为Spring MVC普通类或工具类中调用service报空null的解决办法(调用service报java.la ...
- Python_面向对象_单例模式
class A(object): pass a1 = A() a2 = A() print(a1 == a2)print(id(a1))print(id(a2)) 结果: False 23257231 ...
- Vue基础(ES6)
起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐上来就 ...
- linux之常见错误
在日常开发中,尤其是在Linux中进行操作的时候,经常会碰到各种各样的错误.记录一下,熟能生巧,慢慢参透linux的奥秘 1) 在安装ssl证书的时候,发生certbot命令无法使用的情况 解决方案: ...