mysql主从同步加读写分离
首先主从同步,一旦建立,指定了用户,就不能更改了,否则会有错误。1063
Error 'Duplicate entry '%-test-' for key 'PRIMARY'' on query. Default database: 'mysql'. Query: 'INSERT INTO db SELECT *
还没有找到好的解决办法。
因此要还原成2台机器刚刚装好mysql时候的快照来做实验。
主机只修改了下面的名字。
[root@ygy130 ~]# vim /etc/my.cnf
log-bin=mysql-bin-master
重启
[root@ygy130 ~]# mysql -usystem -p123456
mysql> grant all on *.* to user2@'%' identified by '123456';
mysql> flush privileges;
从机
[root@yu131 ~]# vim /etc/my.cnf
server-id = 2
重启
[root@yu131 ~]# mysql -usystem -p123456
mysql> change master to master_host='192.168.31.130',master_user='user2',master_password='123456';
mysql> start slave;
mysql> show slave status\G

主从同步配置完成。
下面开始做读写分离

实验环境:
mysql-proxy服务端: yu236 IP:192.168.31.236
mysql服务器(主,负责写)服务端:ygy130 IP:192.168.31.130
mysql服务器(从,负责读)客户端:yu131 IP:192.168.31.131
下面配置yu236主机:
关闭mysqld服务。
[root@yu236 ~]# service mysqld stop
[root@yu236 ~]# chkconfig mysqld off
[root@yu236 ~]# yum install lua
[root@yu236 ~]# tar -xf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/
名字太长,改短一下
[root@yu236 ~]# cd /usr/local/
[root@yu236 ~]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy
配置环境变量。
[root@yu236 local]# vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
export PATH=/usr/local/mysql-proxy/bin:$PATH
[root@yu236 local]# source /etc/profile
配置读写分离
[root@yu236 local]# ls /usr/local/mysql-proxy/share/doc/mysql-proxy/

[root@yu236 local]# vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
修改
40 min_idle_connections = 4,
41 max_idle_connections = 8,
为

#修改默认连接,进行快速测试,默认最小4个以上的客户端连接才会实现读写分离,最大链接数为8。
注:为了验证试验效果将他改成1 .就是当有一个链接的时候,就实现读写分离的功能。为了清晰的看到读写分离的效果,需要暂时关闭MySQL主从复制功能。
注册账号user1供yu236访问。
[root@ygy130 ~]# mysql -usystem -p123456
mysql> grant all on db.* to user1@'%' identified by '123456' ;
mysql> flush privileges;
[root@yu131 ~]# mysql -usystem -p123456
mysql> grant all on db.* to user1@'%' identified by '123456' ;
mysql> flush privileges;
启动服务mysql-proxy服务
[root@yu236 local]# mysql-proxy --proxy-read-only-backend-addresses=192.168.31.131:3306 --proxy-backend-addresses=192.168.31.130:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &
参数说明:
--proxy-read-only-backend-addresses=192.168.31.131:3306 # 定义后端只读服务器
--proxy-backend-addresses=192.168.31.130:3306 #定义后端mysql主服务器地址,指定mysql写主服务器的端口
--proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua & #指定lua脚本,在这里,使用的是rw-splitting脚本,用于读写分离
当有多个只读服务器时,可以写多个以下参数:
--proxy-read-only-backend-addresses=192.168.31.64:3306 # 定义后端只读服务器
--proxy-read-only-backend-addresses=192.168.31.65:3306 # 定义后端只读服务器
#--proxy-address=192.168.31.236:3307 指定mysql proxy的监听端口,默认为:4040
[root@yu236 local]# lsof -i :4040
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysql-pro 2040 root 9u IPv4 13618 0t0 TCP *:yo-main (LISTEN)
You have new mail in /var/spool/mail/root
验证阶段
随便使用一天机器,远程登陆yu236,通过代理连接数据库。
[root@ygy130 ~]# mysql -uuser1 -p123456 -P4040 -h192.168.31.236
看一下有什么库。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db |
+--------------------+
2 rows in set (0.00 sec)
进入db库
mysql> use db
Database changed
看一下有什么表
mysql> show tables;
Empty set (0.00 sec)
创建一个表。
mysql> create table test(id int);
插入数据
mysql> insert into test values(1);
mysql> insert into test values(2);
查看数据。
mysql> select * from test;
+------+
| id |
+------+
| 1 |
| 2 |
使用本地登录130和131
mysql> use db
mysql> select * from test;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
成功。
mysql主从同步加读写分离的更多相关文章
- MySQL主从同步、读写分离配置步骤、问题解决笔记
MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记: 现在使用的两台服务器已经 ...
- mysql主从同步+mycat读写分离+.NET程序连接mycat代理
背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很 ...
- MySQL主从同步、读写分离配置步骤
现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168. ...
- MySQL主从同步和读写分离的配置
主服务器:192.168.1.126 从服务器:192.168.1.163 amoeba代理服务器:192.168.1.237 系统全部是CentOS 6.7 1.配置主从同步 1.1.修改主服务器( ...
- mysql主从同步与读写分离
为了解决数据库服务的高可用问题以及负载均衡问题, 1正常情况下可以互为主从,均衡分担数据流量, 2防止数据库服务器在宕机的情况下可以顺利切换到正常的数据库服务器,减少公司的客户流量损失故公司需要搭建数 ...
- MySQL主从复制技术与读写分离技术amoeba应用
MySQL主从复制技术与读写分离技术amoeba应用 前言:眼下在搭建一个人才站点,估计流量会非常大,须要用到分布式数据库技术,MySQL的主从复制+读写分离技术.读写分离技术有官方的MySQL-pr ...
- Redis系列之(二):Redis主从同步,读写分离
1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...
- Redis系列之(二):Redis主从同步,读写分离(转)
1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...
- windows mysql主 Linux mysql 从 主从同步,读写分离
Mysql –master linux-slave 一.My.ini: Server-id=1 relay-log=relay-bin relay-log-index=relay-bin-index ...
随机推荐
- 使用InstallShield-Limited-Edition制作安装包
1.打开此网站,进行注册,获取序列码以及下载InstallShield-Limited-Edition 2.安装完成之后,打开VisualStudio,新建项目 3.填写基本应用信息 4.配置相关信息 ...
- Unity编辑器 - DragAndDrop拖拽控件
Unity编辑器 - DragAndDrop拖拽控件 Unity编辑器的拖拽(DragAndDrop)在网上能找到的资料少,自己稍微研究了一下,写了个相对完整的案例,效果如下 代码: object d ...
- 游戏AI之群组行为
群组行为指的是多个对象组队同时进行的情况.每个boid需满足分离,队列,凝聚三个基本的规则. 分离:群组中的每个个体都与相邻的个体保持一定的距离. 队列:群组以相同的速度,向相同的方向移动. 凝聚:与 ...
- Android开发-API指南-<supports-screens>
<supports-screens> 英文原文:http://developer.android.com/guide/topics/manifest/supports-screens-el ...
- Java进阶知识点:更优雅地关闭资源 - try-with-resource
一.背景 我们知道,在Java编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们.因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制, ...
- 使用open live writee写的博客
1. 安装包 下载链接:open live writer 2. 安装及使用教程 学习教程(转载他人) 3. 插入个图片 4. 写段代码 写不了,插件用不了 5. 插件使用: 参考文章:(http:// ...
- spring 整合hibernate注解时候,出现“Unknown entity: com.ssh.entry.Admin; nested exception is org.hibernate.MappingException: Unknown entity: com.ssh.entry.Admin”异常的问题
今天学习使用ssh框架的时候,出现一个异常,弄了好久才找到,在这记录一下,我的sb错误1.spring整合hibernate,取代*.hbm.xml配置文件 在applicationContext ...
- SpringBoot项目打包成jar后,启动脚本
将springboot项目打包成jar后,上传至服务器,每次都需要手敲命令,重新部署项目,可将这些命令写入脚本中,直接运行. 启动脚本(start.sh): CUR_PATH=$(cd "$ ...
- IntelliJ IDEA 2017.3/2018.1/.2 激活
传统的License Server方式已经无法注册IntelliJ IDEA2017.3的版本了. http://idea.lanyus.com,这个网站有破解补丁和注册码两种方式,另外http:// ...
- HTMLTestRunner解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128)
其中HTML和数据库都是设置成utf-8格式编码,插入到数据库中是正确的,但是当读取出来的时候就会出错,原因就是python的str默认是ascii编码,和unicode编码冲突,就会报这个标题错误. ...