MySQL专业安装方式及注意事项

安装MySQL

下载mysql:
官方网站上下载

  1. 创建一个帐号
groupadd mysql
useradd -g mysql -d /usr/local/mysql -s /sbin/nologin -M mysql
id mysql
  1. 基本软件安装
mkdir /opt/mysql
cd /opt/mysql
tar zxvf /vagrant/MySQL/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
cd /usr/local/
ln -s /opt/mysql/mysql-5.7.19-linux-glibc2.12-x86_64 mysql
chown -R mysql:mysql mysql/
  1. 数据库相关的目录创建出来
配置文件:/etc/my.cnf
/data  是一个单独挂载的一个分区
datadir /data/mysql/mysql3306/data
binlog  /data/mysql/mysql3306/logs
        /data/mysql/mysql3306/tmp
mkdir /data/mysql/mysql3306/{data,logs,tmp} -p
  1. 初始化
cd /usr/local/mysql
./bin/mysqld --defaults-file=/etc/my.cnf --initialize

5.6,5.5,5.1
./script/mysql_db_install

./bin/mysql_db_install
  1. 启动
cp support-files/mysql.server /etc/init.d/mysql
/etc/init.d/mysql start

6.连接

cat /data/mysql/mysql3306/data/error.log |grep password  密码位置
#如果出现-bash: mysql: command not found的解决办法
[root@iZ8vbiwiipawb6zekk9elaZ mysql]# mysql -uroot -p
-bash: mysql: command not found
[root@iZ8vbiwiipawb6zekk9elaZ mysql]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@iZ8vbiwiipawb6zekk9elaZ mysql]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@iZ8vbiwiipawb6zekk9elaZ mysql]# source /etc/profile
mysql -S /tmp/mysql3306.sock -p
>alter user user() identified by 'wubxwubx';
  1. 关闭mysql
/etc/init.d/mysql stop

cd /
chown -R mysql:mysql *

扩展问题 权限修改错误

执行了如下命令怎么修复

chown -R mysql:mysql /*

怎么确认MySQL是否启动

  • 进程在不在,是不是你启动的那个进程
  • 启动日志,有没有error
  • 在测试一下MySQL是不是能连进去

linux环境监察

  • 硬件级别的处理
    • CPU、内存出厂时都处在节能模式,要调节成高性能模式
    • 关闭numa
    • Raid卡
      • wb,wt的两个区别
      • wb直接写到raid cache里后就返回
      • wt经过cache写到磁盘返回
      • 建议wb force,任何时间都是wb
  • 系统级别
    • 关闭numa,没在硬件改可以在操作系统关闭,在/boot/grub/grub.conf文件修改
    • ulimit
      • core file size 打开
      • max memory size 设置成unlimited
      • open files 调大,建议65535,再大也行
      • max user processes 调大
    • 网络优化
    • Swap禁用掉
    • IO调度
      • SAS盘:deadline
      • SSD盘:noop
    • 文件系统
      • /data 统一xfs
    • selinux & iptables 禁用
1、优化ulimit
可以使用ulimit -a查看ulimit的数值
[root@iZ8vbiwiipawb6zekk9elaZ ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 3900
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 3900
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@localhost ~]# vim /etc/security/limits.conf
添加如下内容
* soft nofile 204800    #对应open files   
* hard nofile 204800    #对应open files
* soft nproc 204800     #对应max user processes
* hard nproc 204800     #对应max user processes
* soft core 4194304     #对应core file size
* hard core 4194304     #对应core file size
1、关闭防火墙 
[root@localhost opt]# chkconfig iptables off
[root@localhost opt]# chkconfig --list iptables
iptables        0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
[root@localhost opt]# service iptables stop
2、关闭selinux
[root@localhost opt]# vim /etc/sysconfig/selinux
SELINUX=disabled  #修改这行
[root@localhost opt]# setenforce 0 #临时关闭

MySQL启动

  • 系统自启动
cp /usr/local/mysql/script/mysql.server /etc/init.d/mysql
chkconfig add mysql
/etc/init.d/mysqld start|stop|restart
  • 手工方式启动(下面两者为或的关系)
1、/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf/&
2、/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf&
ps:最好不用mysqld_safe启动,原因是mysqld_safe会将mysqld程序异常退出时再新建一个mysqld进程,不利于以后数据库的排查
  • MySQL关闭(下面两者为或的关系)
1、/etc/init.d/mysqld stop
2、mysqladmin -S /tmp/mysq3306.sock -p shutdown(多实例用的比较多)

账号安全加固

  • 提示:低于5.7版本的加固处理
mysql>delete from mysql.user where user!='root' or host!='localhost';
mysql>truncate mysql.db;
mysql>drop database test;

常见MySQL初始化及启动故障

  • so文件依赖缺失
    • ldd /usr/local/mysql/bin/mysqld
[root@iZ8vbiwiipawb6zekk9elaZ mysql]# ldd /usr/local/mysql/bin/mysqld
        linux-vdso.so.1 =>  (0x00007ffc614d3000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1102706000)
        libaio.so.1 => /lib64/libaio.so.1 (0x00007f1102505000)
        libnuma.so.1 => /usr/lib64/libnuma.so.1 (0x00007f11022f9000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f11020c2000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f1101ebe000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f1101cb5000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f11019af000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f110172b000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f1101514000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f1101180000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f1102929000)
        libfreebl3.so => /lib64/libfreebl3.so (0x00007f1100f7d000)
  • 返回的错误码的解读
    • /usr/local/mysql/bin/perror 13
[root@iZ8vbiwiipawb6zekk9elaZ mysql]# /usr/local/mysql/bin/perror 13
OS error code  13:  Permission denied
  • 参数错误
    • error.log提示

分析故障方法

  • 查看error log
  • 打日志打开
  • 利用mysqld手工启动查看
  • 利用strace一下启动过程

mysql配置文件加载顺序

  • 可以利用mysqld --print-defaluts查看加载的参数
[root@iZ8vbiwiipawb6zekk9elaZ ~]# mysqld --verbose --help > id.txt
打开id.txt
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
  • 怎么判断用什么配置文件项
    • 利用strace跟踪
[root@iZ8vbiwiipawb6zekk9elaZ ~]# strace /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf > strace_mysqld_start.log 2>&1

管理MySQL多实例

  • 操作

    • 新建一个数据目录,将配置文件复制一份放到数据目录下,将配置文件端口改成你想配置的端口,将server_id按照规则改一下,启动时指定配置文件启动就可以了
  • 多实例中端口怎么分配

    • 一组(一主多从),同一组数据库的端口号是相同的,每组数据库的端口号都是全网唯一的
  • 跑多实例时,需不需要每个实例创建一个用户

    • 在云环境下,有资源隔离,做权限收缩,可以每个实例创建一个用户
    • 本地企业环境大多数情况都只用一个用户
  • 在云环境下

    • 每个实例创建一个用户
    • 云平台需要考虑支持多版本
    • 基本上每个实例都需要有独立的mysqld,一般情况下这个mysqld都是strip后的,体积会小很多,但一般企业用最好不要strip,它会减少很多符号,错误排查会很麻烦
    • 利用docker或是lxc做mysql多实例资源隔离
    • 存储层使用系统本身的磁盘支持
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容