MySql 主从复制与读写分离

点击查看 : 安装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
F:\1kaifa\Mycat-server-1.4-release-20151019230038-win\mycat\conf\log4j.xml

<level value="debug" />     开启日志权限,这样一旦有什么错误我们就可以查看日志

双击startup_nowrap.bat开始启动

8.启动mycat



9.链接mycat


如图所示


测试从服务器是否能进行写的操作


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值