摘要:传统主从的缺陷 传统主从模式,主节点负责写日志,从节点照着日志,执行完全相同的操作,从而实现数据同步。 缺点:极端情况下,在主节点坏掉的瞬时,日志没发送到从节点,导致出现少量的差异。 优点:主节点不需要关注从节点的状态,更新数据的效率最高。 尽管存在缺点,但是有些系统,容忍这种问题的存在:像是办公、
阅读全文
摘要:场景 初始化步骤执行完,忘记记录控制台展示的密码; 程序安装太久,忘记初始密码; docker、swarm 等环境,初始步骤失败,导致 root 账号无法登录。 初始化数据库 修改 my.cnf 文件,在 mysqlId 段落,添加下面这一行,之后不用密码就能登录。 修改 .cnf 文件之后,需要执
阅读全文
摘要:概念 本想把文章取名为集群(cluster),想想还是算了,称作主从复制(master-slave)会好一些, 因为 mysql 中已经存在一个 mysql-cluster,mysql 分布式版本的安装包叫这个名字。 主从复制的功能:一台主机负责写入数据,其它主机实时同步这些数据,每一台机子数据完全
阅读全文
摘要:常用于数据备份与恢复 导入 sql 文件 # 导入 sql 文件,需要登录 mysql 之后执行 source D:/xxx/xxx/back.sql; # 导入 sql 文件,不登录直接导入,与 mysqldump 命令对应 mysql -u [username] -p [database_nam
阅读全文
摘要:常用 -- 查看所有连接的情况 show processlist; -- 查看当前系统的连接数 show status like 'Threads_connected'; -- 各类查询语句执行次数 show status like 'com%'; -- 试图连接 mysql 服务器的次数 show
阅读全文
摘要:在 navicat 上跑查询语句,不论执行什么都会报错 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_sch
阅读全文
摘要:总的来说,不推荐把 mysql 安装到 docker 下,这么安装的后果,是需要自己或公司长期维护。 要求你有 “极大的信心” 和 “充足的时间” 解决过程中的所有问题。 数据库是核心,哪怕未来 docker 没落了,数据库可能还在使用; 安装过程,越简单约好,装得越复杂,风险越大; 数据库大部分人
阅读全文
摘要:MyBatis 另类用法:动态载入 xml 配置,获取渲染好的 SQL 语句。 业务场景: 在制作报表系统的时候,经常会有一个很头疼的事情:明明只是写一个 SQL 的事情,但是系统各种配置,客户用不明白,时间久了,我们自己忘得差不多; 这时候,我们就会去思考:要不直接开放写 SQL 的权限?客户想怎
阅读全文
摘要:下载 https://downloads.mysql.com/archives/community/ 根据自己的 linux,选择 mysql 版本,我的 linux 版本是 Alibaba Cloud Linux 3.2104 LTS 64 位, 选择:mysql-8.0.32-linux-gli
阅读全文
摘要:在制作动态报表的时候,如果需要字段灵活配置,用 json 存储数据,可以让设计变得非常简单。 业务场景: 绩效系统中,需要从 10 个系统中抓取不同数据,每次只会使用其中 n 个,具体哪几个看领导心情,设计一张表存储抓取到的数据。 傻瓜式做法,设计一张表,从字段 1 列到字段 10,数据保存在固定的
阅读全文
摘要:-- 给字段设置默认值 ALTER TABLE t_sys_user ALTER COLUMN user_phone SET DEFAULT ''; -- 修改非空约束等 ALTER TABLE t_sys_user MODIFY COLUMN `user_phone` varchar(16) NO
阅读全文
摘要:mysql 支持地理空间数据类型,可以将数据转为 WKT 格式,然后进行存储。 WKT 几何对象表示的示例: POINT(6 10) LINESTRING(3 4,10 50,20 25) POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)) MU
阅读全文
摘要:业务场景 通过 A 数据库的连接,访问 B 库的数据。 有时候,只是需要访问数据库的一两张表,并不是十分乐意新增一个数据源。 解决方案 这时候,就可以考虑,是否启用 FEDERATED 存储引擎, 如果需要在一个项目中配置多个数据源,可以考虑苞米豆的 dynamic-datasource 启用 FE
阅读全文
摘要:-- 创建用户 CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; ALTER USER 'username'@'localhost' IDENTIFIED BY 'password'; -- mysql8 的用户可能无法在 na
阅读全文
摘要:像 Oracle 一样,给查询结果集增加一个 ROW_NUM。 SELECT @r :=@r + 1 AS ROW_NUM, a.* FROM ( -- 任意查询 SELECT * FROM t_sys_user ) a, (SELECT @r := 0) b 下面是一个奇葩的案例:用别人看不懂的方
阅读全文
摘要:概述 数据库产生锁,一般就是锁等待,等待超时,就直接报错。 ** 案例一:** 更新一些数据,需要很长时间才能完成,这时候其它线程,也想更新这些数据,就会进入等待。 ** 案例二:** 使用了 for update 语句。 select * from demo for update; ** 案例三:
阅读全文
摘要:研究连接的交互式与非交互式,因为这与超时时间有关。 连接超时时间 连接超时时间,当连接空闲时间达到一定阈值,连接就会会被回收,未提交的事务会被回滚。 配置超时时间,需要修改 my.cnf 文件,有两个参数可供选择: interactive_timeout:服务器关闭交互式连接前等待活动的秒数,默认值
阅读全文
摘要:程序员往往整个职业生涯都在与空值问题作斗争。 简单唠唠,空值对程序上各个环节设计,所带来的的影响。 数据库的null Conceptually, NULL means “a missing unknown value” and it is treated somewhat differently f
阅读全文
摘要:实战价值 没啥用,因为要进行导出,需要开启 secure_file_priv 参数。 可以通过 set 命令,临时修改参数值,但是通常会失败,因为默认 secure_file_priv 是只读的。 大部分情况,必须修改 my.cnf 文件,然后再重启 mysql。 为了导数据,重启 mysql,多少
阅读全文
摘要:业务场景 做产品分类表的时候,通常会有这样的设计:一个字段是 ID,另一个字段 PID,PID 指向自己的上级分类; 这样的设计带来的问题是:删除全部子类是非常麻烦的一件事情。 优化方案 在设计表之初,增加一个辅助字段 path,令 path 记住自己的 id 路径即可解决这个问题。 以上图为例:
阅读全文