一、日志
1.1、错误日志
通过模糊匹配:查看数据库相关日志位置
show variables like '%log_error%';
退出mysql命令行并进入root权限下:
tail -50 /var/log/mysqld.log
1、测试
标签1中监控日志文件后几行数据
tail -f /var/log/mysqld.log
在标签2中制造一个错误:修改mysql服务文件中唯一的UUID,再重启mysql服务器,造成服务器启动失败,查看日志
vim /var/lib/mysql/auto.cnf
重启服务器:
systemctl restart mysqld
查看日志:
1.2、二进制日志
1、索引文件与日志文件:
再/etc/my.cnf文件中通过参数改变日志格式后也会新建一个binlog文件
2、日志格式
3、查看基于行Row的二进制日志文件
修改数据表数据后查看日志信息:
4、修改为基于Sql语句的二进制日志文件
vim /etc/my.cnf
重启服务
但是只会记录DML和DCL语句,不会记录查询语句SQL
5、删除二进制文件
1.3、查询日志
跟踪日志文件后几行内容:
tail -f /var/log/mysql_query.log
1.4、慢查询日志
监测master-slow.log文件尾部内容变化
tail -f master-slow.log
二、主从复制
2.1、概述
数据备份要加全局锁避免数据不一致,当前数据库处于只读状态,主库正常增删改,从库仍可以查询。
2.2、原理
2.3、配置主从数据库
1、主库配置
主库设置为可读可写:read-only=0
2、从库配置
从库设置为只读:read-only=1
三、分库分表
3.1、概述
1、单数据库存储所带来的问题
2、解决方法
3.2、拆分方法
1、垂直拆分
2、水平拆分
3、如何保证可以访问多个数据库
以前应用程序只需要访问一个数据库,现在分库后形成了多个数据库,如何保证可以访问多个数据库?
3.3、Mycat中间件
需要再主数据服务器中按照JDK和Mycat。
解压JDK
配置环境变量
解压Myca文件夹
然后再mycat的lib文件夹中上传一个高版本的包。
3.4、Mycat核心结构
3.5、Mycat入门
1、配置Mycat
配置Mycat配置文件:设置分表的策略
在NotePad++中配置,不容易出错
找到配置文件
找到server.xml文件
2、启动Mycat测试
切换到bin目录
查看日志是否启动完成
连接mycat服务器账号密码是server.xml文件中配置账号密码。
查看有多少数据库数据表:存在的是逻辑库与逻辑表,真实并不存在
3、创建数据表
4、插入数据
查询数据表发现,这三条数据全插在了第一个分片节点内,第二第三个节点数据表为空
由于上面文件就设置的分片规则,导致数据的插入方式。auto-sharding-long 是根据id进行插入的:
3.6、Mycat配置文件
1、Schema.xml:配置逻辑库/表,分片规则/节点
总结:
2、rule.xml
3、Server.xml
3.7、Mycat垂直分片(库)
1、 配置文件设置:
设置完后要重启
2、建物理表/插入数据
创建物理表:
3、在mycat中进行多表联查
1、查地址,在同一个分片中
Mycat中用同样的查询语句即可
2、订单查询,查询字段不在同一个节点中
报错:
解决:
设置完成后重启mycat,把物理数据库中对应的哪些表全删除,重新执行脚本文件创建表并插入数据。
3.8、水平分表
1、服务器准备准备:四台服务器,三台数据库服务器创建三个itcast数据库
2、mycat配置文件中声明逻辑库逻辑表
3、底层数据库创建tb_log表结构
3.9、分片规则
1、范围分片
2、求模分片
3、一致性Hash
4、枚举分片
默认节点是只当要插入的节点超出了枚举节点会像默认节点中插入:例如只设置了1,2,3分别插入对应的检索值0,1,2节点,如果插入的是4,枚举中没有4,默认查到第二个节点,即检索值是1的节点。
5、其他分片
3.10、mycat管理与监控
1、运行原理于内部执行流程
2、管理工具
3、Mycat监控工具
安装Zookeeper
安装Mycat-Web
四、读写分离
4.1、介绍
4.2、一主一从----读写分离
修改balance属性
4.3、双主双从主从复制配置
**双主双从可以解决一主一从中主库宕机后无法插入数据的问题。**实现高可用
1、主库配置
2、第二个主库配置
3、从库配置
第1台从库
第2台从库
4、关联主库从库
5、关联两个主库
主库1(211)关联主库2(213)主库2(213)关联主库1(211)
结果:在主库master1中建立数据库后db01,主库master2和两个从库也会出现此数据库db02