使用mysqld_multi 实现Mysql 5.6.36 + 5.7.18 单机多实例多版本安装
Mysql 5.6.36 + 5.7.18 单机多实例多版本安装
随着硬件层面的发展,各种高性能服务器如雨后春笋般出现,但高性能服务器不免造成浪费, MySQL单机多实例,是指在一台物理服务器上运行多个MySQL数据库实例,版本亦可相同版本也可不同。
MySQL单机多实例的优点:
、节省成本,减少服务器、IP、机柜的数量,总体运营成本低于单机单实例方案。
、提升利用率,利用NUMA特性,对MySQL实例进行CPU绑定。
、提升用户体验,大幅度提高IO响应时间,有助于提升用户的体验。
mysql-5.6.36下载地址:
https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
mysql-5.7.18下载地址:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
环境说明
mysqld – MySQL 5.6.36 #正常安装
mysqld1 – MySQL 5.6.36 1
mysqld2 – MySQL 5.6.36 2
mysqld3 – MySQL 5.7.18 3
mysqld4 – MySQL 5.7.18 4
第一步安装mysql5.6.36 :
详细安装步骤这里就不重复介绍:http://www.cnblogs.com/imweihao/p/7156754.html
1.关闭数据库
[root@001 ~]# service mysqld stop
2.创建新实例的数据目录
[root@001 ~]# mkdir -p /data/mysqldata1 #5.6
[root@001 ~]# mkdir -p /data/mysqldata2 #5.6
[root@001 ~]# mkdir -p /data/mysqldata3 #5.7
[root@001 ~]# mkdir -p /data/mysqldata4 #5.7
4.设置对应的mysql权限
[root@001 ~]# chown -R mysql:mysql /data/
[root@001 ~]# ll /data/
5.将如下黄色部分配置内容添加到原有配置文件中
[client]
user=mysql #根据实际情况设置用户名
password=123456
[mysqld]
[mysqld_multi] # 这里使用了client标签中的user,故这里不再定义user
mysqld = /usr/local/mysql57/bin/mysqld_safe
log = /var/log/mysqld_multi.log
[mysqld1]
server-id = 21
datadir = /data/mysqldata1
basedir = /usr/local/mysql # basedir定义使用了5.6的mysql版本
port = 3307
socket = /tmp/mysql.sock1
plugin_dir=/data/mysqldata1 ## plugin 目录也变了
[mysqld2]
server-id = 22
datadir = /data/mysqldata2
basedir = /usr/local/mysql # basedir定义使用了5.6的mysql版本
port = 3308
socket = /tmp/mysql.sock2
plugin_dir=/data/mysqldata2 # plugin 目录也变了
[mysqld3]
server-id = 33
datadir = /data/mysqldata3
basedir = /usr/local/mysql57 # basedir定义了使用5.7的mysql版本
port = 3309
socket = /tmp/mysql.sock3
#这里无需特别配置mysqld, 可以继承使用[mysqld_multi]中的配置,然后根据basedir找到对应的mysqld
[mysqld4]
server-id = 44
datadir = /data/mysqldata4 # basedir定义使用了5.6的mysql版本
basedir = /usr/local/mysql57
port = 3310
socket = /tmp/mysql.sock4
#--------------以下参数是网上的模板,只是将个别size调小-----------
[mysqld]
########basic settings########
server-id = 100
port = 3306
user = mysql
bind_address = 0.0.0.0
#autocommit = 0
character_set_server=utf8
skip_name_resolve = 1
max_connections = 800
max_connect_errors = 1000
datadir = /data/mysqldata
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
join_buffer_size = 134217728
tmp_table_size = 67108864
tmpdir = /tmp
max_allowed_packet = 16777216
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
interactive_timeout = 1800
wait_timeout = 1800
read_buffer_size = 16777216
read_rnd_buffer_size = 33554432
sort_buffer_size = 33554432
########log settings########
log_error = error.log
slow_query_log = 1
slow_query_log_file = slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
long_query_time = 2
min_examined_row_limit = 100
########replication settings########
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
sync_binlog = 1
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates
binlog_format = row
relay_log = relay.log
relay_log_recovery = 1
binlog_gtid_simple_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
innodb_page_size = 8192
innodb_buffer_pool_size = 1G # 该参数减小到1G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
#innodb_log_group_home_dir = /redolog/
#innodb_undo_directory = /undolog/
innodb_undo_logs = 128
innodb_undo_tablespaces = 3
innodb_flush_neighbors = 1
innodb_log_file_size = 128M # 该参数减小到 128M
innodb_log_buffer_size = 16777216
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 67108864
########semi sync replication settings########
plugin_dir=/usr/local/mysql/lib/plugin
#plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000
[mysqld-5.7]
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 1G # 该参数减小到1G
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
transaction_write_set_extraction=MURMUR32
show_compatibility_56=on
#配置文件来自网络
==================================================
6.上传mysql5.7
[root@001 ~]# rz
[root@001 ~]# tar xf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
[root@001 ~]# cd /usr/local
[root@001 ~]# mv mysql-5.7.18-linux-glibc2.5-x86_64/ mysql57
[root@001 local]# chown -R mysql:mysql mysql57
7.初始化mysql 5.6.36 (1,2)#mysql 5.6和5.7 初始化有所不同
[root@001 ~]# cd /usr/local/mysql
[root@001 mysql]# scripts/mysql_install_db --user=mysql --datadir=/data/mysqldata1/
[root@001 mysql]# scripts/mysql_install_db --user=mysql --datadir=/data/mysqldata2/
8.初始化mysql 5.7.18 (3,4)#mysql 5.6和5.7 初始化有所不同
[root@001 mysql57]# cd /usr/local/mysql57
[root@001 mysql57]# bin/mysqld --initialize --user=mysql --datadir=/data/mysqldata3
[root@001 mysql57]# bin/mysqld --initialize --user=mysql --datadir=/data/mysqldata4
9.查看是否认到标签
[root@001 mysql57]# mysqld_multi report
10.启动多实例
[root@001 mysql57]# mysqld_multi start 1
[root@001 mysql57]# mysqld_multi start 2
[root@001 mysql57]# mysqld_multi start 3
[root@001 mysql57]# mysqld_multi start 4
[root@001 mysql57]# service mysqld start #原先的mysql 也可以启动起来
[root@001 mysql57]# mysqld_multi report
[root@001 mysql57]# netstat -anptu |grep mysql
11.后续配置
拷贝启动脚本,方便自启
[root@001 mysql57]# cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multid
[root@001 mysql57]# chkconfig mysqld_multid on
#查看发现几个实例uuid一样删除即可
[root@001 mysql57]# rm -rf /data/mysqldata1/auto.cnf
[root@001 mysql57]# rm -rf /data/mysqldata2/auto.cnf
[root@001 mysql57]# rm -rf /data/mysqldata3/auto.cnf
[root@001 mysql57]# rm -rf /data/mysqldata4/auto.cnf
12.登陆:mysql
[root@001 mysql57]# mysql -uroot -p123456
mysql> select version();
mysql> show variables like 'port';
,并修改密码
mysql1 和 mysql2初始状态没有密码,以前可以直接使用mysql -S mysql.sock登录,而现在登录的时候特别注意,因为我们使用了[client]标签,登录的时候如果不加-p参数会默认使用标签下的user和password, 然后导致登录不进去,所以需要使用如下登录方式:
mysql 1 端口:3307 版本5.6.32
[root@001 mysql57]# mysql -u root -P3307 -S /tmp/mysql.sock1 -p
Enter password: #密码为空
mysql> select version();
mysql> show variables like 'port';
mysql> set password = password("123"); #修改密码
mysql> quit
mysql 2 端口:3308 版本5.6.32
[root@001 mysql57]# mysql -u root -P3308 -S /tmp/mysql.sock2 -p
Enter password: #密码为空
mysql> select version();
mysql> show variables like 'port';
mysql> set password = password("123");#修改密码
mysql> quit
,并修改密码
mysql 3 端口:3309 版本5.7.18
mysql3 和 mysql4有初始状态密码,因为配置文件中指定了日志文件所以需要到数据目录
查看error.log 中的初始化密码
[root@001 mysql57]# grep 'password' /data/mysqldata3/error.log
[root@001 mysql57]# grep 'password' /data/mysqldata4/error.log
[root@001 mysql57]# mysql -u root -P3309 -S /tmp/mysql.sock3 -p
Enter password: #填入初始密码
mysql> set password = '123'; #5.7需先修改密码,并退出重新登陆
mysql> quit
[root@001 mysql57]# mysql -u root -P3309 -S /tmp/mysql.sock3 -p123 #输入刚设置好的密码
mysql> select version();
mysql> show variables like 'port';
mysql> quit
mysql 4 端口:3310 版本5.7.18
[root@001 mysql57]# mysql -u root -P3310 -S /tmp/mysql.sock4 -p
Enter password: #填入初始密码
mysql> set password = '123'; #5.7需先修改密码,并退出重新登陆
mysql> quit
[root@001 mysql57]# mysql -u root -P3310 -S /tmp/mysql.sock4 -p123 #输入刚设置好的密码
mysql> select version();
mysql> show variables like 'port';
mysql> quit
到此安装成功
--设置login-path
设置login-path主要为了能够简化登录,同时还可以让每个数据库的密码都不同,避免使用[client]下的统一用户名密码
1-设置
[root@001 mysql57]# mysql_config_editor set -G mysql1 -u root -p -S /tmp/mysql.sock1
Enter password: #输入密码
[root@001 mysql57]# mysql_config_editor set -G mysql2 -u root -p -S /tmp/mysql.sock2
Enter password: #输入密码
[root@001 mysql57]# mysql_config_editor set -G mysql3 -u root -p -S /tmp/mysql.sock3
Enter password: #输入密码
[root@001 mysql57]# mysql_config_editor set -G mysql4 -u root -p -S /tmp/mysql.sock4
Enter password: #输入密码
2-登陆方式
[root@001 mysql57]# mysql --login-path=mysql1
[root@001 mysql57]# mysql --login-path=mysql2
[root@001 mysql57]# mysql --login-path=mysql3
[root@001 mysql57]# mysql --login-path=mysql4
#以后可以使用mysql --login-path=mysql1 这种方式登录
附:
安装mysql-5.6.36
具体步骤详见:http://www.cnblogs.com/imweihao/p/7156754.html
安装mysql-5.7.18
具体步骤详见:http://www.cnblogs.com/imweihao/p/7196516.html
使用mysqld_multi 实现Mysql 5.6.36 + 5.7.18 单机多实例多版本安装的更多相关文章
- Mysql 数据库单机多实例部署手记
最近的研发机器需要部署多个环境,包括数据库.为了管理方便考虑将mysql数据库进行隔离,即采用单机多实例部署的方式.找了会资料发现用的人也不是太多,一般的生产环境为了充分发挥机器性能都是单机单 ...
- mysqld_multi部署mysql单机多实例
1.安装gcc-c++.ncurses依赖包 # yum install gcc-c++ ncurses-devel 2.安装cmake,用来编译mysql # tar -xvf cmake-3.2. ...
- MySQL中char(36)被认为是GUID导致的BUG及解决方案
MySQL中char(36)被认为是GUID导致的BUG及解决方案 有时候在使用Toad或在程序中,偶尔会遇到如下的错误: System.FormatException GUID 应包含带 4 个短划 ...
- CentOS 6.9 升级MySQL 5.6.36到5.7.18
CentOS 6.9 升级MySQL 5.6.36到5.7.18 MySQL 5.6.36 安装过程:http://www.cnblogs.com/imweihao/p/7156754.html 升级 ...
- Mysql Explain 解读(基于MySQL 5.6.36)
Mysql Explain 解读(基于MySQL 5.6.36) 1.语法 explain < table_name > #例子 explain select * from t3 wher ...
- 基于mysqld_multi实现MySQL 5.7.24多实例多进程配置
学习环境: 操作系统 IP地址 主机名 软件包 备注 CentOS7.5 192.168.200.111 localhost 实验初始配置:所有主机关闭防火墙与selinux [root@ ...
- MySQL 5.5.35 单机多实例配置详解
一.前言 二.概述 三.环境准备 四.安装MySQL 5.5.35 五.新建支持多实例的配置文件(我这里配置的是四个实例) 六.初始化多实例数据库 七.提供管理脚本 mysqld_multi.serv ...
- MySQL单机多实例安装并配置主从复制
单机多实例据说可以最大程度提高硬件使用,谁知道呢,但是以前的公司喜欢这样搞,我最近也在学习复制什么的,电脑搞不起两台虚拟机,刚好单机多实例可以解救我.下面就说说步骤. 承上文http://www.cn ...
- Mysql 5.7.21 单机多实例安装
下载MySQL 5.7 二制包 [root@MySQL ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linu ...
随机推荐
- 易用的开源日志记录程序及其 .NET不用IIS实现预览站点工具
原文发布时间为:2011-02-28 -- 来源于本人的百度文章 [由搬家工具导入] http://code.google.com/p/elmah/ (不需要改动任何的程序)、简单的配置(几行配置)、 ...
- .NET泛型编程 性能提升工具 List<T>
原文发布时间为:2009-10-27 -- 来源于本人的百度文章 [由搬家工具导入] 结论 .NET 2.0中的泛型是强有力的,你写的代码不必限定于一特定类型,然而你的代码却能具有类型安全性。泛型的 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---17
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 【C/C++】快速排序的两种实现思路
方法一:不断填坑,一次确定一个值.http://blog.csdn.net/morewindows/article/details/6684558 #include<stdio.h> vo ...
- DB2数据库用 With语句分隔字符
SELECT T1.REPAIRNO, T1.UNDERTAKER10, T3.FULLNAME AS RECEIVERNAME, T1.WALKDISTANCE, T1.STATUSCODEDATE ...
- Educational Codeforces Round 35 B. Two Cakes【枚举/给盘子个数,两份蛋糕块数,最少需要在每个盘子放几块蛋糕保证所有蛋糕块都装下】
B. Two Cakes time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- 方程式组织EQUATION DRUG平台解析(提纲) —方程式组织系列分析报告之四
https://www.bleepingcomputer.com/news/security/shadow-brokers-release-new-files-revealing-windows-ex ...
- IOS开发~开机启动&无限后台运行&监听进程
非越狱情况下实现: 开机启动:App安装到IOS设备设备之后,无论App是否开启过,只要IOS设备重启,App就会随之启动: 无限后台运行:应用进入后台状态,可以无限后台运行,不被系统kill: 监听 ...
- IOS开发self.的用法总结
如果声明的是retain类型的,然后使用self.的话此时引用计数会加1,变成1,如果同时又使用了alloc,那么引用计数又加一变成了2,那么如果只是release一次的话就会内存泄漏. 这种情况下的 ...
- 【java】java处理随机浮点数(小数点后两位)用RMB的大写数值规则输出
晚上上床前,拿到这个有意思的问题,就想玩弄一番: =========================================================================== ...