mycat-读写分离(mysql数据库)
Mycat 读写分离
读写分离一般有两种方式实现 1,应用层程序实现 2, 中间件层实现 mycat属于中间件实现.mycat是基于java语言开发的.在应用时需Java环境支持.
中间件实现读写分离的优点:
架构设计更灵活 可以在程序上实现一些高级控制 可以依靠些技术手段提高mysql性能 对业务代码影响小同时也安全
了解mycat
一个彻底开源的,面向企业应用开发的大数据库集群
支持事务,ACID 可代替mysql的加强版数据库
一个可以视为MySQL集群的企业级数据库
一个融合内存缓存技术.nosql技术,HDFS大数据的新型sql server
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
通过实验 掌握服务的安装于配置
准备实验环境:
角色: 主机名 IP地址
mycat和ntp服务器 mysql-node 192.168.122.10
主库服务器 master cong11 192.168.122.15
从库服务器slave cong12 192.168.122.14
从库服务器slave cong13 192.168.122.25
1, 关闭防火墙,selinux 修改主机名,做hosts绑定
Vim /etc/hosts 修改此文件(末尾添加)并 scp 到其他服务器
192.168.122.10 mysql-node
192.168.122.15 cong11
192.168.122.14 cong12
192.168.122.25 cong13
2, 在mysql-node服务器上部署NTP服务,为其他服务器提供时间校对.
安装 NTP:
Yum -y install ntp (本地yum源先挂载光盘)
NTP配置:
Vim /etc/ntp.conf (修改此配置文件)尾部添加
Server 127.127.1.0 (和本地系统时间同步)
Fudge 127.127.1.0
启动ntp服务
Systemctl start ntpd
其他服务器 安装 ntpdate b包 ,使用ntpdate IP地址 同步时间
可做计划任务 没隔10分钟同步一次
3, 配置主从复制
Cong11主服务器配置
创建实验数据库 HA (需先部署好MySQL,然后登录mysql)
mysql> create database HA;
mysql> use HA;
mysql> create table T1(id int,name varchar(20));
mysql> insert into T1 values(1,'Tom1');
创建主从同步的授权用户:
mysql> grant replication slave on *.* to 'slave'@'192.168.30.%' identified by "123456";
mysql> flush privileges;
修改配置文件 /etc/my.cnf 末尾添加
Server-id=1
Log-bin=/data/mysql/log/mysql-bin-master
Binlog-do-db=HA
Sync-binlog=1
Binlog-format=mixed
重新启动mysql
Systemctl restart mysqld (使配置文件生效)
导出数据库
Mysqldump -uroot -p123456 HA >HA.sql (导出的数据库文件默认在家目录)
为保证数据一致性 将导出的文件 scp 到其他服务器
Scp /rootHA.sql root@192.168.122.14:~
Scp /root/HA.sql root@192.168.122.25:~
并在两个从服务器上先创建HA库,然后倒入数据库文件
Mysql> create database HA;
Mysql>use HA;
Mysql>source /root/HA.sql
配置从服务器
修改配置文件/etc/my.cnf 末尾添加
Server-id=2
Relay-log=/data/mysql/log/relay-log-bin
Relay-log-index-/data/mysql/log/slave-relay-bin.index
Replicate-ignore-db=HA
重启mysql服务使配置文件生效
Systemctl restart mysqld
主从配置
Mysql> change master to master_host=’192.168.122.15’,master_user=’slave’,master_log_file=’mysql-bin-master.000001’,mater_log_pos=154;
在主库服务器上执行 show master status\G; 获取后两项参数
Nysql> show master status\G;
在mysql-node 上部署mycat
将下载好的安装包解压到指定目录 /usr/local 下
Tar -zxvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local/
因需java环境支持所以也需安装 jdk
Tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
修改配置文件 /etc/profile 文件 末尾添加
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
source /etc/profile 使配置文件生效
执行java -version 如果显示Java版本信息则jdk部署完成
将/usr/local/mycat/bin/* 文件软链接到PATH 环境变量包含的路径中
Ln -s usr/local/mycat/bin/* /usr/local/bin/
在 /usr/local/mycat/conf/server.xml 文件中配置mycatl用户账号权限信息修改如下:
编辑mycatl schema.xml 配置文件 /usr/local/mycat/conf/schema.xml
修改结果如下:
给所用mysql root远程登录的权限
mysql> grant all on *.* to root@'192.168.30.%' identified by '123456';
mysql>flush privileges; (主库上操作)
启动mycat服务
Mycat start
Netstat -anput |grep 8066 如8066端口已被mycat监听则服务正常启动
Mysql-node 服务其上安装 mariadb包以用来登录mycat
mysql -u mycatroot -p123456 -h 192.168.122.10-P 8066
mysql>show databases; 如果查询正确则服务配置完成.