mysql driver 读写分离_Mysql主从复制和读写分离实践

1、主从复制

原理

MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二

进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他

数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如

果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个

SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实

现了主从复制。

实践

准备工作

主数据库服务器(master):192.168.128.164,MySQL已经安装,并且无应用数据。

从数据库服务器(slave):192.168.128.167,MySQL已经安装,并且无应用数据。

主数据库master配置

修改mysql配置文件

重启mysql,并创建用于同步的用户账号

vi /etc/my.cnf

在[mysqld]部分插入以下两行配置

log-bin=mysql-bin #开启二进制日志

server-id=1 #设置server-id 需唯一

1

2

打开mysql会话shell

mysql -uroot -proot

创建用户:用户:slave 密码:slave

注意:ip为slave的地址

CREATE USER 'slave'@'192.168.128.167' IDENTIFIED BY 'slave';

1

分配权限

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.128.167';

flush privileges; #刷新权限

1

2

查看master状态,并记录二进制文件名(mysql-bin.000001)位置(106)

从数据库slave配置

修改mysql配置文件

重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置)

启动slave同步进程

查看slave状态

重启服务

service mysqld restart

mysql> show master status;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 | 106 | | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

1

2

3

4

5

6

7

8

vi /etc/my.cnf

在[mysqld]部分插入以下一行配置

server-id=2 #设置server-id 需唯一

mysql> CHANGE MASTER TO

MASTER_HOST='192.168.128.164',

MASTER_USER='slave',

MASTER_PASSWORD='slave',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=106;

1

2

3

4

5

6

7

start slave;

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.128.164

Master_User: slave

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 106

Relay_Log_File: mysqld-relay-bin.000002

Relay_Log_Pos: 251

1

2

3

4

5

6

7

8

9

10

11

主从配置完成,可以通过主库建库,建表,插入数据测试

读写分离

Mysql新版驱动类ReplicationDriver实现读写分离

准备工作,需搭建好mysql主从集群

实现目标

使数据写入到master

读数据时,从slave中读取

原理

使用mysql驱动自带的replicationDriver来实现,replicationDriver简单来说就是存在

两个Connection,一个masterConnection,一个slaveConnection;当

setReadonly(true)就把currentConnection=slaveConnection,反之设置为

masterConnection

触发条件

读操作需设置 readOnly 为 true

实现步骤

applicationContext.xml

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

读操作需设置readonly=true

测试

数据库中间件

如:mysql-proxy、mycat等

---------------------

作者:Elk_love_madness

原文:https://blog.csdn.net/qq_38928944/article/details/85341616

版权声明:本文为博主原创文章,转载请附上博文链接!

ae570658e9b04b4a3030744ecc798a39.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二十世纪最伟大的10大算法

来源:数学中国发明十大算法的其中几位算法大师1、1946 蒙特卡洛方法[1946: John von Neumann, StanUlam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook upthe Metropolis algorithm, also known as the Monte Carlo method.]1946年&…

mybatis 动态字段与表中不一样_8.mybatis的基本工作流程(2.0)※

mybatis的基本工作流程1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径。2.有了这些信息就能创建SqlSessionFactory,SqlSessionFactory的生命周期是程序级,程序运行的时候建立起来,程序结束的时候消亡3.SqlSessionFactory建…

题目填坑计划

一个蒟蒻的最后的挣扎 吉林 JLOI 2016 侦察守卫 树形DP 可怕的题目,照题解抄了一遍,和它相似的题目还有HDU5290BombingPlan 方 容斥乱搞 可怕的题目,看题解懂的,但是完全写不来 成绩比较 组合DP 找题解理解了并且做完了&#xff0…

判断表达式值是否为空_如何在 Python 中判断列表是否为空

在判断列表是否为空时,你更喜欢哪种方式?决定因素是什么?在 Python 中有很多检查列表是否是空的方式,在讨论解决方案前,先说一下不同方法涉及到的不同因素。我们可以把判断表达式可以分为两个阵营:对空列表…

HDU 5890 Eighty seven(DP+bitset优化)

题目链接 Eighty seven 背包&#xff08;用bitset预处理&#xff09;然后对于每个询问O&#xff08;1&#xff09;回答即可。 预处理的时候背包。 #include <bits/stdc.h>using namespace std;#define rep(i, a, b) for(int i(a); i < (b); i) #define dec(i, …

《Lancet》发表全球学者联合声明!

来源&#xff1a;中国生物技术网 2020年2月18日&#xff0c;《LANCET》上发表通讯&#xff08;Correspondence&#xff09;文章&#xff0c;全球科学家发表声明反对阴谋论&#xff0c;全力支持奋战在疫情一线的中国科研技术工作者。就像病毒没有国界一样&#xff0c;科学也没有…

python时间序列库_时间序列数据处理python 库

【注】本人原创&#xff0c;最初发表于CSDN&#xff0c;后发布于知乎。为避免误会为抄袭&#xff0c;特此说明 由于我热衷于机器学习在时间序列中的应用&#xff0c;特别是在医学检测和分类中&#xff0c;在尝试的过程中&#xff0c;一直在寻找优质的Python库&#xff08;而不是…

python代数式的表达方式_关于python字典类型最疯狂的表达方式

一个Python字典表达式谜题让我们探究一下下面这个晦涩的python字典表达式&#xff0c;以找出在python解释器的中未知的内部到底发生了什么。# 一个python谜题&#xff1a;这是一个秘密# 这个表达式计算以后会得到什么结果&#xff1f;>>>{True: yes, 1: no, 1.0: mayb…

【LeetCode】152. Maximum Product Subarray

题目&#xff1a;   Find the contiguous subarray within an array (containing at least one number) which has the largest product. For example, given the array [2,3,-2,4],the contiguous subarray [2,3] has the largest product 6. 题解&#xff1a; 先暴力解&am…

“哥德尔不完备定理”到底说了些什么?

来源&#xff1a; 赵昊彤科学网博客链接地址&#xff1a;http://blog.sciencenet.cn/blog-409681-1067019.html 【编者按&#xff1a;不知为何&#xff1f;一直不相信已有的数理、物理、生理、心理、管理……能够研究好人机融合智能系统。究其因&#xff0c;需要出现新的数/物…

ghost镜像浏览器_新电脑,GHOST装不进系统?不要急,跟我来

前几天&#xff0c;朋友转了台新电脑&#xff0c;用的是第十代CPU I3 10100&#xff0c;什么都安装好了&#xff0c;也按要求做了GPT分区&#xff0c;用GHOST安装了WIN10系统&#xff0c;可是重启时就是进不去&#xff0c;在BOOT选项里根本看不到硬盘。这是为什么呢&#xff1f…

如何卸载mysql server 2005_如何卸载SQL Server 2005

卸载SQL Server 2005的方法之一&#xff0c;放在这儿只是为了记住&#xff1a;1&#xff1a;把SQL Server2005的安装盘(安装文件)放入到光驱。2&#xff1a;打开如下路径&#xff1a;开始/运行&#xff0c;输入&#xff1a;cmd3&#xff1a;输入下列命令&#xff1a;Start /wai…

python异步消费kafka_Kafka 通过python简单的生产消费实现

使用CentOS6.5、python3.6、kafkaScala 2.10 - kafka_2.10-0.8.2.2.tgz (asc, md5) 一、下载kafka 下载地址 https://kafka.apache.org/downloads 里面包含zookeeper二、安装Kafka 1、安装zookeeper mkdir /root/kafka/ tar -vzxf kafka_2.10-0.8.2.2cd /root/kafka/kafka_2.10…

【技术趋势】2020 五大技术趋势:无人驾驶发展、机器视觉崛起、区块链实用化、人类增强技术、超自动化...

图源&#xff1a;https://unsplash.com/来源&#xff1a;AI开发者原标题&#xff1a;Here Is A Rundown of 5 Major Tech Trends Hitting 2020作者&#xff1a;| Richard Liu链接&#xff1a;https://medium.com/swlh/here-is-a-rundown-of-5-major-tech-trends-hitting-2020-6…

正则不能输入特殊字符_正则表达式语法学习和在线练习

标题: 正则表达式语法学习和在线练习作者: 梦幻之心星 sky-seekerqq.com标签: [#正则表达式,#语法,#学习,#练习]目录: [语法]日期: 2021-01-26背景说明正则表达式使搜索和替换操作更加灵活高效。许多程序设计语言都支持使用正则表达式进行字符串操作。正则表达式是由普通字符…

JavaScript Math 对象

// 返回算术常量 e&#xff0c;即自然对数的底数&#xff08;约等于2.718&#xff09;。 Math.E; // 2.718281828459045 // 返回圆周率&#xff08;约等于3.14159&#xff09;。 Math.PI; // 3.141592653589793 // 返回最低值。 Math.min(1, 2, 3, 4, 5, 6); // 1 // 返回最高值…

非接触物体尺寸形态测量_检修人必备的测量常识

小编今天给大家分享一下测量的常识&#xff0c;咱们搞机械的一定要懂点测量知识&#xff01;一、测量器具的分类测量器具是一种具有固定形态、用以复现或提供一个或多个已知量值的器具。按用途的不同量具可分为以下几类&#xff1a;1. 单值量具只能体现一个单一量值的量具。可用…

生物战教训、生物安全问题以及未来监控军民两用生物技术扩散的手段

来源&#xff1a;美国空军国家安全研究学会研究报告2005年9月【知远导读】本篇推送编辑节选自美国空军国家安全研究学会2005年9月发布的一份题为《生物战教训、生物安全问题以及未来监控军民两用生物技术扩散的手段》的研究报告。该报告直接来源于作者海伦普凯特&#xff08;He…

python关系运算符和逻辑运算符的优先级_python中逻辑运算符的优先级问题

遇到的问题今天做题的时候&#xff0c;碰到一个关于逻辑运算符优先级的问题&#xff0c;看到之后我懵了0 and 12 and 30 or 12 or 3上面的返回值是什么&#xff1f;我一开始以为返回的都是左边的值&#xff0c;但是结果和我想的不同&#xff0c;结果如下&#xff1a;In [4]: 0 …

编程面试题之——简答题(持续更新...)

简答题&#xff1a; 1、try{}里有一个return语句&#xff0c;那么紧跟在这个try后的finally{}里的代码会不会被执行&#xff0c;什么时候被执行&#xff0c;在return前还是后? 答&#xff1a;会执行&#xff0c;在方法返回调用者前执行。注意&#xff1a;在finally中改变返回值…