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执行文件

MySql 主从复制与读写分离_第1张图片

三:主从复制步骤

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 

MySql 主从复制与读写分离_第2张图片

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账户然后执行

MySql 主从复制与读写分离_第3张图片

通过root账户执行sql命令

MySql 主从复制与读写分离_第4张图片 

查看主服务器的状态,如图说明账户开通

MySql 主从复制与读写分离_第5张图片

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


MySql 主从复制与读写分离_第6张图片

查看效果

MySql 主从复制与读写分离_第7张图片


四:读写分离

1.首先需要安装mycat数据库中间件

中间件  链接:https://pan.baidu.com/s/11ODW0I6Q_TY1j5ejxEAr9A 密码:bkrp

2.读写分离原理分析,是mycat虚拟出来的数据库

MySql 主从复制与读写分离_第8张图片

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;

MySql 主从复制与读写分离_第9张图片


4.修改mycat的server.xml配置文件

F:\1kaifa\Mycat-server-1.4-release-20151019230038-win\mycat\conf\server.xml

需要将其它的user删除,否则一会启动mycat的时候回报错.


   
    mycat
    mycat
   


   
   
    mycat_red
    mycat

true

   

MySql 主从复制与读写分离_第10张图片

5.修改mycat的schema.xml配置文件

F:\1kaifa\Mycat-server-1.4-release-20151019230038-win\mycat\conf\schema.xml

完全替换就行




   
   
       


       

   

   
                    writeType="0" dbType="mysql" dbDriver="native" switchType="1"
                slaveThreshold="100">
         select user()  
   
       
       
   

    


6.配置策略文件rule.xml

F:\1kaifa\Mycat-server-1.4-release-20151019230038-win\mycat\conf\rule.xml






       
            user_id
            func1
       

   

   
  autopartition-long.txt
   



7.为了更好地定位错误,修改log4j.xml

F:\1kaifa\Mycat-server-1.4-release-20151019230038-win\mycat\conf\log4j.xml

    开启日志权限,这样一旦有什么错误我们就可以查看日志

双击startup_nowrap.bat开始启动

MySql 主从复制与读写分离_第11张图片

8.启动mycat

MySql 主从复制与读写分离_第12张图片


9.链接mycat

MySql 主从复制与读写分离_第13张图片

如图所示

MySql 主从复制与读写分离_第14张图片

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

MySql 主从复制与读写分离_第15张图片

你可能感兴趣的:(数据库技术)