该文章总结一下MySQL的常见安装方式,以tar,yum,script 三种方式来演示:
一般的公司都会有自己统一的数据库安装规范和模板,在生产环境请按照自己的规范来安装和使用,这里只演示和测试,供需要的伙伴们参考
在文章中你会发现有的路径和指定的不一样,这都不影响,都可以自己折腾,毕竟dba在前期就要善于各种折腾,才能在关键时候:水来土掩....
1. 操作系统,系统环境,目结结构,用户,权限,日志路径,脚本
2. 配置规范化
1.1 操作系统准备
操作系统 Kylin Linux release 3.3.1707 (Core)
数据库版本 mysql-5.6.15-linux
mysql相关路径 /data/mysqldata/{3306/{data,tmp,binlog,slave,log/iblog},backup,scripts}
软件路径 /data/soft
备注:麒麟系统3.3,类似于Centos 7
1.2 相关软件准备
选择磁盘挂载目录/data作为mysql数据路径以及其他相关路径
[root@localhost keepalived]# cat /etc/redhat-release
Kylin Linux release 3.3.1707 (Core)
[root@localhost keepalived]# mkdir -p /data/soft
[root@localhost etc]# uname -a
Linux localhost.localdomain 3.10.0-514.ky3.kb3.x86_64 #1 SMP Thu Dec 29 21:29:54 EST 2016 x86_64 x86_64 x86_64 GNU/Linux
1.3 安装配置
1系统规划
Ip Hostname Role Server_id
[root@localhost ~]# lscpu
[root@localhost ~]# free -m #查看内存大小,后面根据该值修改innodb_buffer_pool_size
[root@localhost ~]# df -h #查看磁盘大小,看是否满足/data的要求
[root@localhost ~]# mkdir -p /data/soft #创建放软件的目录,并上传相应的安装包和软件
[root@localhost ~]# sysctl -a |grep swap #查看swap的值,如果是30,修改为10
vm.swappiness = 30
[root@localhost ~]# vim /etc/sysctl.conf #修改并保存(由于这里类似centos7,所以没必要全部关闭swap,避免OOM)
vm.swappiness = 10
[root@localhost ~]# sysctl -p
[root@localhost ~]# cat /sys/block/sda/queue/rotational #查看是ssd还是hdd
[root@localhost ~]# cat /sys/block/sda/queue/scheduler #查看磁盘调度方式
noop [deadline] cfq #hdd默认deadline比较合适,ssd选择noop,修改方式echo deadline > /sys/block/sda/queue/scheduler
[root@localhost ~]# date #查看2个系统的时间,时区,时间是否一致,要保持一致
[root@localhost ~]# hostname #查看并修改hostname
[root@localhost ~]# vim /etc/hosts
[root@localhost ~]# hostnamectl set-hostname mysql1 #另外一台mysql2
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙或者添加3306规则
[root@localhost ~]# systemctl disable firewalld.service
[root@localhost ~]# vim /etc/selinux/config #关闭selinux,并保存,一定要是disabled
SELINUX=disabled
[root@localhost ~]# vim /etc/profile #在文件中增加如下内容:方便在查看history的时候加上日期
HISTTIMEFORMAT="%Y:%M:%D %H-%m-%s"
export=HISTTIMEFORMAT
#设定时区
vim /etc/sysconfig/clock
ZONE=Asia/Shanghai
UTC=false
ARC=false
rm /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# clock -w
[root@localhost ~]# reboot
配置yum源:
本地cd
[root@hqmysql1 dev]# ls -l /dev/cdrom |grep cdrom
lrwxrwxrwx. 1 root root 3 Jun 28 08:26 /dev/cdrom -> sr0
[root@rac1 ~]# mount -t iso9660 /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@hqmysql1 yum.repos.d]# vim public-yum-ol6.repo
[root@hqmysql1 yum.repos.d]# yum clean all
[root@hqmysql1 yum.repos.d]# cat public-yum-ol6.repo #这里用的oracle linux 6.3,其他环境修改类似地方
[ol6_latest]
name=Oracle Linux $releasever Latest ($basearch)
gpgkey=file:///mnt/RPM-GPG-KEY-oracle
baseurl=file:///mnt
gpgcheck=1
enabled=1
163 yum源:注意centos6/7
[root@mysql1slave yum.repos.d]# cat public-yum-ol6.repo
[base]
name=CentOS-$releasever - Base
#baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
baseurl=http://mirrors.163.com/centos/6/os/x86_64/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6
1.4 Mysql环境配置
[root@mysql1 ~]# getenforce
Disabled
[root@mysql1 ~]# groupadd mysql
[root@mysql1 ~]# useradd -g mysql mysql
[root@mysql1 ~]# passwd mysql #密码这里设置为mysql
[root@mysql1 ~]# vim /etc/security/limits.conf
mysql soft nproc 65535
mysql hard nproc 65535
mysql soft nofile 65535
mysql hard nofile 65535
[root@mysql1 ~]# ulimit -n 65535
[root@mysql1 ~]# vim /home/mysql/.bash_profile
export LANG=en_US.UTF-8
export PATH=/usr/local/mysql/bin:$PATH
export MYSQL_PS1="(\u@\h:\p) [\d]> "
tar 二进制安装
安装依赖包
[root@mysql1 ~]# yum -y install lrzsz
[root@mysql1 ~]# yum install -y gcc gcc-* make cmake gcc-c++ libaio libaio-devel bison bison-devel autoconf automake zlib* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* --skip-broken
[root@mysql1 ~]# yum install -y openssl openssl-devel ncurses ncurses-devel
创建mysql相应的目录
[root@mysql1 ~]# mkdir -p /data/mysqldata/{3306/{data,tmp,binlog,slave,log/iblog},backup,scripts}
[root@mysql1 backup]# cd /data/soft/
[root@mysql1 soft]# ll
-rw-r--r-- 1 root root 304382512 Jun 4 23:46 mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
解压并安装mysql
[root@mysql1 soft]# tar -zxvf mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
[root@mysql1 soft]# cd /usr/local/
[root@mysql1 local]# ln -s mysql-5.6.15-linux-glibc2.5-x86_64 mysql
编辑配置文件my.cnf,详细内容见 tar_mysql_cnf.cnf
[root@mysql1 local]# touch /data/mysqldata/3306/my.cnf
[root@mysql1 soft]# mv tar_mysql_cnf.cnf /data/mysqldata/3306/my.cnf
初始化数据库
[mysql@mysql1 3306]$ /usr/local/mysql/scripts/mysql_install_db --defaults-file=/data/mysqldata/3306/my.cnf --datadir=/data/mysqldata/3306/data --basedir=/usr/local/mysql --user=mysql
Installing MySQL system tables...OK
Filling help tables...OK
修改文件目录权限
[root@mysql1 local]# chown -R mysql:mysql /usr/local/mysql/
[root@mysql1 local]# chown -R mysql:mysql /data/mysqldata/
启动mysql数据库
[mysql@mysql1 3306]$ /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf &
查看启动进程
[mysql@mysql1 3306]$ ps -ef|grep mysql
查看启动日志
[root@mysql1 log]# tail -f -n 100 /data/mysqldata/3306/log/mysql-error.log
note:mysql 5.7 初始化和初次登录有所变化
初始化5.7
[mysql@mysql1 bin]$./mysqld --defaults-file=/data/mysqldata/3306/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysqldata/3306/data --user=mysql --initialize
查看初始化后随即生产的root@localhost密码
# cat /data/mysqldata/3306/log/mysql-error.log |grep "root@localhost"|awk -F " " '{print $11}'
[mysql@localhost bin]$ /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf &
[mysql@localhost bin]$ /usr/local/mysql/bin/mysql -uroot -p'BJ=u4XqsTR0h' -S /data/mysqldata/3306/mysql.sock
Yum 安装
这里yum安装后,修改了数据的指定路径,要求在安装后先修改my.cnf配置文件,在启动mysql,切记。
查看yum源看mysql的版本是否存在和一致
[root@mysql1 soft]# yum list|grep mysql
Repository gcc-4.9 is listed more than once in the configuration
Repository other is listed more than once in the configuration
mysql-community-client.x86_64 5.6.15-4.ky3 other
mysql-community-common.x86_64 5.6.15-4.ky3 other
mysql-community-devel.x86_64 5.6.15-4.ky3 other
mysql-community-embedded.x86_64 5.6.15-4.ky3 other
mysql-community-embedded-devel.x86_64
mysql-community-libs.x86_64 5.6.15-4.ky3 other
mysql-community-server.x86_64 5.6.15-4.ky3 other
mysql-community-test.x86_64 5.6.15-4.ky3 other
mysql-connector-odbc.x86_64 5.2.5-6.ky3.kb2 base
rpm -qa | grep mysql
yum list installed | grep mysql
创建相应mysql目录
[root@mysql1 ~]# mkdir -p /data/mysqldata/{3306/{data,tmp,binlog,slave,log/iblog},backup,scripts}
Yum安装mysql
[root@mysql1 ~]# yum install mysql-community-server -y
[root@mysql1 ~]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
[root@mysql1 ~]# which mysql
/usr/bin/mysql
编辑配置文件my.cnf,详细内容见 yum_mysql_cnf_my.cnf
[root@mysql1 local]# touch /data/mysqldata/3306/my.cnf
[root@mysql1 soft]# mv yum_mysql_cnf_my.cnf /data/mysqldata/3306/my.cnf
另外一台mysql,除了修改
server_id=2018071202 #避免双主出现自增冲突
innodb_buffer_pool_size #为实际内存的50%-70%
auto-increment-offset = 2 #避免双主出现自增冲突
[root@mysql1 ~]# chown -R mysql:mysql /data/mysqldata/
[root@mysql1 mysql]# systemctl start mysqld
[root@mysql1 mysql]# ps -ef|grep mysql
注意,yum安装的mysql的相关执行文件在路面 /usr/bin/ 下面
[mysql@mysql1 ~]$ ls /usr/bin/mysqld_safe
/usr/bin/mysqld_safe
查看启动日志
[root@mysql1 ~]# tail -n 100 /data/mysqldata/3306/log/mysql-error.log
yum安装后,可以用systemctl start mysqld 来快捷启动mysql,也可以使用脚本来操作mysql,
所有脚本里面涉及到/usr/local/mysql/bin/的地方全部替换为/usr/bin/
二进制安装与脚本安装的mysql的可执行文件的路径为/usr/local/mysql/bin/
yum安装后,mysql的可执行文件路径为/usr/bin/
脚本自动安装
注意:这里的脚本安装,实际上是二进制安装的一个封装版本,存在一定的风险,报错不容易处理,前提是要配置好yum源,与二进制安装后进行rpm打包的方式不一样
进入目录,查看相关文件和脚本
[root@mysql1 backup]# cd /data/soft/
-rwxr-xr-x 1 root root 6028 Jul 12 05:29 mysql_auto_glibc_56.sh
运行安装脚本,记得一定查看是否报错,如果有报错,修改后,重新运行脚本
[root@mysql1 backup]# ./mysql_auto_glibc_56.sh
查看启动日志
[root@mysql1 ~]# tail -n 100 /data/mysqldata/3306/log/mysql-error.log
初始化mysql账号环境
创建mysql账号
登录mysql数据库,并创建相关用户
常用脚本:(将在其他文章中展示)
[mysql@mysqlhq scripts]$ ll
加入开机启动:
[root@hongquan1 ]# cat /etc/rc.d/rc.local
touch /var/lock/subsys/local
#mysql auto startup
sudo -i -u mysql /data/mysqldata/scripts/mysql_db_startup.sh > /home/mysql/mysql_db_startup.log 2>&1
#zabbix auto startup
/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
#toku,mongodb3.6
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
#date ntpdate
/usr/sbin/ntpdate -u * ; /sbin/hwclock -w