mysql主从复制集群配置+mycat读写分离
1、主库配置
1 2 3 4 5 6 7 8 9 10 11 12 | vi /etc/my .cnf #主服务器唯一id server- id =1 #启用二进制日志 log-bin=mysql-bin #设置不要复制的数据库(可以设置多个) binlog-ignore-db=mysql binlog-ignore-db=information_schema #设置需要复制的数据库 binlog- do -db= test #设置logbin格式 binlog_format=STATEMENT |
2、从库配置
1 2 3 4 5 | vi /etc/my .cnf #最后添加如下配置 #从服务器唯一id server- id =2 #启用中继日志 relay-log=mysql-relay |
3、主机建用户(重启mysql、设置防火墙)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #老版本创建用户授权一体化 GRANT REPLICATION SLAVE ON *.* TO 'slave' @ '%' IDENTIFIED BY '123123' ; #新版本需要分开 create user 'slave' @ '%' identified by '123123' ; grant REPLICATION SLAVE ON *.* TO 'slave' @ '%' with grant option; flush privileges; #查看master状态 mysql> show master status; +------------------+----------+--------------+--------------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+--------------------------+-------------------+ | mysql-bin.000008 | 869 | test | mysql,information_schema | | +------------------+----------+--------------+--------------------------+-------------------+ 1 row in set (0.00 sec) |
4、从机配置需要复制的主机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | mysql> CHANGE MASTER TO MASTER_HOST= '100.98.100.186' , -> MASTER_USER= 'slave' , -> MASTER_PASSWORD= '123123' , -> MASTER_PORT= 3306, -> MASTER_LOG_FILE= 'mysql-bin.000008' ,MASTER_LOG_POS=869; Query OK, 0 rows affected, 8 warnings (0.09 sec) #启动从服务器复制功能 start slave; #查看从服务器状态 mysql> show slave status \G; *************************** 1. row *************************** Slave_IO_Running: Yes Slave_SQL_Running: Yes |
1 2 3 | #重置slave (如果出问题直接重置slave主机,然后重新配置主机) stop slave; reset master; |
5、验证主从
master 建库建表、从库查询
1 2 3 4 5 6 7 | create database test ; use test ; create table student( id int, name varchar(100) ) insert into student value(1, 'zs' ); |
6、mycat读写分离配置
解压、配置schema.xml (balance='0'没有进行读写分离) server.xml使用默认配置、rule.xml分片没有规则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | mv mycat /usr/local/ [root@node-1 conf] # cat schema.xml <?xml version= "1.0" ?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd" > <mycat:schema xmlns:mycat= "http://io.mycat/" > <schema name= "TESTDB" checkSQLschema= "true" sqlMaxLimit= "100" randomDataNode= "dn1" dataNode= "dn1" > < /schema > <dataNode name= "dn1" dataHost= "node-1" database= "test" /> <dataHost name= "node-1" maxCon= "1000" minCon= "10" balance= "0" writeType= "0" dbType= "mysql" dbDriver= "native" switchType= "1" slaveThreshold= "100" > <heartbeat> select user()< /heartbeat > <writeHost host= "100.98.100.186" url= "100.98.100.186:3306" user= "root" password= "123456" > <readHost host= "100.98.100.186" url= "100.98.100.186:3307" user= "root" password= "123456" /> < /writeHost > < /dataHost > < /mycat :schema> 启动 . /mycat start |
7、连接mycat 验证读写分离 (高版本mysql第一种方法不能用)
1 2 3 4 5 6 7 8 | 方法一: 1、主节点执行 insert into student valuse(4,@@ hostname ); 主从主机数据不一致了 2、mycat 去查询: select * from student; 方法二:直接使用mycat查询 select @@ hostname from student; 发现没有读写分离 配置mycat balance= '3' |
做一个决定,并不难,难的是付诸行动,并且坚持到底。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)