MySQL 读写分离
一、了解读写分离
读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。
二、准备设备
三台个Linux虚拟机,三台虚拟机里都有MySQL,分一为个主节点两个个为分节点。
三、MySQL 读写分离
1.配置本地yum源
先修改从机上的 hosts 文件在 /etc/hosts 里,就添加一个主节点的IP还有MySQL就行。如图所示:
再把 yum 源删除换成本地的 yum 源。修改文件的是下面这些
在进入opt目录下的时候需要往opt里拉一个文件来挂载。
1 2 3 4 | #mkdir /opt/centos //创建文件夹,因为上面指定的文件夹咱们还没创建 #mount /dev/sr0 /opt/centos //挂载文件 将yum本地源文件gpmall-repo,根据上面的配置,传输到/opt文件夹下。 自己使用xftp等软件。 |
就这个文件。
装配完成后输入yum repolist
查看yum源!不是0,基本上就完成了。
2.安装jdk和mycat
1 2 | yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel MariaDB-client //下载jdk和所需的文件 java -version //查看jdk版本 |
将 mycat 传到虚拟机里。
1 2 3 4 | tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/ //将mycat解压到/usr/local文件夹下方。 chmod -R 777 /usr/local/mycat //给mycat文件权限 echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile //写入配置文件 source /etc/profile //刷新配置文件 |
3.配置文件
先去主节点给分几点授权一下,让他们可以远程登录
1 | grant all privileges on *.* to root@ '%' identified by "000000" ; //授权所有用户可以远程登录 |
修改mycat配置文件
1 2 3 | chown root:root /usr/local/mycat/conf/schema.xml //给予配置文件权限 vim /usr/local/mycat/conf/schema.xml //进入mycat的配置文件 该页面内容全部删除。先输入数字,按下两下D,即可删除指定数量行。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 将以下字符放入 <?xml version= "1.0" ?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd" > <mycat:schema xmlns:mycat= "http://io.mycat/" > <schema name= "USERDB" checkSQLschema= "true" sqlMaxLimit= "100" dataNode= "dn1" ></schema> <dataNode name= "dn1" dataHost= "localhost1" database= "test" /> <dataHost name= "localhost1" maxCon= "1000" minCon= "10" balance= "3" dbType= "mysql" dbDriver= "native" writeType= "0" switchType= "1" slaveThreshold= "100" > <heartbeat> select user()</heartbeat> <writeHost host= "hostM1" url= "192.168.148.175:3306" user= "root" password= "000000" > <readHost host= "hostS1" url= "192.168.200.171:3306" user= "root" password= "000000" /> </writeHost> </dataHost> </mycat:schema> |
1 2 3 4 5 6 | cd /usr/local/mycat //进入mycat文件夹下 cd conf/server.xml //进入配置文件 到文本的最后一行 <user> 标签 留下<user name= "root" > 将 password 修改成你想要的密码 schemas 共享的数据库文件的“代号”,所以会将test数据库显示成USERDB |
已经配置完成了。
4.检查配置
1 2 | /usr/local/mycat/bin/mycat start //运行mycat服务 netstat -ntlp //查看端口 |
这些端口才是开启成功了。
进入数据库,看看读写分离是否成功。
1 2 3 4 5 6 7 8 9 | mysql -h127.0.0.1 -P8066 -uroot -p000000 //进入数据库 mysql[(none)] > show databaes; //显示USERDB,其实就是主节点的test库 mysql[(none)] > use USERDB; //进入库 mysql[(USERDB)] > create table company(id int not null primary key,name varchar(50),addr varchar(255)); //创建一些表 mysql[(USERDB)] > show tables; //查看是否有表被创建 mysql[(USERDB)] > insert into company values(1, "facebook" , "usa" ); //插入数据 mysql[(USERDB)] > select * from company //查看字段 #mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource'; |
在主节点或者换一个分几点都可以查看到。
此时就搭建好读写分离。注意!如果出现use USERDB;
无法创建表,请查看报错和是否有配置文件出错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!