标签:heartbeat tin 报表 str 数据库连接 故障 授权 分离 game
是一个开源的分布式数据库系统,一个实现了 MySQL 协议的的 Server。前端用户可以把它看作是一个数据库代理,用 MySQL客户端工具和命令行访问,而其后端可以用 MySQL 原生(Native)协议与多个 MySQL服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信。其核心功能是 分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。
指通过某种特定的条件,将存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。
startup_nowrap.bat
暂略
在安装目录中conf
文件夹下存放。
server.xml
:是mycat服务器参数调整和用户授权的配置文件。schema.xml
:管理着 MyCat 的逻辑库(schema
)、表、分片规则、DataNode
以及 DataSource
。rule.xml
:是分片规则的配置文件。分片规则的具体参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启mycat。my.ini
(mysql配置文件)后,重启mysql。(mysql安装目录中没有,如果是windows系统则可能在C盘隐藏目录ProgramData
下)[mysqld]
log-bin=mysql-bin # 开启二进制日志
server-id=1 # 设置server-id
# 默认记录所有库操作
# 不同步哪些数据库
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
# 只同步哪些数据库,除此之外,其他不同步
binlog-do-db = game
CREATE USER ‘用户名‘@‘从数据库Ip‘ IDENTIFIED BY ‘密码‘; # 创建用户
GRANT REPLICATION SLAVE ON *.* TO ‘用户名‘@‘从数据库IP‘; # 分配权限
flush privileges; # 刷新权限
SHOW MASTER STATUS;
my.ini
(mysql配置文件)后,重启mysql。[mysqld]
server-id=2 #设置server-id,必须唯一
CHANGE MASTER TO
MASTER_HOST=‘主数据库IP‘,
MASTER_USER=‘用户名‘,
MASTER_PASSWORD=‘密码‘,
MASTER_LOG_FILE=‘mysql-bin.000003‘, -- 由上,查看master状态得到
MASTER_LOG_POS=73; -- 由上,查看master状态得到
start slave; # 开启
stop slave; # 关闭
show slave status\G;
Slave_IO_Running
、Slave_SQL_Running
都为YES
时表示主从同步设置成功。修改mycat配置文件schema.xml
,配置逻辑库
dataHost
里的writeNode
dataHost
里的readNode
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 逻辑库配置 -->
<schema name="DB1" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
<!-- 节点配置 -->
<dataNode name="dn1" dataHost="host01" database="testdb" />
<!-- 数据库实例:读写分离的配置 -->
<dataHost name="host01" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<!-- 主库 master 配置,可多个-->
<writeHost host="hostM1" url="192.168.20.113:3306" user="test" password="!QAZ2wsx">
<!-- 从库 slave 配置,可多个 -->
<readHost host="hostS1" url="192.168.20.107:3306" user="test" password="!QAZ2wsx" />
</writeHost>
<!--主故障,顶替写节点,主正常是分担读压力-->
<!--
<writeHost host="hostS2" url="" user="root" password="" > </writeHost>
-->
</dataHost>
</mycat:schema>
修改mycat配置文件server.xml
,添加 mycat 用户
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">DB1</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">DB1</property>
<property name="readOnly">true</property>
</user>
使用完全与mysql相同。(PS:注意mycat默认端口号是8066
)
连接时报错 ERROR 1129 (00000): #HY000Host ‘192.168.31.242’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’
原因是同一个ip
在短时间内产生太多中断的数据库连接而导致阻塞。在mysql终端执行 mysqladmin -u root -p flush-hosts
清除缓存后可进行连接。(导致原因需自行查找解决)
报错 ... connect error MySQLConnection ... Unknown charsetIndex:255
修改mycat字符集配置文件index_to_charset.properties
,添加255=utf8mb4
,重启服务。
报错 ... Access denied for user ...
检查用户权限;检查 dataNode
上配置实体库(database
值)是否存在;
sharding-jdbc
:朋友推荐的轻量级组件,需集成到程序中,待研究。标签:heartbeat tin 报表 str 数据库连接 故障 授权 分离 game
原文地址:https://www.cnblogs.com/wscy/p/9991336.html