配置mysql主从
1、在两台虚拟机(主:192.168.21.128和从:192.168.21.129)上安装mysql,
2、修改主数据库的my.cnf文件,修改内容: log_bin 日志文件名称,启用日志功能、server_id 给定一个值(主的server_id小于从)
3、重新启动mysql:#service mysql restart,然后进入主数据库的客户端工具:#mysql -u用户名 - p
4、新建一个myslave用户,并赋予用户权限
grant all privileges on . to 'myslave'@'ip地址' identified by '密码' with grant option;
命令解释:
. :表示任意数据库的任意表
myslave 用户名 :这个无关紧要
ip地址 :从数据库的ip,哪个客户端可以连接mysql服务端.
5、通过命令可以观察主数据库在主从关系中状态
志文件:存在于mysql安装目录/data
data文件夹xxxxx.index文件,存储日志文件在哪里.
data文件夹auto.cnf编写当前mysql的uuid
6、修改主数据库的防火墙,放行3306端口
7、操作从数据库的内容
修改从数据库的my.cnf的server_id,必须比主数据库的server_id来得大
8、修改从的uuid(长度不变,值任意,只要不和主数据库的uuid一样即可),重启服务
9、进入从数据库客户端,操作slave
在从数据库中配置出主数据(master)的信息
change master to master_host='主数据库ip' ,master_user='和4、一致',master_password='密码',master_log_file='master_log.000001';
关闭slave:#stop slave
开启slave:#start slave
显示slave状态:show slave status \G \G表示以树状形式显示
只要没有出现错误则表示配置成功
10、验证:
只要在主数据库中创建一个库或者表,从数据库也会跟着同步
MyCat配置:在jdk安装前提上
1、配置好主从数据库,并分别开放3306端口
2、保证root用户能被mycat访问
grant all privileges on . to 'root'@'%' identified by 'smallming' with grant option;
3、解压上传的Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz,把解压后的文件夹mycat复制到/usr/local/mycat
4、配置rule.xml
<tableRule name=”crc32slot”>下面添加
<tableRule name="crc32slot1">
<rule>
<columns>id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
<tableRule name="crc32slot2">
<rule>
<columns>id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
<tableRule name="crc32slot3">
<rule>
<columns>id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
<tableRule name="crc32slot4">
<rule>
<columns>item_id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
<tableRule name="crc32slot5">
<rule>
<columns>id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
<tableRule name="crc32slot6">
<rule>
<columns>id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
<tableRule name="crc32slot7">
<rule>
<columns>order_id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
<tableRule name="crc32slot8">
<rule>
<columns>id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
<tableRule name="crc32slot9">
<rule>
<columns>order_id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
<tableRule name="crc32slot10">
<rule>
<columns>id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
5、配置mycat的schemal.xml,配置成如下效果
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="ego" checkSQLschema="false" sqlMaxLimit="100">
<table name="tb_content" dataNode="dn1,dn2,dn3" rule="crc32slot" />
<table name="tb_content_category" dataNode="dn1,dn2,dn3" rule="crc32slot1"/>
<table name="tb_item" dataNode="dn1,dn2,dn3" rule="crc32slot2" />
<table name="tb_item_cat" dataNode="dn1,dn2,dn3" rule="crc32slot3" />
<table name="tb_item_desc" dataNode="dn1,dn2,dn3" rule="crc32slot4" />
<table name="tb_item_param" dataNode="dn1,dn2,dn3" rule="crc32slot5" />
<table name="tb_item_param_item" dataNode="dn1,dn2,dn3" rule="crc32slot6" />
<table name="tb_order" dataNode="dn1,dn2,dn3" rule="crc32slot7" />
<table name="tb_order_item" dataNode="dn1,dn2,dn3" rule="crc32slot8" />
<table name="tb_order_shipping" dataNode="dn1,dn2,dn3" rule="crc32slot9" />
<table name="tb_user" dataNode="dn1,dn2,dn3" rule="crc32slot10" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
<dataNode name="dn3" dataHost="localhost1" database="db3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.17.132:3306" user="root"
password="smallming">
<readHost host="hostS2" url="192.168.17.133:3306" user="root" password="smallming" />
</writeHost>
</dataHost>
</mycat:schema>
上述配置解释:
5、1 <schema> name属性逻辑库名称
5、2 checkSQLschema是否自动检查模式(模式名、表名)
5、3 sqlMaxLimit 如果sql语句中没有limit平时测试时自动添加limit 100
5、4 <table>
5、4、1 name配置逻辑库名称
5、4、2 dataNode 值来源于<dataNode>的name属性
5、4、3 rule 设置切分规则,值来源于rule、xml<tableRule>name属性
5、5 <dataNode> 配置数据节点
5、5、1 dataHost值来源于<dataHost>的name属性
5、6<dataHost>
5、6、1 <writeHost> 负责写的主机信息
5、6、2 <readHost>负责读的主机信息
5、6、3 实现读写分离的配置
6、配置mycat/conf/server.xml
配置解释:
6、1 找到<user>标签(两个<user>都需要改,第二个只需要修改schemas为ego即可)
6、2 <user>的name表示mycat用户名
6、3 <property>配置用户属性、password表示密码
6、4 schemas:逻辑库名称,多个逻辑库使用逗号分割
7、进入到mycat/bin下,使用下面命令启动mycat
./mycat start
8、使用命令,查看是否启动成功,如果启动失败,去mycat /logs /wrapper.log查看异常信息(重点 Cause By)
./mycat status
9、修改防火墙,放行8066端口
10、 使用navicat连接mycat(把mycat当成数据库使用即可),主机ip地址mycat的所有服务器的ip地址,端口写mycat端口,用户名写mycat/conf/server、xml中<user>配置的用户名