点击查看 : 安装mysql(Linux+windows)的详细教程
一:mysql的常用命令:
service iptables stop ----关闭防火墙 建议操作之前先把防火墙关掉
service mysqld start ----- 启动mysql
service mysqld stop ----- 关闭mysql
mysql -u root –p ----连接 mysql,然后输入密码
show databases; ----查询所有数据库
use mysql; ----使用哪个库
show tables; ----展示这个库的所有的表
二:mysql主从复制的原理
mysql主从复制的原理:二进制sql执行文件
三:主从复制步骤
1.配置主节点信息
修改主(master)服务器
vi /etc/my.cnf 修改mysql的配置文件,新增以下内容
server_id=132 ###服务器id
log-bin=mysql-bin ###开启日志文件
service mysqld stop 关闭mysql
service mysqld start 重启mysql
SHOW VARIABLES LIKE 'server_id' sql语句查询服务器server_id
2.设置从服务器的读写权限
修改从(slave)服务器
server_id=178 ----标记服务器的id
log-bin=mysql-bin ----开启日志文件,就是一旦有insert,update,create,delete操作都会存放在这个日志当中
binlog_do_db=test ----同步test库(我是对于这个有疑问的)
service mysqld stop -----关闭mysql
service mysqld start -----重启mysql
SHOW VARIABLES LIKE 'server_id' ------sql语句查询服务器server_id
3.同步主服务器
主服务器给从服务器账号授权,如果通过Navicat Premium工具执行报错很可能是因为权限不够建议直接通过CRT通过命令执行 GRANT REPLICATION SLAVE ON *.* to 'lizhen'@'%' identified by 'admin';
通过Navicat Premium报错,然后我们通过CRT登录root账户然后执行
通过root账户执行sql命令
查看主服务器的状态,如图说明账户开通
4.同步从服务器
sql命令执行以下三句
stop slave -----关闭同步
建立连接,master_host=主服务器ip,master_user=刚才主服务开通的用户名,master_password=刚开设置的密码,master_log_file=刚才查询出的文件,master_log_pos=从第几行开始读取文件,这个应该重新查询主服务器的状态,然后根据查询出来的行数进行填写.
change master to master_host='192.168.91.132',master_user='lizhen',
master_password='admin',master_log_file='mysql-bin.000002',master_log_pos=249;
start slave ----开始同步
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
查看效果
四:读写分离
1.首先需要安装mycat数据库中间件
中间件 链接:https://pan.baidu.com/s/11ODW0I6Q_TY1j5ejxEAr9A 密码:bkrp
2.读写分离原理分析,是mycat虚拟出来的数据库
3.创建数据库和表
在主服务器上创建一个库,然后创建两张表.
CREATE DATABASE IF NOT EXISTS weibo_simple;
-- ------------------------------------
-- Table structure for `t_users` 用户表-- ------------------------------------
USE weibo_simple;
DROP TABLE IF EXISTS `t_users`;
CREATE TABLE `t_users` (
`user_id` varchar(64) NOT NULL COMMENT '注册用户ID',
`user_email` varchar(64) NOT NULL COMMENT '注册用户邮箱',
`user_password` varchar(64) NOT NULL COMMENT '注册用户密码',
`user_nikename` varchar(64) NOT NULL COMMENT '注册用户昵称',
`user_creatime` datetime NOT NULL COMMENT '注册时间',
`user_status` tinyint(1) NOT NULL COMMENT '验证状态 1:已验证 0:未验证',
`user_deleteflag` tinyint(1) NOT NULL COMMENT '删除标记 1:已删除 0:未删除',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- -------------------------------------
-- Table structure for `t_message`微博表
-- -------------------------------------
DROP TABLE IF EXISTS `t_message`;
CREATE TABLE `t_message` (
`messages_id` varchar(64) NOT NULL COMMENT '微博ID',
`user_id` varchar(64) NOT NULL COMMENT '发表用户',
`messages_info` varchar(255) DEFAULT NULL COMMENT '微博内容',
`messages_time` datetime DEFAULT NULL COMMENT '发布时间',
`messages_commentnum` int(12) DEFAULT NULL COMMENT '评论次数',
`message_deleteflag` tinyint(1) NOT NULL COMMENT '删除标记 1:已删除 0:未删除',
`message_viewnum` int(12) DEFAULT NULL COMMENT '被浏览量',
PRIMARY KEY (`messages_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `t_message_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `t_users` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4.修改mycat的server.xml配置文件
F:\1kaifa\Mycat-server-1.4-release-20151019230038-win\mycat\conf\server.xml
需要将其它的user删除,否则一会启动mycat的时候回报错.
<!-- 添加mycat的user -->
<user name="mycat">
<!--密码 --><property name="password">mycat</property>
<property name="schemas">mycat</property>
</user>
<!-- 添加mycat_red的user -->
<user name="mycat_red">
<!--密码 -->
<property name="password">mycat_red</property>
<property name="schemas">mycat</property>
<!--说明只能做读的操作 -->
<property name="readOnly">true</property>
</user>
5.修改mycat的schema.xml配置文件
F:\1kaifa\Mycat-server-1.4-release-20151019230038-win\mycat\conf\schema.xml
完全替换就行
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<!-- 与server.xml中user的schemas名一致 -->
<schema name="mycat" checkSQLschema="true" sqlMaxLimit="100">
<table name="t_users" primaryKey="user_id" dataNode="dn1" rule="rule1"/>
<table name="t_message" type="global" primaryKey="messages_id" dataNode="dn1" />
</schema>
<dataNode name="dn1" dataHost="jdbchost" database="weibo_simple" />
<dataHost name="jdbchost" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1"
slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- 更换成自己的ip端口以及用户名和密码 -->
<writeHost host="hostMaster" url="192.168.91.132:3306" user="lizhen" password="admin"/>
<writeHost host="hostSlave" url="192.168.91.133:3306" user="lizhen" password="admin"/>
</dataHost>
</mycat:schema>
6.配置策略文件rule.xml
F:\1kaifa\Mycat-server-1.4-release-20151019230038-win\mycat\conf\rule.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. -->
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://org.opencloudb/">
<tableRule name="rule1">
<rule>
<columns>user_id</columns>
<algorithm>func1</algorithm>
</rule>
</tableRule>
<function name="func1" class="org.opencloudb.route.function.AutoPartitionByLong">
<property name="mapFile">autopartition-long.txt</property>
</function>
</mycat:rule>
7.为了更好地定位错误,修改log4j.xml
<level value="debug" /> 开启日志权限,这样一旦有什么错误我们就可以查看日志
双击startup_nowrap.bat开始启动
8.启动mycat
9.链接mycat
如图所示
测试从服务器是否能进行写的操作