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多实例资源隔离
    • 存储层使用系统本身的磁盘支持
阅读更多
换一批

没有更多推荐了,返回首页