翼度科技»论坛 云主机 LINUX 查看内容

MySQL多实例

13

主题

13

帖子

39

积分

新手上路

Rank: 1

积分
39
MySQL多实例

介绍

应用场景
资金紧张公司
若公司资金紧张,公司业务访问量不太大,但又希望不同业务的数据库服务各自能够尽量独立地提供服务而互相不受影响,或者,还有需要主从复制等技术提供备份或读写分离服务的需求,那么,多实例就再好不过了。
用户并发访问量不大的业务
当公司业务访问量不太大的时候,服务器的资源基本上都是浪费的,这时就很适合多实例的应用,如果对SQL语句的优化做得比较好,MySQL多实例会是一个很值得使用的技术,即使并发很大,合理分配好系统资源以及搭配好服务,也不会有太大的问题。
大公司使用mysql读写分离
采用形式:
每个实例都有单独的配置文件启动脚本数据目录
部署MySQL多实例

二进制安装
mysql官网下载
  1. 获取二进制代码包
  2. wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
  3. 安装mysql运行所需的基础依赖
  4. yum install ncurses-devel libaio-devel gcc make cmake -y
  5. 停止mysql服务
  6. /etc/init.d/mysqld stop
  7. 环境清理 清空PATH有关的mysql 注释掉之前的$PATH
  8. #export PATH=/application/mysql/bin:$PATH
  9. 退出登录
  10. [root@localhost ~]# logout
  11. [root@localhost ~]# mysql
  12. -bash: mysql: 未找到命令
  13. 创建用户
  14. useradd -s /sbin/nologin -M mysql
  15. 准备好多实例的目录
  16. mkdir -p /my_mysql/{3306,3307}
  17. 二进制安装比源代码编译安装省去了很多步骤 解压好之后bin目录中文件自动生成
  18. 缺点就是编译安装包30m 二进制包300m
  19. 进入二进制包存在的目录 解压文件  -C 指定目录解压缩
  20. tar -zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz -C /application/
复制代码
准备二进制mysql运行所需要的环境

准备3306实例的my.cnf
  1. cd /my_mysql/3306
  2. vim my.cnf
  3. [client]
  4. port=3306
  5. socket=/my_mysql/3306/mysql.sock
  6. [mysqld]
  7. port=3306
  8. socket=/my_mysql/3306/mysql.sock
  9. basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64
  10. datadir=/my_mysql/3306/data
  11. log-bin=/my_mysql/3306/mysql-bin
  12. server-id=1       
  13. [mysqld_safe]
  14. log-error=/my_mysql/3306/mysql_3306_error.log
  15. pid-file=/my_mysql/3306/mysqld_3306.pid
复制代码
准备3307实例的my.cnf
  1. [client]
  2. port=3307
  3. socket=/my_mysql/3307/mysql.sock
  4. [mysqld]
  5. port=3307
  6. socket=/my_mysql/3307/mysql.sock
  7. basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64
  8. datadir=/my_mysql/3307/data
  9. log-bin=/my_mysql/3307/mysql-bin
  10. server-id=2       
  11. [mysqld_safe]
  12. log-error=/my_mysql/3307/mysql_3307_error.log
  13. pid-file=/my_mysql/3307/mysqld_3307.pid
复制代码
mysql启停脚本

注意 3306和3307 这两个实例,配置文件也得区分开来
3306/mysqld_3306
  1. port=3306
  2. mysql_user="mysql"
  3.     Cmdpath="/application/mysql-5.6.40-linux-glibc2.12-x86_64/bin/"
  4. mysql_sock="/my_mysql/${port}/mysql.sock"
  5. mysqld_pid_file_path=/my_mysql/${port}/mysqld_${port}.pid
  6. start(){
  7.         if [ ! -e "$mysql_sock" ];then
  8.                 printf "Starting MySQL...\n"
  9.                 /bin/sh ${Cmdpath}/mysqld_safe --defaults-file=/my_mysql/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &
  10.                 sleep 3
  11.         else
  12.                 printf "MySQL is running...\n"
  13.                 exit 1
  14.         fi
  15. }
  16. stop(){
  17.         if [ ! -e "$mysql_sock" ];then
  18.                 printf "MySQL is stopped...\n"
  19.                 exit 1
  20.         else
  21.                 printf "Stoping MySQL...\n"
  22.                 mysqld_pid=`cat "$mysqld_pid_file_path"`
  23.         if(kill -0 $mysqld_pid 2 > /dev/null)
  24.                 then
  25.                 kill $mysqld_pid
  26.                 sleep 2
  27.                 fi
  28.         fi
  29. }
  30. restart(){
  31.         printf "Restarting MySQL...\n"
  32.         stop
  33.         sleep 2
  34.         start
  35. }
  36. case "$1" in
  37. start)
  38.         start
  39. ;;
  40. stop)
  41.         stop
  42. ;;
  43. restart)
  44.         restart
  45. ;;
  46. *)
  47.         printf"Usage:/my_mysql/${port}/mysql{start|stop|restart}\n"
  48. esac
复制代码
  1. chmod +x mysql_3306
复制代码
3307/mysqld_3307
  1. port=3307
  2. mysql_user="mysql"
  3. Cmdpath="/application/mysql-5.6.40-linux-glibc2.12-x86_64/bin/"
  4. mysql_sock="/my_mysql/${port}/mysql.sock"
  5. mysqld_pid_file_path=/my_mysql/${port}/mysqld_${port}.pid
  6. start(){
  7.         if [ ! -e "$mysql_sock" ];then
  8.                 printf "Starting MySQL...\n"
  9.                 /bin/sh ${Cmdpath}/mysqld_safe --defaults-file=/my_mysql/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &
  10.                 sleep 3
  11.         else
  12.                 printf "MySQL is running...\n"
  13.                 exit 1
  14.         fi
  15. }
  16. stop(){
  17.         if [ ! -e "$mysql_sock" ];then
  18.                 printf "MySQL is stopped...\n"
  19.                 exit 1
  20.         else
  21.                 printf "Stoping MySQL...\n"
  22.                 mysqld_pid=`cat "$mysqld_pid_file_path"`
  23.         if(kill -0 $mysqld_pid 2 > /dev/null)
  24.                 then
  25.                 kill $mysqld_pid
  26.                 sleep 2
  27.                 fi
  28.         fi
  29. }
  30. restart(){
  31.         printf "Restarting MySQL...\n"
  32.         stop
  33.         sleep 2
  34.         start
  35. }
  36. case "$1" in
  37. start)
  38.         start
  39. ;;
  40. stop)
  41.         stop
  42. ;;
  43. restart)
  44.         restart
  45. ;;
  46. *)
  47.         printf"Usage:/my_mysql/${port}/mysql{start|stop|restart}\n"
  48. esac
复制代码
  1. chmod +x mysql_3307
复制代码
用户、组授权

降低权限,全部赋予给mysql
  1. chown -R mysql.mysql /my_mysql/
复制代码
path配置
  1. vim /etc/profile
  2. export PATH=/application/mysql-5.6.40-linux-glibc2.12-x86_64/bin:$PATH
  3. 保存退出
  4. source /etc/profile
复制代码
创建多个实例对应的数据目录
  1. mkdir -p /my_mysql/3306/data
  2. mkdir -p /my_mysql/3307/data
复制代码
见证mysql的多实例初始化

先初始化3306的数据 (出现两个ok)
  1. /application/mysql-5.6.40-linux-glibc2.12-x86_64/scripts/mysql_install_db --defaults-file=/my_mysql/3306/my.cnf --basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64/ --datadir=/my_mysql/3306/data --user=mysql
复制代码
初始化3307的数据 (出现两个ok)
  1. /application/mysql-5.6.40-linux-glibc2.12-x86_64/scripts/mysql_install_db --defaults-file=/my_mysql/3307/my.cnf --basedir=/application/mysql-5.6.40-linux-glibc2.12-x86_64/ --datadir=/my_mysql/3307/data --user=mysql
复制代码
创建错误日志
  1. touch /my_mysql/3306/mysql_3306_error.log
  2. touch /my_mysql/3306/mysql_3307_error.log
复制代码
启动3306mysql 套接字登录
  1. /my_mysql/3306/mysqld_3306 start
复制代码
套接字登录mysql
  1. mysql -S /my_mysql/3306/mysql.sock
复制代码
启动3307mysql 套接字登录
  1. /my_mysql/3307/mysqld_3306 start
复制代码
套接字登录mysql
  1. mysql -S /my_mysql/3307/mysql.sock
复制代码
  1. netstat -tunlp | grep mysql
  2. 可以看到两个数据库启动了
复制代码
来源:https://www.cnblogs.com/xuxuxuxuxu/p/17608075.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具