大概架构如下:

IP     主机名       OS
192.168.1.177  mycat    CentOS7.4.1708
192.168.1.184    master   CentOS7.4.1708
192.168.1.185      salve     CentOS7.4.1708

#master、slave端安装mysql(这里使用同一个脚本)

master、slave端安装mysql(这里使用脚本)
cat>>~/mysql.sh<<EOF
#!/bin/bash
#Centox7已经不支持mysql,因为一部分原因(比如收费)所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以必须先卸载掉mariadb
for i in `rpm -qa|grep mariadb`;do rpm -e --nodeps $i;done
for i in `rpm -qa|grep mysql`;do rpm -e --nodeps $i;done
#安装mysql依赖
yum -y install wget make cmake zlib-devel gcc gcc-c++ libtool openssl openssl-devel autoconf automake pcre* gd gd-devel bison ncurses ncurses-devel
#下载mysql包
[ ! -d /opop ] && mkdir /opop
cd /opop
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.25.tar.gz
tar -zxvf mysql-boost-5.7.25.tar.gz
cd mysql-5.7.25/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/opop/mysql-5.7.25/boost/boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_USER=mysql
make -j2 && make install
EOF

#执行脚本
sh opop.sh

#创建数据存储目录
mkdir -p /usr/local/mysql/data 
chown -R mysql.mysql /usr/local/mysql/

#新创建并配置my.cnf文件
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
####开启gtid
server-id=
gtid-mode=on
enforce-gtid-consistency=true
log-bin-index=master-bin.index
log_bin=master-binlog
log-slave-updates = ON
binlog-checksum = CRC32
master-verify-checksum = 1
####
port=3306
socket=/usr/local/mysql/mysql.sock
character-set-server=utf8
pid-file=/usr/local/mysql/mysqld.pid
log-error=/var/log/mysqld.log
explicit_defaults_for_timestamp=true

#注意1:slave在创建并编辑my.cnf,需将server-id换成其他值(这里是以IP最后一位定义)

#注意2:slave端关于Gtid在my.cnf中需开启项:
log-slave-updates = ON
log-bin=slave-binlog
master-info-repository=TABLE       #Slave配置需要
relay-log-info_repository=TABLE    #Slave配置需要
binlog-format=ROW            #Slave配置需要
server_id=
gtid-mode=on           #开启GTID需要
enforce-gtid-consistency=true    #开启GTID需要
binlog-checksum=CRC32
master-verify-checksum=1
skip_slave_start=1

#配置MySQL启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

#修改路径:
vim /etc/init.d/mysqld
....
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

#配置环境变量(追加)
echo 'export PATH=/usr/local/mysql/bin:$PATH'>>/etc/profile
#使变量生效
source /etc/profile

#创建其他相关文件
touch /var/log/mysqld.log
chown -R mysql.mysql /var/log/mysqld.log
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql.mysql /var/log/mariadb/

#初始化数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#注意:此时会有产生mysql的root用户登录密码,执行grep "localhost" /var/log/mysqld.log最后一串字符串就是,大概是这样的:CaMpm!9evsG_ 或者 faQ!BoB1Jytk

#启动数据库
/etc/init.d/mysqld start

#修改mysql的root用户登录密码为123456
mysql -uroot -p    #输入上面筛选出来的密码
alter user user() identified by '123456';
grant all privileges on *.* to 'root'@'localhost' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by '123456';
exit
mysql -uroot -p    #重新登录进行测试

#Master端配置Gtid
shell> mysql -uroot -p
mysql> create user zhangsan;
mysql> grant replication slave on *.* to 'zhangsan'@'%'identified by '123456';
mysql> flush privileges;

#Slave端配置Gtid
mysql> change master to
master_host='192.168.1.',
master_port=3306,
master_user='zhangsan',
master_password='123456',
master_auto_position=1;

mysql> start slave;

mysql> show slave status\G;

#Master端测试

#Slave端测试

#Mycat配置

#安装JDK环境
#https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
#需要oracle账号才能下载
tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk1.8.0_211/ /usr/local/jdk1.8
echo 'export JAVA_HOME=/usr/local/jdk1.8'>>/etc/profile
echo 'export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/' >>/etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin'>>/etc/profile
source /etc/profile
java -version

Mycat读写分离 + 主从复制(Gtid)的更多相关文章

  1. Mycat读写分离、主从切换、分库分表的操作记录

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  2. Mycat 读写分离

    简介 Mycat 是 MySQL中间件,Mycat的原理中最重要的一个动词就是'拦截',它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析.路由分析.读写分离分析.缓存分 ...

  3. LVS+MYCAT读写分离+MYSQL同步部署手册(第三版)

    1      配置MYSQL主备同步 1.1    测试环境 mysql版本:5.6.24: 操作系统内核版本:Linux-3.13-0-32 主数据库IP:192.168.10.3: 主数据库名:d ...

  4. mysql主从同步+mycat读写分离+.NET程序连接mycat代理

    背景 最近新项目需要用到mysql数据库,并且由于数据量大的原因,故打算采用1主1从(主数据库负责增.删.改操作:从数据库负责查操作)的数据库架构,在实现主从之后还要实现读写分离的代理,在网上搜寻了很 ...

  5. Mycat读写分离(一主一从)

    Mycat读写分离(一主一从) 我们一共使用2个虚拟机,每个机器的作用如下: 主机名 IP地址 任务角色 数据库 node1 192.168.1.121 Mycat, master MySQL nod ...

  6. mycat数据库集群系列之mycat读写分离安装配置

    最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考.本次系列终结大概包括以下内容:多数据库安装.mycat部署安装.数据库之读写分离 ...

  7. Mycat读写分离的简单实现

    目录 1.Mycat读写分离的配置 1.1.Mycat是什么 1.2.Mycat能干什么 1.2.1.数据库的读写分离 1.2.1.1.数据库读写分离图解 1.2.2.数据库分库分表 1.2.2.1. ...

  8. web 项目 连接mycat 读写分离失效问题,

    问题描述:mycat 读写分离已配好,在sql工具上查询操作是可以的,但是在项目中,读数据就走write 数据库, 解决      :环境spring +mvc +ibaites,在java中自己写j ...

  9. LVS+MYCAT+读写分离+MYSQL主备同步部署手册

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

随机推荐

  1. eclipse控制台出现中文乱码的问题

    在Eclipse.exe同目录下,在eclipse.ini添加:Dfile.encoding=utf-8

  2. 6.JVM技术_java内存模型

    1.java内存模型图解 Java虚拟机在执行Java程序的过程中,会把它所管理的内存划分为若干个不同的数据区.这些区域有各自的用途,以及创建和销毁的 时间,有的区域随着虚拟机进程的启动而存在,有的区 ...

  3. 查看ocx控件CLSID的方法(转载)

    CLSID就是classID类的标识码 1.打开注册表,window + r ,输入regedit,确定 2.点击 编辑 选择查找 3.ok拉 参考:https://blog.csdn.net/u01 ...

  4. npm更换成淘宝镜像源以及cnpm

    1.需求由来 由于node安装插件是从国外服务器下载,受网络影响大,速度慢且可能出现异常.所以如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队(阿里巴巴旗下业务阿里云)干了这事.来自官网:“ ...

  5. ubuntu配置环境变量 sudo gedit /etc/profile

    文件末尾加入下面 JAVA_HOME 是jdk主目录 export JAVA_HOME=/usr/jdkexport JRE_HOME=${JAVA_HOME}/jre  export CLASSPA ...

  6. Django2.1.1与xadmin0.6.0遇到的坑

    Django2.1.1与xadmin0.6.0遇到的坑 BlueMiaomiao关注4人评论11188人阅读2018-09-23 12:17:56 (1)django2.0把from django.c ...

  7. MySQL 关于存储过程的操作

    -- 存储过程 --> 一组为了完成特定功能的SQL语句集 -- IN 传入参数 delimiter // create procedure mysql ( IN id int ) begin ...

  8. vscode安装eslint插件,代码统一自动修复

    ESlint:是用来统一JavaScript代码风格的工具,不包含css.html等. 方法和步骤: 通常情况下vue项目都会添加eslint组件,我们可以查看webpack的配置文件package. ...

  9. JavaScript相关知识点

    ㈠JavaScript编写位置 ⑴可以将js代码编写到外部js文件中,然后通过script标签引入    写到外部文件中可以在不同的页面中同时使用,也可以利用到浏览器的缓存机制    推荐使用的方式 ...

  10. Codeforces 963 A. Alternating Sum(快速幂,逆元)

    Codeforces 963 A. Alternating Sum 题目大意:给出一组长度为n+1且元素为1或者-1的数组S(0~n),数组每k个元素为一周期,保证n+1可以被k整除.给a和b,求对1 ...