mysql启动多个实例
环境
机器环境:CentOS Linux release 7.4.1708 (Core)
MySQL版本:mysql Ver 14.14 Distrib 5.6.35, for Linux (x86_64) using EditLine wrapper
配置
MySQL是已经装好的了,后来由于业务需求,需要再起另一个端口,和之前的默认库分离开来,单独使用,所以使用了多实例。
1、创建每个实例的目录
1 2 |
mkdir /data/{3306,3307}/data chown -R mysql.mysql /data/{3306,3307}/data |
---|
2、准备配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#3306 [mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES port = 3306 socket = /data/3306/mysql.sock basedir =/usr/local/mysql datadir = /data/3306/data user = mysql pid-file=/data/3306/mysqld.pid character-set-server=utf8 expire_logs_days = 3 skip-external-locking key_buffer_size = 64M max_allowed_packet = 100M table_open_cache = 256 myisam_sort_buffer_size = 16M query_cache_type = 1 log-bin=mysql-bin table_open_cache = 512 innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=4M innodb_buffer_pool_size = 128M key_buffer_size=32M tmp_table_size=32M max_heap_table_size=64M read_buffer_size=4M read_rnd_buffer_size=8M sort_buffer_size=8M max_connections=1024 thread_cache_size=60 query_cache_size=64M wait_timeout=20 [mysql] socket = /data/3306/mysql.sock pid-file=/data/3306/mysqld.pid [mysqldump] socket = /data/3306/mysql.sock pid-file=/data/3306/mysqld.pid quick max_allowed_packet = 100M pid-file=/data/3306/mysqld.pid [mysqladmin] pid-file=/data/3306/mysqld.pid socket = /data/3306/mysql.sock [client] pid-file=/data/3306/mysqld.pid socket = /data/3306/mysql.sock [mysqld_safe] log-error=/data/3306/mysql_3306.err pid-file=/data/3306/mysqld.pid |
---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
[mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES port = 3307 socket = /data/3307/mysql.sock basedir =/usr/local/mysql datadir = /data/3307/data user = mysql pid-file=/data/3307/mysqld.pid character-set-server=utf8 expire_logs_days = 3 skip-external-locking key_buffer_size = 64M max_allowed_packet = 100M table_open_cache = 256 myisam_sort_buffer_size = 16M query_cache_type = 1 log-bin=mysql-bin table_open_cache = 512 innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=4M innodb_buffer_pool_size = 128M key_buffer_size=32M tmp_table_size=32M max_heap_table_size=64M read_buffer_size=4M read_rnd_buffer_size=8M sort_buffer_size=8M max_connections=1024 thread_cache_size=60 query_cache_size=64M wait_timeout=20 [mysql] socket = /data/3307/mysql.sock pid-file=/data/3307/mysqld.pid [mysqldump] socket = /data/3307/mysql.sock pid-file=/data/3307/mysqld.pid quick max_allowed_packet = 100M pid-file=/data/3307/mysqld.pid [mysqladmin] pid-file=/data/3307/mysqld.pid socket = /data/3307/mysql.sock [client] pid-file=/data/3307/mysqld.pid socket = /data/3307/mysql.sock [mysqld_safe] log-error=/data/3307/mysql_3307.err pid-file=/data/3307/mysqld.pid |
---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#3307启动脚本 #!/bin/sh #init port=3307 mysql_user="root" mysql_pwd="clickwise10050" CmdPath="/usr/local/mysql/bin" mysql_sock="/data/${port}/mysql.sock" #startup function function_start_mysql() { if [ ! -e "$mysql_sock" ];then printf "Starting MySQL...n" /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null & else printf "MySQL is running...n" exit fi } #stop function function_stop_mysql() { if [ ! -e "$mysql_sock" ];then printf "MySQL is stopped...n" exit else printf "Stoping MySQL...n" ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown fi } #restart function function_restart_mysql() { printf "Restarting MySQL...n" function_stop_mysql sleep 2 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) printf "Usage: /data/${port}/mysql {start|stop|restart}n" esac |
---|
3306的启动脚本只需改下端口即可
3、初始化数据目录
1 2 3 4 5 6 7 |
1、进入到MySQL的安装目录 cd /usr/local/mysql 2、执行初始化 cd scripts ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data |
---|
4、启动
1 2 |
/data/3306/mysql start /data/3307/mysql start |
---|
问题
在启动过程中,我遇到了启动不起来的情况,通过查看错误信息,发现mysql没有权限对每个目录进行写,所以修改权限
报错信息:
1 2 3 |
2018-04-13 14:46:32 31349 [ERROR] Can't start server : Bind on unix socket: Permission denied 2018-04-13 14:46:32 31349 [ERROR] Do you already have another mysqld server running on socket: /data/3306/mysql.sock ? 2018-04-13 14:46:32 31349 [ERROR] Aborting |
---|
1 |
chmyl -R 755 /data/{3306,3307}/* |
---|
如果需要再加一个实例,只需重复上述步骤即可。这种场景只能用于并发不高的情况下。
- Spring Cloud Edgware新特性之七:可选的EnableDiscoveryClient注解
- 【LEETCODE】模拟面试-46. Permutations
- CentOS6 Upgrade Python
- Emacs setup for Go Development
- 【LEETCODE】模拟面试-39. Combination Sum
- Docker系列教程12-使用Maven插件构建Docker镜像
- Linux nohup 用法
- 【LEETCODE】模拟面试-84-Largest Rectangle in Histogram
- Docker系列教程11-使用Nexus管理Docker镜像
- Mac 配置终端环境
- 【LEETCODE】模拟面试-101-Symmetric Tree
- Docker系列教程10-使用Docker Registry管理镜像
- webapp开发调试环境--weinre配置
- AWK 深入浅出教程
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Yii框架Session与Cookie使用方法示例
- laravel 实现登陆后返回登陆前的页面方法
- Laravel 登录后清空COOKIE的操作方法
- 使用laravel和ajax实现整个页面无刷新的操作方法
- Laravel 读取 config 下的数据方法
- PHP实现数组根据某个字段进行水平合并,横向合并案例分析
- laravel框架上传图片实现实时预览功能
- PHP 多进程与信号中断实现多任务常驻内存管理实例方法
- Yii 框架控制器创建使用及控制器响应操作示例
- laravel-admin 实现给grid的列添加行数序号的方法
- Laravel 自动生成验证的实例讲解:login / logout
- 关于Laravel-admin的基础用法总结和自定义model详解
- 解决Laravel5.2 Auth认证退出失效的问题
- php输出文字乱码的解决方法
- laravel-admin表单提交隐藏一些数据,回调时获取数据的方法