zoukankan      html  css  js  c++  java
  • MySQL5.7二进制安装及多实例

    MySQL5.7二进制安装(自定义目录)

    #创建自定义目录
    [root@db03 ~]# mkdir /service
    [root@db03 ~]# cd /service
    
    #卸载mariadb
    [root@db03 /service]# yum remove -y mariadb-libs
    
    #创建mysql用户
    [root@db03 /service]# useradd mysql -s -M /sbin/nologin
    
    #安装依赖
    [root@db03 /service]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ numactl libaio glibc cmake autoconf
       
    #官网下载
    #下载地址:https://downloads.mysql.com/archives/community/
    [root@db03 /service]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz
    
    #或者下载到本地上传
    [root@db03 /service]# rz mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz
    [root@db03 /service]# tar xf mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz
    [root@db03 /service]# ll
    total 535916
    drwxr-xr-x 9 mysql mysql       151 Nov 30  2015 mysql-5.7.10-linux-glibc2.5-x86_64
    -rw-r--r-- 1 mysql mysql 548774698 Sep 17 09:37 mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz
    
    [root@db03 /service]# mv mysql-5.7.10-linux-glibc2.5-x86_64 mysql-5.7.10
    
    [root@db03 /service]# ln -s /service/mysql-5.7.10 /service/mysql
    [root@db03 /service]# ll
    total 535916
    lrwxrwxrwx 1 root  root         21 Sep 17 09:46 mysql -> /service/mysql-5.7.10
    drwxr-xr-x 9 mysql mysql       164 Sep 17 09:46 mysql-5.7.10
    
    #创建数据存放目录
    [root@db03 /service]# mkdir /mysql/data
    #授权
    [root@db03 /service]# chown -R mysql.mysql /service/mysql/
    
    #初始化
    [root@db03 /service]# ./mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data
      参数介绍:
        --initialize-insecure  不安全初始化,即没有密码。
        --initialize           安全初始化,会自动生成临时密码。在log-error里,查询 temporary password
        --user=mysql           初始化用户
        --basedir=/service/mysql        软件安装目录
        --datadir=/service/mysql/data   数据存放位置
    
      #注:5.7和5.6版本初始化命令不一样
       5.7:
        /service/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data
       5.6:
        /service/mysql/scripts/mysql_install_db --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data
    
    #编辑MySQL配置文件
    [root@db03 /service]# vim /etc/my.cnf
    [mysqld]
    basedir=/service/mysql
    datadir=/service/mysql/data
    port=3306
    socket=/tmp/mysql.sock
    character-set-server=utf8mb4
    log-error=/var/log/mysqld.log
    pid-file=/service/mysql/data/mysqld.pid
    [mysql]
    socket=/tmp/mysql.sock
    [client]
    socket=/tmp/mysql.sock
    
    #生成启动脚本,并启动测试
    [root@db03 /service]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    [root@db03 /service]# chmod +x /etc/init.d/mysqld 
    [root@db03 /service]# vim /etc/init.d/mysqld
    basedir=/usr/local/mysql
    datadir=/mysql_data
    
    [root@db03 /service]# /etc/init.d/mysqld start
    Starting MySQL. SUCCESS! 
    
    #配置system启动
    #注意关闭之前开启的mysql
    [root@db03 /service]# /etc/init.d/mysqld stop
    
    [root@db03 /service]# vim /usr/lib/systemd/system/mysqld.service
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/service/mysql/bin/mysqld --defaults-file=/etc/my.cnf
    Restart=on-failure
    RestartPreventExitStatus=1
    TimeoutSec=0
    PrivateTmp=false
    LimitNOFILE = 5000
    
    #设置环境变量
    #[root@db03 /service]# vim /etc/profile.d/mysql.sh
    #export PATH=/service/mysql/bin:$PATH
    #[root@db03 /service]# source /etc/profile
    
    #二进制的包是源码包已经生成编译安装完成的,在cmake阶段已经指定了所有的目录都是/usr/local/mysql,所以启动时所有程序都去找/usr/local/mysql目录,没有该目录,所以启动失败
    #解决启动问题
    	1)方法一:做软连接
    	[root@db03 ~]# ln -s /service/mysql /usr/local/mysql
    	
    	2)方法二:修改启动文件
    	[root@db03 ~]# vim /etc/init.d/mysqld 
    	basedir=/service/mysql
    	datadir=/service/mysql/data
    
    [root@db03 /service]# systemctl daemon-reload
    [root@db03 /service]# systemctl start mysqld
    
    

    多实例

    [root@db03 /service]# mkdir -p 330{7,8,9}/{data,log}
    
    #初始化
    [root@db03 /service]# ./mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/service/mysql --datadir=/service/3309/data
    [root@db03 /service]# ./mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/service/mysql --datadir=/service/3308/data
    [root@db03 /service]# ./mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/service/mysql --datadir=/service/3307/data
    
    [root@db03 /service]# vim 3307/my.cnf 
    [mysqld]
    basedir=/service/mysql
    datadir=/service/3307/data
    port=3307
    socket=/service/3307/data/mysql.sock
    character-set-server=utf8mb4
    log-error=/service/3307/log/mysqld.log
    pid-file=/service/3307/mysqld.pid
    [mysql]
    socket=/service/3307/data/mysql.sock
    [client]
    socket=/service/3307/data/mysql.sock
    
    [root@db03 /service]# vim 3308/my.cnf 
    [mysqld]
    basedir=/service/mysql
    datadir=/service/3308/data
    port=3308
    socket=/service/3308/data/mysql.sock
    character-set-server=utf8mb4
    log-error=/service/3308/log/mysqld.log
    pid-file=/service/3308/mysqld.pid
    [mysql]
    socket=/service/3308/data/mysql.sock
    [client]
    socket=/service/3308/data/mysql.sock
    
    [root@db03 /service]# vim 3309/my.cnf 
    [mysqld]
    basedir=/service/mysql
    datadir=/service/3309/data
    port=3309
    socket=/service/3309/data/mysql.sock
    character-set-server=utf8mb4
    log-error=/service/3309/log/mysqld.log
    pid-file=/service/3309/mysqld.pid
    [mysql]
    socket=/service/3309/data/mysql.sock
    [client]
    socket=/service/3309/data/mysql.sock
    
    #授权
    [root@db03 /service]# chown -R mysql.mysql /service/
    
    #启动
    [root@db03 /service]# /service/mysql/bin/mysqld --defaults-file=/service/3307/my.cnf &
    
    [root@db03 /service]# /service/mysql/bin/mysqld --defaults-file=/service/3308/my.cnf &
    
    [root@db03 /service]# /service/mysql/bin/mysqld --defaults-file=/service/3309/my.cnf &
    
    [root@db03 /service]# netstat -lntp        
    tcp6       0      0 :::3306                 :::*                    LISTEN      9324/mysqld         
    tcp6       0      0 :::3307                 :::*                    LISTEN      10621/mysqld        
    tcp6       0      0 :::3308                 :::*                    LISTEN      10787/mysqld        
    tcp6       0      0 :::3309                 :::*                    LISTEN      10951/mysqld        
    
    #停止多实例
    [root@db03 /service]# mysqladmin -S /service/3307/data/mysql.sock shutdown
    
    
    #配置system启动
    [root@db03 /service]# vim /usr/lib/systemd/system/mysqld-1.service 
    [Unit]
    Description=MySQL Server
    After=network.target
    After=syslog.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/service/mysql/bin/mysqld --defaults-file=/service/3307/my.cnf
    Restart=on-failure
    RestartPreventExitStatus=1
    TimeoutSec=0
    PrivateTmp=false
    [Install]
    WantedBy=multi-user.target
    
    
    [root@db03 /service]# vim /usr/lib/systemd/system/mysqld-2.service 
    [Unit]
    Description=MySQL Server
    After=network.target
    After=syslog.target
    [Service]
    User=mysql
    Group=mysql
    PIDFile=/service/3308/mysqld.pid
    ExecStart=/service/mysql/bin/mysqld --defaults-file=/service/3308/my.cnf
    Restart=on-failure
    RestartPreventExitStatus=1
    TimeoutSec=0
    PrivateTmp=false
    [Install]
    WantedBy=multi-user.target
    
    #启动测试
    [root@db03 /service]# systemctl daemon-reload
    
    

    解读mysqld.service配置含义

    [root@db03 /service]# vim /usr/lib/systemd/system/mysqld.service
    
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/service/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
    Restart=on-failure
    RestartPreventExitStatus=1
    TimeoutSec=0
    PrivateTmp=false
    LimitNOFILE = 5000
    
    
    # 表示如果network.target或syslog.target需要启动,那么mysql服务应该在它们之后启动
    After=network.target
    After=syslog.target
    
    # 定义运行用户和组
    User=mysql
    Group=mysql
    
    
    # 定义启动进程时执行的命令
    ExecStart=/service/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
    
    # Restart定义了此服务退出后Systemd的重启方式。
    # on-failure表示非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启。如正常退出停止(即systemctl stop)就不会重启。
    Restart=on-failure
    
    # 此配置定义了当符合某些退出状态(用exit code表示)时不要进行重启,1表示该程序被挂起。
    RestartPreventExitStatus=1
    
    # 此配置同时定义了TimeoutStartSec 和 TimeoutStopSec的值
       •  TimeoutStartSec: 配置等待启动的时间。如果守护程序服务未在配置的时间内指示启动完成,则该服
    务将被视为失败,并将再次关闭。默认以秒为单位,或者 “5min 20s” 之类的时间跨度值。0表示禁用
       •  TimeoutStopSec: 此选项有两个目的。首先,它配置等待每个ExecStop的时间。如果其中任何一个超
    时,则后续的ExecStop将被跳过,服务将被SIGTERM终止。如果未指定ExecStop,则该服务将立即获取SIGTERM。
    其次,它配置等待服务本身停止的时间。如果未在指定时间内终止,它将被SIGKILL强制终止。默认以秒为单
    位,或者 “5min 20s” 之类的时间跨度值。0表示禁用
    
    TimeoutSec=0
    
    # 是否使用私有的tmp目录,即产生的临时文件(如我们在my.cnf文件中配置的 "socket=/tmp/mysql.sock" )是否直接存放到/tmp 目录下
    # 如果为true,临时文件一般会保存到systemd-private-XXX-mysql.service-XXX/tmp/下。
    PrivateTmp=false
    
    # 此配置和服务开机自启相关,表示该服务所在的Target。multi-user.target表示运行级别,为运行级别3,完全的多用户。
    # 即当执行 "systemctl enable mysql"时, 会创建一个mysql.service的软链接到/etc/systemd/system/multi-user.target.wants目录下,此目录下服务都会开机自启。
    WantedBy=multi-user.target
    
    
  • 相关阅读:
    架构师养成记--19.netty
    架构师养成记--18.NIO
    架构师养成记--17.disrunptor 多生产者多消费者
    JS计算字符长度、字节数 -- 转
    BootStrap Modal 点击空白时自动关闭
    架构师养成记--16.disruptor并发框架中RingBuffer的使用
    架构师养成记--15.Disruptor并发框架
    架构师养成记--14.重入锁ReentrantLock 和 读写锁 ReentrantReadWriteLock
    049、Java中使用switch判断,不加入break时的操作
    048、Java中使用switch判断
  • 原文地址:https://www.cnblogs.com/backz/p/15303975.html
Copyright © 2011-2022 走看看