配置环境:
1.mysql5.6
2.windowsXP
主从复制配置
主服务器配置
配置my.ini文件
查找my.ini地址
my.ini文件在MySQL Server 5.6目录下
我的my.ini路径:
C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.6
我的路径在一个Documents and Settings隐藏文件目录下,需要点击“工具”-“查看”-“显示所有文件和文件夹”就可以看到隐藏文件了
查看my.ini配置文件的方法:
在 “程序”-“MySQL”-“MySQLserver 5.6”-"MySQL 5.6 Command Line Client" 找到右键点击属性,在“目标”中 就是你的my.ini的路径了
编写my.ini文件
在[mysqld]下 添加
server-id=1
log-bin=mysql-bin
这两项是必须的,其他参数自己可选
#server-id=1 服务器标识id,必须是唯一的
#log-bin=mysql-bin 启动二进制日志
*这里在配置的过程中大家要注意,默认情况下my.ini配置文件中server-id 是等于1的,你可以在配置文件中找到这一项,主从配置ID必须不能相同否则Slave_IO_Running: No 这个会一直是No,而不会是Yes
查看当前server-id参数命令show variables like 'server_id';
修改server-id 命令 set global server_id=2;
如果相同可以自己修改,最好是在my.ini文件指定,以免每次重启mysql服务,都需要手动修改
配置好my.ini之后重启mysql服务器
net stop mysql //关闭MySQL服务
net start mysql //开启MySQL服务
重启之后,在主服务器输入show master status\G 命令,会出现如下图,记下File、position的值,这里的值在从服务器配置需要使用!
接下主服务器还需要给从服务器 给一个连接权限
GRANT REPLICATION SLAVE ON *.*TO 'root'@'192.168.1.104' IDENTIFIED BY 'root';
赋值权限的时候,指定REPLICATION 、SLAVE 两个权限即可
这是赋值该用户全部权限的命令:
GRANT ALL PRIVILEGES ON *.* TO'root'@'192.168.1.104'IDENTIFIED BY 'root'WITH GRANT OPTION;
到这里主服务器的配置就完成了。
下面来配置从服务器
同上在找到my.ini文件加上
server-id=2
log-bin=mysql-bin
这里server-id 不能和主服务器的ID一样,或者和其他从服务一样,这个ID必须是唯一的,可以参数可以自定义配置成功重启服务器。
在下来输入如下命令,这里 master_log_file和之前的File对应,master_log_pos与position值对应 ,在执行该命令之前必须停止slave线程
停止stop slave;
change master to master_host='192.168.1.100',master_user='root',master_port=3306,master_password='mysql',master_log_file='mysql-bin.000004',master_log_pos=2416;
执行完成启动slave线程
启动:start slave;
然后查看是否配置成功
show slave status\G
Slave_IO_Running: No 一直为No,看下下面的错误代码,进行相应的解决。
以上就是配置主从复制的全部过程。
Amoeba实现读写分离
1.需要环境要求:需要安装JDK
2.下载地址:
http://sourceforge.net/projects/amoeba/files/
3.Amoeba详细文档:
http://docs.hexnova.com/amoeba/rw-splitting.html
4.带红色标示是需要修改配置的部分
dbServers.xml配置说明
1.用户信息配置
<!-- mysql port 端口-->
<property name="port">3306</property>
<!-- mysql schema 项目名称-->
<property name="schema">beautiful</property>
<!-- mysql user 登录名-->
<property name="user">root</property>
<!-- mysql password 登录密码-->
<property name="password">root</property>
1.主从服务器配置
<!-- 1.dbServer name="server1" 服务器名称
2.<property name="ipAddress">192.168.0.104</property>服务器地址
3.可以配置多个从服务器
-->
<dbServer name="server1" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.0.104</property>
</factoryConfig>
</dbServer>
<dbServer name="server2" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.0.106</property>
</factoryConfig>
</dbServer>
<dbServer name="server3" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.0.105</property>
</factoryConfig>
</dbServer>
2.定义一个从服务连接池
<!-- 1.dbServer name="multiPool" 连接池名称
2.<property name="poolNames">server2,server3,server4</property> 指定多个从服务器用“,”拼接,在拼接过程中可以指定从从服务器负载量,如设置成“Slave1,Slave1,Slave2”那么Amoeba将请求以两次Slave1,一次Slave2的顺序循环对这些数据库节点转发请求
-->
<dbServer name="multiPool" virtual="true">
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
<property name="loadbalance">1</property>
<!-- Separated by commas,such as: server1,server2,server1 -->
<property name="poolNames">server2</property>
</poolConfig>
</dbServer>
Amoeba.xml 配置说明
1.<property name="port">8066</property>默认端口
2. <property name="user">root</property><property name="password">root</property>
MySQL Proxy Service的认证器,user和passwd属性分别定义Amoeba对外服务的用户名和密码。你的程序或者数据库客户端需要使用该用户名和密码来通过Amoeba连接之前定义的dbServer
<service name="Amoeba for Mysql" class="com.meidusa.amoeba.mysql.server.MySQLService">
<!-- port -->
<property name="port">8066</property>
<!-- bind ipAddress -->
<!--
<property name="ipAddress">127.0.0.1</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="authenticateProvider">
<bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">
<property name="user">root</property>
<property name="password">root</property>
<property name="filter">
<bean class="com.meidusa.toolkit.net.authenticate.server.IPAccessController">
<property name="ipFile">${amoeba.home}/conf/access_list.conf</property>
</bean>
</property>
</bean>
</property>
</service>
1.读取dbServers.xml配置的信息
2.defaultPool配置了默认的数据库节点,一些除了SELECT\UPDATE\INSERT\DELETE的语句都会在defaultPool执行
3.writePool配置了数据库写库,配置主服务器Master。
4.readPool配置了数据库读库,配置Slave或者Slave组成的数据库池,如这里就配置之前的virtualSlave数据库池。
<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">multiPool</property>
<property name="needParse">true</property>
</queryRouter>
以上就是配置读写分离,有不懂的地方可以参照http://docs.hexnova.com/amoeba/rw-splitting.html
在mysql5.6启动log日志,只需要在my.ini把general-log,值为0改成1即可,general_log_file为日志名称
下面是基本的命令
添加服务命令
sc create "Proxy" DisplayName= "MySQL Proxy" start= "auto" binPath= "C:\Program Files\MySQL\mysql-proxy-0.8.5-windows-x8"
删除服务器命令
sc delete Proxy
重启服务:
net stop mysql //关闭MySQL服务
net start mysql //开启MySQL服务
查看主从的状态
show slave status\G
show master status\G
查看已启动的日志
show variables like 'log_%';
端口占用
首先按快捷键windows+R,在运行框里输入cmd,如图所示,进入黑色界面后,输入netstat -ano,查看端口。
常见代理
1.mysql proxy
2.amoeba
3.atlas
日志详解
http://blog.itpub.net/29065182/viewspace-1161787/