先点赞,后观看,伸手才有好习惯
理解:Mycat作为一个逻辑数据库,是需要依赖下面的真实数据库
坑点及建议:
1、因为关注点在主从,别花太多时间在一台单机安装mysql两个端口,可尝试虚拟机两台
2、mysql5.7跟之前的版本不一样,windows上面测试的朋友my.ini可以自己新建
3、对于my.ini的各个参数的解释请随机去百度,这里有我的转载
实操
假设现在两台数据库的mysql均已正常安装,配置如下
服务器 | IP | 账号 | 密码 |
---|---|---|---|
主 | A | AUSER | APWD |
从 | B | BUSER | BPWD |
一般进my.ini只需要更新以下所给信息(有则改之无则加):
[mysqld]
#binlog格式,分三种:statement level,rowlevel,mixed
#三种模式的差别介绍可以看:
binlog_format=mixed
#为服务器标识,主从一定不要一样
server-id = 1
#清理二进制日志的时间间隔
expire_logs_days = 10
#是需要同步的数据库
binlog-do-db
#不需要同步的数据库
binlog-ignore-db = mysql
binlog-ignore-db = test #设置gtid同步方式
gtid_executed_compression_period = 1000 #1000默认
gtid_mode = on #默认off
enforce_gtid_consistency = on #默认off
1、连接主库,并进入mysql
>mysql -u数据库用户名 -p数据库密码
2、为从库创建授权用户slave,密码slave ,B为对应的IP
grant replication slave on *.* to 'slave'@'B' identified by 'slave' ;
3、刷新权限信息
flush privileges;
4、自行创建数据库和数据表并插入相应数据,mysql默认InnoDB,主库可以不用修改引擎
my.ini文件
[mysqld]
#binlog格式,分三种:statement level,rowlevel,mixed
#三种模式的差别介绍可以看:
binlog_format=mixed
#为服务器标识,主从一定不要一样
server-id = 13
#清理二进制日志的时间间隔
expire_logs_days = 10
#是需要同步的数据库
binlog-do-db
#设置gtid同步方式
gtid_executed_compression_period = 1000 #1000默认
gtid_mode = on #默认off
enforce_gtid_consistency = on #默认off
1、连接从库,并进入mysql
>mysql -u数据库用户名 -p数据库密码
2、复制一份主库的数据库到从库,并赋予slave权限
grant all privileges on *.* to 'slave'@'%' identified by 'slave' with grant option;
3、刷新权限或者退出mysql命令行重启mysql服务
4、master建立数据同步
change master to master_host='A',master_user='slave',master_password='slave',master_auto_position=1;
重要说明:部分教程用的master_log_file & master_log_pos 参数来指定,但是slave一旦出现问题,无法确认断节点,数据容易造成不一致,所以才引入gtid(即global transaction ID全局事务ID),想看相应介绍的可以去mysql官网里面搜寻相应的版本然后看看.
5、mysql命令查看从库数据库状态
mysql>show slave status G;
当显示的数据内有:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
就说明可以了
6、自行验证主库更新数据对从库的影响
简介个毛线,[MyCat官网](/)那么详细的介绍不看,非要听我在这摘录?
环境安装
由于Mycat是基于Java开发的,所以JDK环境先安装好,再去安装Mycat,安装教程一大把,我就不赘述了
实现过程
1、为简单明了的看清配置信息,会删除不影响结果的注释,且本记录只针对一个主库和一个从库,分库分表只需要加对应的配置即可,配置文件中有相应的详细说明
2、可以进入mysql把从库的引擎改成MyISAM,如果不想从库有写的功能,也可以将mysql设置成只读数据库
主要是配置读写数据库信息和对应表信息
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="/"><!-- 每一个schema代表一个逻辑数据库 这里的name是程序端使用的数据库名称,对应的数据库账号密码在l中--><schema name="MycatDemo" checkSQLschema="true" sqlMaxLimit="100"><!-- auto sharding by id (long)每个逻辑数据库下面对应的是所有的表,下方RDB代表真实数据库name:对应RDB中的表名primaryKey:RDB中该表的主键dataNode:这些表对应的数据库rule:对应的分片规则--><table name="article" primaryKey="article_id" autoIncrement="true" dataNode="dn1"rule="mod-long" /></schema><!-- 各个数据结点的信息,便于上方schema使用 如果是多个数据结点和多个host,那就同步复制一份dataNode和dataHost数据,然后写上对应的配置信息name:结点的名称dataHost:结点的主机地址database:RDB数据库名称--><dataNode name="dn1" dataHost="localhost1" database="demo" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><!-- 心跳语句检测,检测对应的mysql是否正常运行 --><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="hostM1" url="11.11.11.11:3306" user="root"password="root"><!-- can have multi read hosts --><readHost host="hostS2" url="22.22.22.22:3306" user="root" password="root" /></writeHost><!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --></dataHost></mycat:schema>
主要定义一些分片规则和生成规则之类的
这里尤其要注意一点,有个叫mod-long的function在l中引用到了,但是我只做了一分数据库,所以这里我把默认的3改成了1,如果你有对应的多个数据库分表,则改成相应的数量。
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - .0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -->
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
&
本文发布于:2024-01-28 17:19:37,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064335839009.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |