mysql数据库读写分离
来源:互联网 发布:周立功单片机笔试题目 编辑:程序博客网 时间:2024/04/29 22:43
1.mysql的主从同步
环境 : 两台windows 系统
ip : 主:192.168.1.147 从 : 192.168.1.133 两台电脑可以ping通
mysql版本: 5.6
2.首先配置主数据库
1). 找到 c盘下的 C:\ProgramData\MySQL\MySQL Server 5.6\my.ini 文件。 一定要找 这个文件夹下的,找安装包下的没用!!!
2). 用editPlus 打开文件 ,改变以下的几项
1.Server-id = 1 这是数据库ID,此ID是唯一的,ID值不能重复,否则会同步出错;
2.log-bin = mysql-bin 二进制日志文件,此项为必填项,否则不能同步数据;如果不取名字的话,那么就会以计算机的名字加编号来命名二进制文件;
3.binlog-do-db = testcreate 需要同步的数据库,如果还需要同步另外的数据库,那么继续逐条添 加,如果不写,那么默认同步所有的数据库;
4。binlog-ignore-db = mysql 不需要同步的数据库;
5.添加 grant file,select,replication slave on *.* to 'user'@'%' identified by 'root'; 一个用户可以复制主数据库的数据,给用户加权限, 有的时候权限不够,后来的 slave_IO_Running:connecting 就会变成这样
6. show master status;
会显示这个, pos, 1822
3.配置从数据库
1.与主数据库一样, 也配置那几个变量。 测试的时候,主库和从库得有相同的表,和库名
2.在从库执行以下命令
change master to
-> master_host='192.168.1.147', //主库ip
-> master_user='user',//主库给的 名字
-> master_password='root', //主库允许的密码
-> master_log_file='mysql-bin.000001', // file文件
-> master_log_pos=1822;//pos号
3.重启mysql服务
4.验证是否同步。
执行show slave status\G;
如果得到这些, 那么恭喜你 mysql主从已经配置好了
可以利用sql文件 来检测你的主从同步是否好使。
5.配置完上面之后,我们可以利用阿里巴巴的开源项目 amoeba 来进行读写分离操作,
下载地址 : http://download.csdn.net/detail/nikotse/5667519
将 下载的文件解压 , 进入bin目录下。
6.配置 amoeba.xml 文件
<service name="Amoeba for Mysql" class="com.meidusa.amoeba.net.ServerableConnectionManager"><!-- port --><property name="port">8066</property><!-- 绑定的地址 ipAddress --><!-- <property name="ipAddress">127.0.0.1</property> --><property name="manager">${clientConnectioneManager}</property><property name="connectionFactory"><bean class="com.meidusa.amoeba.mysql.net.MysqlClientConnectionFactory"><property name="sendBufferSize">128</property><property name="receiveBufferSize">64</property></bean></property><property name="authenticator"><bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator"><-- 用户名--><span style="white-space: pre;"><-- 需要配置--></span><property name="user">root</property><property name="password">root</property><-- amoeba密码--><span style="white-space: pre;"><-- 需要配置--></span><property name="filter"><bean class="com.meidusa.amoeba.server.IPAccessController"><property name="ipFile">${amoeba.home}/conf/access_list.conf</property></bean></property></bean></property></service>7.配置dbService.xml<dbServer name="abstractServer" abstractive="true"><factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"><property name="manager">${defaultManager}</property><property name="sendBufferSize">64</property><property name="receiveBufferSize">128</property><-- 需要配置--><!-- mysql port --><property name="port">3306</property><!-- mysql schema --><property name="schema">repl</property><-- 需要配置--></factoryConfig><poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool"><property name="maxActive">500</property><property name="maxIdle">500</property><property name="minIdle">10</property><property name="minEvictableIdleTimeMillis">600000</property><property name="timeBetweenEvictionRunsMillis">600000</property><property name="testOnBorrow">true</property><property name="testOnReturn">true</property><property name="testWhileIdle">true</property></poolConfig></dbServer><dbServer name="server1" parent="abstractServer"><factoryConfig><-- 需要配置--><!-- mysql ip --><property name="ipAddress">192.168.1.147</property><property name="user">root</property><property name="password">123456</property><-- 需要配置--></factoryConfig></dbServer><dbServer name="server2" parent="abstractServer"><factoryConfig><-- 需要配置--><!-- mysql ip --><property name="ipAddress">192.168.1.133</property><!-- mysql user --><property name="user">root</property><property name="password">123456</property><-- 需要配置--></factoryConfig></dbServer>9.配置 amoeba.xml<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter"><property name="ruleLoader"><bean class="com.meidusa.amoeba.route.TableRuleFileLoader"><property name="ruleFile">${amoeba.home}/conf/rule.xml</property><property name="functionFile">${amoeba.home}/conf/ruleFunctionMap.xml</property></bean></property><property name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property><property name="LRUMapSize">1500</property><property name="defaultPool">server1</property><property name="writePool">server1</property><property name="readPool">server2</property><property name="needParse">true</property></queryRouter>10. jdbc测试插入数据 我的数据库叫 repl
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DBConnection {public static void main(String[] args) {String driver = "com.mysql.jdbc.Driver";// localhost指本机,也可以用本地ip地址代替,3306为MySQL数据库的默认端口号,“user”为要连接的数据库名String url = "jdbc:mysql://localhost:8066/repl";// 填入数据库的用户名跟密码String username = "root";String password = "root";String sql = "insert into user (id,username) values('5','xxxxxxx')";// 编写要执行的sql语句,此处为从user表中查询所有用户的信息try {Class.forName(driver);// 加载驱动程序,此处运用隐式注册驱动程序的方法} catch (ClassNotFoundException e) {e.printStackTrace();}try {Connection con = DriverManager.getConnection(url, username, password);// 创建连接对象Statement st = con.createStatement();// 创建sql执行对象st.executeUpdate(sql);// 执行sql语句并返回结果集// 关闭相关的对象if (st != null) {try {st.close();} catch (SQLException e) {e.printStackTrace();}}if (con != null) {try {con.close();} catch (SQLException e) {e.printStackTrace();}}} catch (SQLException e) {e.printStackTrace();}}}
- mysql数据库读写分离
- MySQL数据库读写分离
- MySQL数据库读写分离
- mysql数据库读写分离
- mysql数据库读写分离
- MySQL数据库读写分离
- MySQL数据库读写分离配置
- mysql数据库实现读写分离
- mysql spring 数据库读写分离
- mysql数据库读写分离(主从分离)
- mysql数据库主从复制和读写分离
- Mysql数据库读写分离、主从配置信息
- Mysql数据库读写分离数据同步
- mysql+spring+mybatis实现数据库读写分离
- centos 6.5 实现Mysql 数据库读写分离
- Amoeba数据库代理 实现mysql读写分离
- mysql数据库的主从配置读写分离
- MYSQL数据库proxysql配置,实现读写分离
- windwos下调度kettle任务
- Odoo - Testing Modules
- 用DCOS和marathon-lb实现服务发现和负载均衡:第一部分
- 109之今日学习
- AutoLayout VFL 笔记
- mysql数据库读写分离
- Rorr:Operation category READ is not supported in state standy
- 在Servlet中实现重定向
- 西安80坐标系转换工具
- easyui中combotree加载数据处理
- 在Activity中响应ListView内部按钮的点击事件的两种方法
- 机器学习分类篇-支持向量机下
- 高光谱图像分类(二)稀疏表示
- Java 面试知识总结