Linux下Mycat安装配置和使用_jaysonhu的博客-程序员宅基地_linux 安装mycat

技术标签: mycat  mysql  数据库  

mysql安装

  1. 下载mysql【百度云
  2. tar -zxvf mysql-5.6.32-linux-glibc2.5-x86_64.tar.gz 解压
  3. 把mysql文件夹移动到 /usr/local/ 下mv mysql-5.6.32-linux-glibc2.5-x86_64 /usr/local/mysql
  4. 创建mysql用户和组

    groupadd mysql
    adduser -r -g mysql mysql
    chown -R mysql.mysql /usr/local/mysql  //修改mysql目录所属mysql用户
  5. 安装 /usr/local/mysql/scripts/mysql_install_db
  6. 修改配置文件my.cnf,必须要修改才能使用mycat
    最后一行添加

    lower_case_table_names = 1
  7. 设置mysql服务

    cp -f /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
  8. 启动mysql service mysqld start
  9. 把mysql命令加入环境变量
    修改/etc/profile文件,最后行添加export PATH=$PATH:/usr/local/mysql/bin
    然后执行 source /etc/profile 使配置立即生效

  10. 登陆mysql如果提示错误 Can't connect to local MySQL server through socket '/tmp/mysql.sock'
    执行命令 ln /var/lib/mysql/mysql.sock /tmp/mysql.sock 后再登陆

  11. root用户初始密码为空,修改密码使用mysqladmin命令

    mysqladmin -uroot -p password
  12. 登陆客户端 mysql -uroot -p

  13. 创建测试数据库

    CREATE database db1;
    CREATE database db2;
    CREATE database db3;

    至此mysql已经安装完成了

安装java

linux下安装java

mycat安装

  1. 下载mycat【百度云
  2. 解压 tar -zxvf Mycat-server-1.6-RELEASE-20161012170031-linux.tar.gz
  3. 把mycat文件夹移动到 /usr/local/ 下mv Mycat-server-1.6-RELEASE-20161012170031-linux /usr/local/mycat
  4. 新建用户和组

    groupadd mycat
    adduser -r -g mycat mycat
    chown -R mycat.mycat /usr/local/mycat  //修改mycat目录所属mycat用户
  5. 修改配置文件 /usr/local/mycat/conf/schema.xml
    这里配置mysql的地址、用户名和密码

    <writeHost host="hostM1" url="localhost:3306" user="root" password="root">
        <readHost host="hostS1" url="localhost:3306" user="root" password="root" />
    </writeHost>

    server.xml
    这里配置mycat的用户名密码

    <user name="root">
       <property name="password">digdeep</property>
       <property name="schemas">TESTDB</property>
    </user>
  6. 启动mycat /usr/local/mycat/bin/mycat start

  7. 连接mycat mysql -uroot -pdigdeep -h127.0.0.1 -P8066 -DTESTDB
    注意这里 -h 后面必须是ip,使用localhost会出错

  8. 创建测试数据

use TESTDB;
create table company(id int not null primary key,name varchar(50),addr varchar(255));
insert into company values(1,"facebook","usa");
  1. 结果:查看mysql上的数据库db1,db2,db3上都创建了表company

mysql主从服务器配置

  1. 修改主mysql配置文件my.cnf

    [mysqld]
    log_bin = mysql-bin  #记录操作日志
    binlog_ignore_db =  mysql  #不同步mysql系统数据库
    server_id = 1
  2. 启动主mysql,在主mysql创建一个用户让从mysql连接,执行sql
    主mysql:node1
    从mysql:node2

    grant replication slave on *.* to 'user'@'node2' identified by 'password'
  3. 修改从mysql配置文件my.cnf

    log_bin = mysql-bin  #记录操作日志
    replicate_ignore_db = mysql #不同步mysql系统数据库
    slave_skip_errors = all 
    server_id = 2
  4. 主mysql执行sql show master status;\G
    show master status

  5. 从mysql连接主mysql
    根据第2步配创建的user,password 和 第4步获取的file,position 连接主mysql

    change master to master_host='node1',master_user='user',master_password='password',master_log_file='mysql-bin.000004',master_log_pos=120;
    //如果是mysql5.6即以上可以不需要master_log_file和master_log_pos,mysql会自动识别
    change master to master_host='node1',master_user='user',master_password='password';
  6. 开启从mysql,从mysql中执行 start slave;
  7. 查看从mysql状态,从mysql执行 show slave status\G;
    show slave status
    红色下划线部分为yes则开启成功

  8. 测试成果
    首先在主从mysql上都新建数据库testdb
    主mysql:use testdb;create table user(id int not null primary key,name varchar(50));
    从mysql上也会产生user表,主从mysql配置成功!

mycat读写分离配置

  1. 注意事项

    • 远程 mysql 必须允许 mycat主机 远程连接,修改mysql.user表中的用户数据,执行sql

      update mysql.user set host = '%' where user = 'root'
  2. schema.xml配置

    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
    writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <writeHost host="hostM1" url="node1:3306" user="root" password="root">
            <readHost host="hostS1" url="node2:3306" user="root" password="root" />
        </writeHost>
    </dataHost>

    dbDriver 属性
    指定连接后端数据库使用的 Driver,目前可选的值有 native 和 JDBC。使用 native 的话,因为这个值执行的是二进制的 mysql 协议,所以可以使用 mysql 和 maridb。其他类型的数据库则需要使用 JDBC 驱动来支持。
    从 1.6 版本开始支持 postgresql 的 native 原始协议。
    如果使用 JDBC 的话需要将符合 JDBC 4 标准的驱动 JAR 包放到 MYCAT\lib 目录下,并检查驱动 JAR 包中包括如下目录结构的文件:META-INF\services\java.sql.Driver。在这个文件内写上具体的 Driver 类名,例如:com.mysql.jdbc.Driver。

    balance 属性
    负载均衡类型,目前的取值有 3 种:

    1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
    2. balance=”1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
    3. balance=”2”,所有读操作都随机的在 writeHost、readhost 上分发。
    4. balance=”3”,所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压
      力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。

    writeType 属性
    负载均衡类型,目前的取值有 3 种:

    1. writeType=”0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个
      writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
    2. writeType=”1”,所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。

    switchType 属性

    • -1 表示不自动切换
    • 1 默认值,自动切换
    • 2 基于 MySQL 主从同步的状态决定是否切换
      心跳语句为 show slave status
  3. 根据主从延时切换技术
    Mycat1.4开始支持 MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下: MyCAT心跳检查语句配置为 show slave status ,dataHost 上定义两个新属性: switchType=”2” 与slaveThreshold=”100”,此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,Mycat心跳机制通过检测 show slave status 中的 “Seconds_Behind_Master”, “Slave_IO_Running”, “Slave_SQL_Running” 三个字段来确定当前主从同步的状态以及Seconds_Behind_Master 主从复制时延, 当Seconds_Behind_Master>slaveThreshold 时,读写分离筛选器会过滤掉此Slave机器,防止读到很久之前的旧数据,而当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主从同步,可以安全切换,否则不会切换。

  4. 重启mycat,连接创建测试数据

    use TESTDB;
    create table company(id int not null primary key,name varchar(50),addr varchar(255));
    insert into company values(1,"facebook","usa");
  5. 结果:查看主从mysql上的db1,db2,db3上都创建了表company

  6. 如果你的mysql的复制模式为STATEMENT(可以在my.cnf中配置binlog_format="STATEMENT"),还可以这样测试。
    mycat执行sql :

    insert into company values(1,@@hostname,"usa");`
    select * from company ;

    这里写图片描述
    可以看出,读取数据是从从mysql读出的

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jaysonhu/article/details/52858535

智能推荐

excel分类汇总的使用_chushiyunen的博客-程序员宅基地

分类汇总可以看做是数据透视图的简单应用,在处理不复杂的分类时比较好用。例如:根据类型求和,统计数量等。用法分类字段只能选一个。汇总方式有求和、计数、方差等。选定汇总项可多选。其他如何取消分类汇总选定汇总项里面勾选之后,点击 全部删除。...

孕妇有什么副业做?孕妇在家有哪些兼职可以做?_聪少爱学堂的博客-程序员宅基地

孕妇有什么副业做?孕妇在家有哪些兼职可以做?孕妇在家选择兼职工作时,有一点一定要遵循:不能从事极端的体力工作。因为体力工作容易让孕妇出现并发症。所以孕妇一定要选择一些没有太大压力的兼职工作。有很多兼职工作时间很自由,所以特别适合怀孕的女性做。下面给大家简单的列举一下孕妇在家的兼职类型:1、咨询服务类孕妇如果拥有良好沟通技巧,可以在自己擅长的领域为其他人提供一些咨询服务。比如,大学生职业计划咨询,女性如何处理家庭与工作的关系等等。或者提供人际关系等方面的建议。如果是第二次怀孕,可以将自己的第一次怀孕的

chmod和chown设置权限_chushiyunen的博客-程序员宅基地_chown设置权限

chmod使用linux肯定离不开授权,所以这是必修课。数字的形式常用命令:不推荐,因为有些应用这样设置反而会出问题。 例如tomcat。chmod -R 777 /data/*;推荐:chmod -R 755 /data/*;7表示什么意思:7=421(rwx)(读、写、执行)同理:5表示41(rx)(读、执行)字母的形式chmod ugo+r file1.txt这两个命令相同(给所有人设置读权限):chmod a+r file1.txtchmod 444 file1.

每日一题--分割回文字符串_Angel__c的博客-程序员宅基地

题目大意是输出所有回文字符串的分割结果,其实就是个组合问题,对于这个问题的解题思路和之前的电话号码的很像,每次我们找到一个回文字符串,都在最终结果中加上当前回文字符串与剩下字符串能够产生的组合的交叉组合。代码如下:class Solution: def IsP(self, s: str): r_s = s[::-1] if r_s == s:...

【Qt开发】V4L2 API详解 <一> 背景知识 打开设备设置参数_Zhang_P_Y的博客-程序员宅基地

www.linuxtv.org下,有篇文档详细讲解了V4L2相关知识和体系结构。是V4L2方面最全面的文档。可以通过它学习V4L2的一些思路和想法。http://www.linuxtv.org/downloads/v4l-dvb-apis/index.html最新文档则在:https://www.linuxtv.org/downloads/legacy/video4linu

深度强化学习(理论篇)—— 从 Critic-only、Actor-only 到 Actor-Critic_TangowL的博客-程序员宅基地

这段时间会做个深度强化学习的专题,包括理论、文献和实践三大部分。

随便推点

Sublime Text 3 装了Anaconda 写Python代码出现框框的解决办法_KingLearnJava的博客-程序员宅基地

Sublime Text 3代码提示插件Anaconda下载:http://damnwidget.github.io/anaconda/#carousel-features安装后写代码出现白框:光标移到白框行,下方状态栏里可以看到错误信息:可见原因是代码不符合PEP 8 规范。规范摘要见:http://blog.sae.sina.com.

SparkSQL官方文档——读取win10本地文件_火树银花之处的博客-程序员宅基地

# -*- encoding: utf-8 -*-"""@File : [email protected] : 2020/7/8 11:[email protected] : [email protected]: XXX"""from pyspark.sql import SparkSessionfrom pyspark.sql.types import *spark = SparkSession.builder.master('local').config.

uniapp应用中使web-view页面(webview)返回上一页+注入js操作页面元素_CoolHea的博客-程序员宅基地_uniapp webview注入js

@uniapp应用中使web-view页面(webview)返回上一页+注入js操作页面元素uniapp应用中使web-view页面(webview)返回上一页+注入js操作页面元素1:具体页面代码 2、代码解析:var currentWebview = this.scope.scope.scope.getAppWebview().children()[0];获取页面webview对象。onReady() {var currentWebview = this.scop

OpenResty helloword - content_by_lua_file_ckx0709的博客-程序员宅基地_content_by_lua

https://blog.csdn.net/ckx178/article/details/94346654完成OpenResty的安装,并且打印了helloword,不过是在nginx嵌入了lua:worker_processes 1;error_log logs/error.log;events { worker_connections 1024;}http { ...

物流企业信息化需要整体升级_荃子的博客-程序员宅基地

摘要:新浪微博、SNS的日渐火爆让信息的传播越来越容易,信息化行业中的几个大佬也开始在微博上开辟了自己的社会媒体战场,最近在新浪微博上活跃度很高的博科资讯股份有限公司(http://weibo.c新浪微博、SNS的日渐火爆让信息的传播越来越容易,信息化行业中的几个大佬也开始在微博上开辟了自己的社会媒体战场,最近在新浪微博上活跃度很高的博科资讯股份有限公司(http://weibo.co

节点属性_weixin_44540773的博客-程序员宅基地_节点属性

节点属性开发工具与关键技术:作者:赵纯雨班级:1804撰写时间:2019.6.3节点属性的三种方法和描述:第一种:nodename:它返回一个字符串,其内容是给定节点的名字第二种:nodetype:它返回的是一个整体,而这个数值代表的给定节点的类型,比如:元素类型、节点类型:元素:1、 属性:2、文本:3、注释:8、文档:9.第三种:nodevalue:这所谓的就...

推荐文章

热门文章

相关标签