CentOS7安装MySQL8的大坑

按官方文档,安装好MySQL后,配置好/etc/my.conf文件,但是启动失败,查日志发现报错:

1
/usr/sbin/restorecon:  lstat(/data/mysql) failed:  No such file or directory

是因为datadir文件夹没有写权限

[阅读全文]

MySQL8创建用户和授权

按之前版本MySQL创建用户和授权

1
2
3
4
5
6
7
8
# 创建用户
CREATE USER '<user>'@'%' IDENTIFIED BY '<password>';

# 授权
GRANT ALL PRIVILEGES ON <database>.* TO '<user>'@'%';

# 刷新权限
FLUSH PRIVILEGES;

在正常登录后报1142错误,经查解决方案如下:

[阅读全文]

MySQL8配置

2017年有篇文章写过关于MySQL中文排序的问题,最早这个问题在2007年MySQL 5.5的时候就有发现,今天研究了一下MySQL 8,找到一个熟悉的字眼collationutf8mb4_zh_*,翻了一下官方文档,终于这个问题得以完美解决了。修改配置文件,重启MySQL后,数据库、表默认字符集和排序都正常。整理配置如下:

[阅读全文]

mysql federated引擎使用

跨服务器操作mysql数据库的需求,mysql提供了federated引擎,进行表映射,然后进行操作

步骤:

  1. 确认federated引擎是否启用,执行:show engines查看引擎状态,找到federated的Support,默认是关闭的,即NO

    [阅读全文]

解决MySQL报too many open files的问题

uat环境一直有偶尔报too many open files,改过ulimit,已经从默认值改到了102400,仍然没有解决 后来网上查,发现其实在MySQL内部也有这个限制,官方文档描述:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_open_files_limit

[阅读全文]

MySQL主从延迟解决方案

版本:5.7.23

现象

过一段时间会发现从库追不上主库,而且差距越来越大

此时通过在主从库上分别查询:select * from information_schema.processlist where info is not null order by host 得知:

  1. 主库一直有不断的增删改操作
  2. 从库一直只有查询操作

查从机:show slave status,得知:

[阅读全文]

关于mysql驱动的DSN字符问题

此次重构发现之前的loc参数一直为空,不太记得是当时刻意为之,还是当时发生了错误未解决 所以在生产上就加了配置asia/shanghai,报错了:invalid DSN: did you forget to escape a param value? 这个好办,转换一下就行了,改成:asia%2Fshanghai

[阅读全文]
golang  mysql  DSN 

MySQL中间件选择

MyCAT(1.6.5)

先天不足,发现部分应用有兼容性问题

  1. XXL-JOB官方文档有说明:如果mysql做主从,调度中心集群节点务必强制走主库
  2. flyway也不支持!

TiDB(2.0版)

对运行环境硬件配置要求高得变态,某公司的服务器上了高性能SSD仍然不能满足IOPS要求(<40000)

[阅读全文]

基于容器的MySQL定时备份数据库

注:以下使用mysqldump方式备份会导致锁表,生产环境备份建议使用xtrabackup

  1. 将如下内容添加至:/data/backup.sh
1
2
3
docker exec -i data_mysql_1 mysqldump -uroot -pPassword dbname > /data/`date +%Y%m%d`.sql \
	&& tar -zcvf `date +%Y%m%d`.tar.gz `date +%Y%m%d`.sql \
	&& rm -fr /data/`date +%Y%m%d`.sql
  1. 添加执行权限:
1
sudo chmod +x /data/backup.sh
  1. 在宿主机加定时调度,每天凌晨1点执行:crontab -e
1
0 1 * * * /bin/bash /data/backup.sh

docker exec -i不能加t,也不需要加t!!!这里坑了很久!

[阅读全文]

mysql常见问题

问题

create table: Specified key was too long; max key length is 767 bytes

原因

数据库表采用utf8编码,其中varchar(255)的column进行了唯一键索引 而mysql默认情况下单个列的索引不能超过767位(不同版本可能存在差异)

[阅读全文]
mysql