MySQL

  • 这些日子为了解决业务上的挑战,想要解决MySQL的性能提升方案。

    目前找了主要有:

    1. 分库分表
    2. 读写分离

    读写分离最简单,牺牲一点一致性能减少读的压力,分表也比较简单,但是目前没有特别合适的中间件,结合我们的业务场景,分库是目前最适合下点功夫的。(另外还需要做高可用,可以做双主,但是不需要我过多参与,因此这里不谈。)

    背景介绍

    • MongoDB用来存储大部分非事务相关的业务
    • MySQL用来做电商相关业务,所有数据几乎都与账户ID相关
    • 账户ID是MongoDB的ObjectId
    • 对于普通用户来说没有关联到其他用户的操作
    • 管理员需要统计以及查看所有的用户数据

    分库算法

    一致性hash

    需要停机

  • 今天重启电脑后 MySQL 又用不了了!

    然后查看了错误日志 :

    $ sudo cat /usr/local/mysql/data/jh.local.err
    2016-10-01T15:51:09.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
    2016-10-01T15:51:09.574413Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defau
  • 一.创建数据库用户

    首先用root账号进入MySQL:

    $ mysql -u root -p
    

    然后输入密码即可。

    创建数据库并设置编码为 utf8,不然中文可能会乱码:

    > create database mydb default character set utf8 defa
    ult collate utf8_general_ci;
    

    新建用户有两种方式

    1.> create user username@hostname identified by 'yourpassword';
    
    2.> insert into mysql.user(host,user,password
  • 今天使用 MySQL 的时候,莫名奇妙除了很多问题。在 Google 和 StackOverflow 搜索了一大堆,也没有找到很好解决办法。Anyway,最终机智的我还是把问题解决。

    在此记录下整个排错过程。

    0. 系统环境

    • 操作系统 OS X EI Caption 10.11.6 (15G31)
    • MySQL 5.7.13
    • /usr/local/mysql/bin/usr/local/mysql/support-files 都已经加入到了系统环境变量

    1. 进入 MySQL 控制台报错

    # 使用 mysql 命令进入 mysql 控制台
    $ mysql -uroot -p
    Ente
  • 远程连接 MySQL 的时候出现如下错误:

    Can't connect to MySQL server on '*.*.*.*' (61)
    

    这是因为 MySQL 默认的 bind-address127.0.0.1, 也就是限制了只能本地访问.

    所以解决方法之一,就是修改 bind-address.

    改为 0.0.0.0 ,任何远程 IP 都能访问.你也可以把它改为你的电脑的 IP,只能你自己访问.

    修改后,重启就好了:

    $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    # 修改 bind-address
    $ sudo service mysq