部署mysql

75 阅读5分钟

部署mysql

安装前准备

操作系统信息检查 [ ~]# cat /etc/redhat-release

主机版本检查 [ ~]# uname -a

存储检查 [ ~]# df -hT

内存信息[~]# free -m

cpu信息[~]# lscpu

网卡信息检查 [ ~]# ifconfig -a

磁盘信息检查fdisk -l

资源限制

#!/bin/bash #optimization of mysql host system parameter echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf echo "fs.file-max = 65536" >> /etc/sysctl.conf echo "net.core.netdev_max_backlog = 32768" >> /etc/sysctl.conf echo "net.core.rmem_default = 8388608" >> /etc/sysctl.conf echo "net.core.rmem_max = 16777216" >> /etc/sysctl.conf echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf echo "net.core.wmem_default = 8388608" >> /etc/sysctl.conf echo "net.core.wmem_max = 212992" >> /etc/sysctl.conf echo "net.ipv4.ip_local_port_range = 10000 65000" >> /etc/sysctl.conf echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf echo "net.ipv4.tcp_keepalive_intvl = 15" >> /etc/sysctl.conf echo "net.ipv4.tcp_keepalive_probes = 3" >> /etc/sysctl.conf echo "net.ipv4.tcp_keepalive_time = 1200" >> /etc/sysctl.conf echo "net.ipv4.tcp_max_orphans = 3276800" >> /etc/sysctl.conf echo "net.ipv4.tcp_max_syn_backlog = 65536" >> /etc/sysctl.conf echo "net.ipv4.tcp_max_tw_buckets = 6000" >> /etc/sysctl.conf echo "net.ipv4.tcp_mem = 94500000 91500000 92700000" >> /etc/sysctl.conf echo "net.ipv4.tcp_retries2 = 5" >> /etc/sysctl.conf echo "net.ipv4.tcp_rmem = 32768 436600 873200" >> /etc/sysctl.conf echo "net.ipv4.tcp_syn_retries = 2" >> /etc/sysctl.conf echo "net.ipv4.tcp_synack_retries = 2" >> /etc/sysctl.conf echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf echo "net.ipv4.tcp_wmem = 8192 436600 873200" >> /etc/sysctl.conf echo "vm.dirty_background_ratio = 50" >> /etc/sysctl.conf echo "vm.dirty_ratio = 50" >> /etc/sysctl.conf echo "vm.dirty_writeback_centisecs = 360000" >> /etc/sysctl.conf echo "vm.drop_caches = 1" >> /etc/sysctl.conf echo "vm.max_map_count = 655360" >> /etc/sysctl.conf echo "vm.min_free_kbytes = 4096000" >> /etc/sysctl.conf echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf echo "vm.swappiness = 5" >> /etc/sysctl.conf

sysctl –p

一、首先卸载服务器上自带的MariaDB或mysql数据库 1、卸载rpm包 1.1、查看mysql相关包:

        >> rpm -qa|grep mysql  
        >> rpm -qa| grep maria

1.2卸载mysql的rpm包:

    >> rpm -e --nodeps xxxx(上一步查出来的rpm包) 

2、删除相关目录 2.1、查看mysql命名的目录文件:

        >> find / -name "mysql"

2.2、删除相关目录:

rm -rf xxx(上一步查出来的目录,注意别删错了,比如解压的安装包名也带有mysql,可用 grep反向过滤) 主要为以下目录:

/var/share
/usr/local/lib
/usr/local/lib64
/usr/bin等

1.官网安装

下载 rpm包:https://dev.mysql.com/downloads/
​
 yum install -y mysql80-community-release-el7-7.noarch.rpm
​
 mysql-community-source.repo 源代码包
​
 mysql-community.repo   主包 
​
修改主包为需要的版本
​
vim /etc/yum.repos.d/mysql-community.repo
​
yum makecache
​
再次查看mysql-community.-server 是否为 5.7
​
yum list | grep mysql
​
yum install -y mysql-community*
​
systemctl start mysqld
​
grep 'password' /var/log/mysqld.log
​
mysql -uroot -p
​
mysqladmin -uroot -p'#TdA7%94DMfR' password 'Admin@123456'

2.RPM国内镜像安装

需要2G内存、关闭防火墙和selinux、

1.访问国内镜像站 下载

mirrors.ustc.edu.cn

2.下载

mkdir -p /app/mysql
cd /app/mysql
​
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-server-5.7.30-1.el7.x86_64.rpm
​
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-client-5.7.30-1.el7.x86_64.rpm
​
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-common-5.7.30-1.el7.x86_64.rpm
​
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-libs-5.7.30-1.el7.x86_64.rpm

3.安装相关软件

yum install -y net-tools.x86_64 libaio.x86_64 perl.x86_64

4.安装mysql服务器

yum install -y mysql-community*
​
报错信息:
​
yum remove -y mariadb-libs.x86_64

5.启动mysql

systemctl start mysqld
​
systemctl enable mysqld
​
systemctl status mysqld

6.查询默认密码

grep 'password' /var/log/mysqld.log

7.修改默认密码

mysqladmin -uroot -p '默认密码 '  password '新密码'

8.登录mysql

mysql -uroot -p 'password'

9.查看默认数据库

show databases;

10.关机快照

3.源码包*

1.准备编译环境

yum install -y  ncurses ncurses-devel openssl openssl-devel bison gcc gcc-c++ make cmake
​
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.30-1.el7.src.rpm
​
获取源码
    -如果下载的是压缩包,直接上传服务器解压即可。
    -但如果是src.rpm格式的文件,想要一个额外步骤。同样上传服务器,运行以下命令, 
        >> yum install -y rpm2cpio
        >> rpm2cpio Mysql-xxx-xxx.src.rpm | cpio -idmv
    解压:
        >> tar vxf mysql-xxx-xxx.tar.gz 得到mysql源码文件
        >> tar vxf boost-xxx-xxx.tar.gz 得到boost源码文件
        
wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download

2.安装mysql

2.1准备源码包

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
​
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
mkdir -p /var/run/mysql
mkdir /var/log/mysql
chown -R mysql:mysql /var/run/mysql
chown -R mysql:mysql /var/log/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
​
tar xvf mysql-5.7-30.tar.gz 
tar xvf boost_1_59_0.tar.gz
​
cd mysql-5.7.30

2.2配置

cmake  . -DWITH_BOOST=/root/boost_1_59_0 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/usr/local/mysql/data -DINSTALL_MANDIR=/usr/share/man -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSETS=utf8 -DEXTRA_CHARSETS=all  -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
​
-DDEFAULT_COLLATION=utf8_general_ci

3.编译

make
​
make install
​
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
​
/usr/local/mysql/bin/mysqld_ssl_rsa_setup --datadir= /usr/local/mysql/data
​
建立mysql配置文件 my.cnf
vim /etc/my.cnf
​
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
​
​
ls support-files/
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld   #添加mysql服务
chkconfig mysqld on     #开机启动
​
systemctl status mysqld
systemctl start mysqld
systemctl status mysqld
​
bin/mysql  -uroot -p   #登陆成功# 将mysql命令添加到环境变量中
echo 'export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/sbin' >> /etc/profile
source /etc/profile
​
登录数据库修改密码
    >> mysql -uroot -p
    > (这里输入刚刚initialize时保存的密码)
    如果出现报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/xxx/xxx/mysql.sock' (2)
    则说明:
        1、mysql.sock文件上级目路权限不对
        2、mysql.sock文件上级目录不存在
        3、编译时指定的socket文件路径和配置文件中指定的路径不同  
    这里进入mysql交互界面====================>>>
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';             #修改数据库登录密码
            SET PASSWORD=PASSWORD('Admin@123');
    注意:这里密码不能太短,否则修改不成功,需要超过8位即可。
    
    如果后面想设置简单点的密码,需要修改两个参数:validate_password_policy和validate_password_length。
    但是刚安装可能没有加载validate_password 插件,修改时会提示: 
        ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
    安装及设置:
        mysql> install plugin validate_password soname 'validate_password.so';
        Query OK, 0 rows affected (0.02 sec)
        
        mysql> set global validate_password_policy=0;
        Query OK, 0 rows affected (0.00 sec)
        
        mysql> set global validate_password_length=你自己想要的长度;
        Query OK, 0 rows affected (0.00 sec)

自建YUM源

服务端

1.安装ftp

yum install -y vsftpd

2.准备ftp主目录

mkdir /var/ftp/mysql57/

3.官网下载yum仓库的包

yum install -y mysql57-community-releaase-el7-11.noarch.rpm
ls /etc/yum.repos.d/
yum list | grep mysql

4.仅下载安装mysql

yum remove -y mariadb-libs.x86_64
​
yum install -y mysql-community-server --downloadonly

5.查找下载的mysql安装包

find /var/cache/yum/x86_64/7/ -iname "*.rpm" -exec cp -rf {} /var/ftp/mysql57  ;

6.创建依赖关系

cd  /var/ftp/mysql57/
yum provides createrepo 
yum install -y createrepo
createrepo /var/ftp/mysql57   #解决依赖关系
systemctl start vsftpd
客户端

1.自建yum仓库

vim /etc/yum.repos.d/mysql57.repo
​
[mysql57]
name=mysql-ftp
baseurl=ftp://192.168.88.10
gpgcheck=0
enabled=1

2.安装

yum makecache 
​
yum install -y mysql-community-server

3.启动MySQL

systemctl start mysqld
​
systemctl status mysqld
​
netstat -anpt | grep 3306
​
grep password /var/log/mysqld.log 

3.登陆数据库 更改密码

mysql -uroot -p             
SET PASSWORD=PASSWORD('Admin@123');

SQL语言