Tag - MySQL

MySQL    2019-02-20 22:47:04    8    0    0

1 一主三从数据库分布

外网IP 内网IP 数据库编号 功能 数据库端口 数据库连接信息 数据库主从连接信息
123.4.5.6 123.4.5.6 Mysql01 写(主) 3306 User:root PW:** User:slave PW:**
123.4.5.6 123.4.5.6 Mysql02 读(从1) 3307 User:root PW:** User:slave PW:**
123.4.5.6 123.4.5.6 Mysql03 读(从2) 3308 User:root PW:** User:slave PW:**
123.4.5.6 123.4.5.6 Mysql04 读(从3) 3309 User:root PW:** User:slave PW:**

四台数据库服务器访问用户名密码信息密码问谷建峰:

用户名:root

密码:**

2 主从数据库部署图

2.1 数据库主从原理图

2.2 数据库主从方案


解决读写分离的方案有两种:应用层解决和中间件解决
应用层解决:
优点:
1. 多数据源切换方便,由程序自动完成;
2. 不需要引入中间件;
3. 理论上支持任何数据库;
缺点:
1. 由程序员完成,运维参与不到;
2. 不能做到动态增加数据源;
中间件:
优缺点:
优点:
1. 源程序不需要做任何改动就可以实现读写分离;
2. 动态添加数据源不需要重启程序;
缺点:
1. 程序依赖于中间件,会导致切换

MySQL    2019-02-20 22:47:00    3    0    0

sql_mode=only_full_group_by错误处理办法

一:修正版(不影响数据库最佳方法)

1:5.7官方推荐利用ANY_VALUE()这个函数

MYSQL 5.7 官方文档:
  1. SELECT
  2. ANY_VALUE(id)as id,
  3. ANY_VALUE(uid) as uid ,
  4. ANY_VALUE(username) as username,ANY_VALUE(title) as title,
  5. ANY_VALUE(author) as author,
  6. ANY_VALUE(thumb) as thumb,
  7. ANY_VALUE(description) as description,
  8. ANY_VALUE(content) as content,
  9. ANY_VALUE(linkurl) as linkurl,ANY_VALUE(url) as url,
  10. ANY_VALUE(group_id) as group_id,ANY_VALUE(inputtime) as inputtime,
  11. count(id) as count
  12. FROM `news`
  13. GROUP BY `group_id`
  14. ORDER BY ANY_VALUE(inputtime
  15. DESC LIMIT 20

2:不去ONLY_FULL_GROUP_BY, 时 select字段必须都在group by分组条件内(含有函数的字段除外)。(如果遇到order by也出现这个问题,同理,order by字段也都要在group by内)。

二:改MYSQL 5.7 SQL_MODE约束

参考文章https://blog.csdn.net/yalishadaa/article/details/72861737

某些使用group by的sql语句会因为sql_mode=only full group by问题导致错误,所以需要修改MySQL数据库配