• CentOS 7 MySQL5.7 多实例(多端口)


    本次多实例可以用TAR二进制包配置,也可以用RPM安装包,文档最后有官方文档。

    我会尽量写成自动脚本,方便大家操作,只需要复制到LINUX 之后就可以自动操作完成。

    准备工作

    tar安装包:默认已经下载好mysql 安装包,名称为: mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz ,我的安装包位置:/root 。我服务器没有网络,只能通过sftp上传。

    安装位置:mysql程序安装路径为:/usr/local/mysql  ,数据库路径为:/usr/local/mysql/data。路径可以修改,只要批量把脚本中的路径替换即可。

    MYSQL安装

    可参考文档  CentOS 7 MySQL5.7 TAR包解压 全自动化脚本

    #创建mysql用户组
    groupadd mysql
    #创建一个用户名为mysql的用户并加入mysql用户组
    useradd -g mysql mysql
     #制定password 为123456 passwd mysql
    
    #我安装到/usr/local
    tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz 
    mv mysql-5.7.21-linux-glibc2.12-x86_64   /usr/local/mysql
    cd /usr/local
    
    #更改所属的组和用户
    chown -R mysql mysql/
    chgrp -R mysql mysql/
    cd mysql/
    #数据库路径
    mkdir data
    chown -R mysql:mysql data

    mv /etc/my.cnf /etc/my.cnf.back
    #写入配置cat>> /etc/my.cnf<<EOF [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] skip-name-resolve #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=/usr/local/mysql # 设置mysql数据库的数据的存放目录 datadir=/usr/local/mysql/data pid-file=/usr/local/mysql/data/mysql.pid # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB lower_case_table_names=1 max_allowed_packet=16M EOF#安装和初始化 # 注data目录中不能有文件bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/#安装服务 cp ./support-files/mysql.server /etc/init.d/mysqld chown 777 /etc/my.cnf chmod +x /etc/init.d/mysqld # 启动服务 /etc/init.d/mysqld start #设置开机启动 chkconfig --level 35 mysqld on chkconfig --list mysqld chmod +x /etc/rc.d/init.d/mysqld chkconfig --add mysqld chkconfig --list mysqld service mysqld status
    #配置etc/profile/ 用于mysql登录 # 在unset i后添加export PATH=$PATH:/usr/local/mysql/bin sed -i '/unset i/a export PATH=$PATH:/usr/local/mysql/bin' /etc/profile source /etc/profile

    #登录
    mysql -uroot -p

    #到此mysql安装完成

    多实例配置

     位置在:/data 路径中,创建3个目录分别为:3307 ,3308,3309。这三个实例的端口号也是 3307 ,3308,3309

    #准备多个目录
    mkdir -p /data/330{7,8,9}/data
    
    #创建配置文件
    cat>> /data/3307/my.cnf<<EOF
    [mysqld]
    basedir=/usr/local/mysql
    datadir=/data/3307/data
    pid-file=/data/3307/data/mysql.pid
    log_error=/data/3307/data/mysql.log
    socket=/data/3307/mysql.sock
    log_bin=/data/3307/mysql-bin
    user=mysql
    port=3307
    server_id=3307
    EOF
    
    #复制配置文件
    cp /data/3307/my.cnf /data/3308
    cp /data/3307/my.cnf /data/3309
    
    #修改地址
    sed -i 's#3307#3308#g' /data/3308/my.cnf
    sed -i 's#3307#3309#g' /data/3309/my.cnf
    
    #初始化数据库
    mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data  --basedir=/usr/local/mysql
    mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data  --basedir=/usr/local/mysql
    mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data  --basedir=/usr/local/mysql
    
    #授权
    chown -R mysql.mysql /data/*
    
    cd /usr/lib/systemd/system/
    
    at>>mysqld3307.service<<EOF
    
    [Unit]
    Description=MySQL3307 Service
    Documentation=man:mysqld(8)
    Documentation=http://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
    Type=forking
    PIDFile=/data/3307/data/mysql.pid
    
    # Disable service start and stop timeout logic of systemd for mysqld service.
    TimeoutSec=0
    
    # Execute pre and post scripts as root
    PermissionsStartOnly=true
    
    # Needed to create system tables
    #ExecStartPre=/usr/bin/mysqld_pre_systemd
    
    # Start main service
    ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf --daemonize --pid-file=/data/3307/data/mysql.pid $MYSQLD_OPTS
    
    # Use this to switch malloc implementation
    EnvironmentFile=-/etc/sysconfig/mysql
    
    # Sets open_files_limit
    LimitNOFILE = 5000
    
    Restart=on-failure
    
    RestartPreventExitStatus=1
    
    EOF
    
    #复制配置文件 cp mysqld3307.service mysqld3308.service cp mysqld3307.service mysqld3309.service #修改地址 sed
    -i 's#3307#3308#g' mysqld3308.service sed -i 's#3307#3309#g' mysqld3309.service #重新加载服务配置文件 systemctl daemon-reload #启动服务 systemctl start mysqld3307.service systemctl start mysqld3308.service systemctl start mysqld3309.service #开机启动 systemctl enable mysqld3307.service systemctl enable mysqld3308.service systemctl enable mysqld3309.service 验证多实例 netstat -lnp|grep 330 mysql -S /data/3307/mysql.sock -e "select @@server_id" mysql -S /data/3308/mysql.sock -e "select @@server_id" mysql -S /data/3309/mysql.sock -e "select @@server_id" netstat -lnp|grep 330 #查看服务是否启动 ps -ef | grep mysql #查看MySQL进程 ps -axo cmd | grep mysql #查看MySQL进程

     官方上档:https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

  • 相关阅读:
    gerrit 修改前一次提交的方法(转载)
    数据结构实验之图论六:村村通公路 【克鲁斯卡尔算法】
    数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
    数据结构实验之图论四:迷宫探索【dfs 求路径】
    Java 【打印俄文的英文字母】
    【留给自己的独白,长大了】
    Java 【 ArrayList应用 】 (SDUT 4069 C~K的班级)
    你的勇气去哪里了
    Java的 「 “ 结构体 ”」 与 「 “ 自定义排序 ” 」
    Java 中的 SimpleDateFormat 【 parse 和 format 】【转换时间格式】
  • 原文地址:https://www.cnblogs.com/ypeuee/p/13502053.html
Copyright © 2020-2023  润新知