设为首页 收藏本站
查看: 1223|回复: 0

[经验分享] CentOS下mysql多实例操作指南

[复制链接]

尚未签到

发表于 2018-9-27 06:13:12 | 显示全部楼层 |阅读模式
  Mysql工作中无处不在,无数次安装,优化,一直没有时间,整理进行归档,最近在做mysql的Dass服务,把最近遇到的问题,进行整理,梳理一份操作指南;供大家参考;

  序言

  Mysql多实例即一台服务器上运行多个Mysql服务进程 ,开启不同的服务端口,通过不同的socket 监听不同的服务端口来提供各自的服务。

  Mysql多例的好处:

  1、  有效利用服务器资源:通过多实例地配置,可以将服务器剩余的资源充分利用起来。
  2、  资源互相抢占问题:资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降。
  3、  节约资源。

  部署多实例的两种方式



  • 使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;
  • 通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;
  同一开发环境下安装两个数据库,必须处理以下问题



  • 配置文件安装路径不能相同
  • 数据库目录不能相同
  • 启动脚本不能同名
  • 端口不能相同
  • socket文件的生成路径不能相同
    Mysql多实例操作指南
      具体详细参考官网 (https://dev.mysql.com/doc/refman/5.7/en/installing.html)

  • mysql的安装方法有多种,如二进制安装、源码编译安装、yum安装;
  • yum安装都是默认路径,不利于后期维护,安装相对简单;
  • 源码安装编译的过程比较长,若没有对源码进行修改且要求使用mysql较高版本;
  • 建议使用二进制安装。本文以二进制安装mysql,且使用mysqld_mutil进行mysql多实例管理。
    环境准备
  centos7 x64  参考地址:https://dev.mysql.com/downloads/mysql/
  mysql 5.7.22(压缩版)




  • 下载mysql
  

cd /usr/local  
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
  



  • 解压安装
  

tar -zxvf  mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  
mv mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  /usr/local/mysql
  

初始化用户组及用户
  创建一个mysql用户组及用户,且这个用户是不可登录的
  创建用户组:groupadd mysql
  创建不可登录用户:useradd -g mysql -s /sbin/nologin -d /opt/mysql mysql
  查看下创建后的用户信息:id msyql
  

>
uid=501(mysql) gid=501(mysql) groups=501(mysql)  

创建相关目录
  

cd /  
mkdir /data
  
cd /data
  
mkdir mysql
  
cd mysql
  
mkdir {mysql_3306,mysql_3307}
  
cd /data/mysql/mysql_3306
  
mkdir {data,log,tmp}
  
cd /data/mysql/mysql_3307
  
mkdir {data,log,tmp}
  

更改目录权限
  

chown -R mysql:mysql /data/mysql/  
chown -R mysql:mysql /usr/local/mysql/
  

添加环境变量
  

echo 'export PATH=$PATH:/usr/local/mysql/bin' >>  /etc/profile  
source /etc/profile
  

DSC0000.jpg


检查是否配置
  

cat /etc/profile  

  复制my.cnf文件到etc目录(mysql 5.722没有my-default.cnf ,需要自动手动创建或者之前的地方进行copy)



  • 自己创建  

    vim /etc/my.cnf  

    修改my.cnf
      将以下内容,全部替换 /etc/my.cnf中的内容(以下配置,已集成mysql主从配置)

  

[client]  
port=3306
  
socket=/tmp/mysql.sock
  

  
[mysqld_multi]
  
mysqld = /usr/local/mysql/bin/mysqld_safe
  
mysqladmin = /usr/local/mysql/bin/mysqladmin
  
log = /data/mysql/mysqld_multi.log
  

  
[mysqld]
  
user=mysql
  
basedir = /usr/local/mysql
  
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  

  
[mysqld3306]
  
mysqld=mysqld
  
mysqladmin=mysqladmin
  
datadir=/data/mysql/mysql_3306/data
  
port=3306
  
server_id=3306
  
socket=/tmp/mysql_3306.sock
  
log-output=file
  
slow_query_log = 1
  
long_query_time = 1
  
slow_query_log_file = /data/mysql/mysql_3306/log/slow.log
  
log-error = /data/mysql/mysql_3306/log/error.log
  
log-bin = /data/mysql/mysql_3306/log/mysql3306_bin
  
binlog-ignore-db = mysql
  

  
[mysqld3307]
  
mysqld=mysqld
  
mysqladmin=mysqladmin
  
datadir=/data/mysql/mysql_3307/data
  
port=3307
  
server_id=3307
  
socket=/tmp/mysql_3307.sock
  
log-output=file
  
slow_query_log = 1
  
long_query_time = 1
  
slow_query_log_file = /data/mysql/mysql_3307/log/slow.log
  
log-error = /data/mysql/mysql_3307/log/error.log
  
log-bin = /data/mysql/mysql_3307/log/mysql3307_bin
  

  
replicate-ignore-db=mysql
  
relay-log = slave-relay-bin
  
relay-log-index = slave-relay-bin.index
  
read_only
  

  

初始化数据库
  初始化各个实例:初始化完后会在日志中生成密码,记得保存,初始化密码用到
  

cd /usr/local/mysql/  

  
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3306/data/
  
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3307/data/
  

  
##开启各实例的SSL连接
  
bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3306/data/
  
bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql_3307/data/
  

  PS:
  --basedir:mysql的安装目录
  --datadir:数据库的数据文件目录

查看数据库是否初始化成功
  

cd /data/mysql/mysql_3306/data  

DSC0001.jpg


设置启动文件
  

cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi  

给予脚本可执行权限
  

chmod +x /etc/init.d/mysqld_multi  

加入service服务管理
  

chkconfig --add mysqld_multi    

mysqld_multi进行多实例管理



  • 启动全部实例:
      

    /usr/local/mysql/bin/mysqld_multi start    



  • 查看全部实例状态:
      

    /usr/local/mysql/bin/mysqld_multi report    



  • 启动单个实例:
      

    /usr/local/mysql/bin/mysqld_multi start 3306    



  • 停止单个实例:
      

    /usr/local/mysql/bin/mysqld_multi stop 3306    



  • 停止
      

    mysqld_multi stop 3306 --password=root  
    #or 最好用这个
      
    mysqladmin -S /tmp/mysql_3306.sock -uroot -p shutdown
      



  • 查看单个实例状态:
      

    /usr/local/mysql/bin/mysqld_multi report 3306    



  • 查看实例的监听端口:
      

    ss -tulpn|grep mysqld  

    DSC0002.jpg


    修改密码
      

    mysql -S /tmp/mysql_3306.sock -p  



  • 输入之前记录的密码,进入进行密码设置
  

set password=password('123456');  



  • 使修改生效;或者重启服务
  

flush privileges;  

DSC0003.jpg

  

应用路径:/data/web/wordpress  

  
nginx 配置:/usr/local/openresty/nginx/conf/site-enable/help.conf
  

  3307的就不写了,你按照以上方法,进行操作;

设置远程连接mysql:
  

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'>
  
FLUSH PRIVILEGES;
  

  

  其中,root 是用户名,% 表示所有人都可以访问,password是密码,尽量不用使用root,安全很重要
  如果你看到当前位置,你已经成功了,致敬在路上学习的小伙伴伴,与你一起知识总结;
  如果感觉还不错,就分享出去,后续给大家介绍,mysql主从操作构建;

mysql的经典工作操作指南;

Percona Toolkit
  https://www.percona.com/downloads/percona-toolkit/LATEST/

percona-xtrabackup
  https://www.percona.com/doc/percona-xtrabackup/2.1/xtrabackup_bin/incremental_backups.html#



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602462-1-1.html 上篇帖子: Mysql中-Xtrabackup备份和恢复应用 下篇帖子: MySQL-MMM的读写分离及高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表