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 单机多实例多版本安装的更多相关文章

  1. Mysql 数据库单机多实例部署手记

        最近的研发机器需要部署多个环境,包括数据库.为了管理方便考虑将mysql数据库进行隔离,即采用单机多实例部署的方式.找了会资料发现用的人也不是太多,一般的生产环境为了充分发挥机器性能都是单机单 ...

  2. mysqld_multi部署mysql单机多实例

    1.安装gcc-c++.ncurses依赖包 # yum install gcc-c++ ncurses-devel 2.安装cmake,用来编译mysql # tar -xvf cmake-3.2. ...

  3. MySQL中char(36)被认为是GUID导致的BUG及解决方案

    MySQL中char(36)被认为是GUID导致的BUG及解决方案 有时候在使用Toad或在程序中,偶尔会遇到如下的错误: System.FormatException GUID 应包含带 4 个短划 ...

  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 升级 ...

  5. Mysql Explain 解读(基于MySQL 5.6.36)

    Mysql Explain 解读(基于MySQL 5.6.36) 1.语法 explain < table_name > #例子 explain select * from t3 wher ...

  6. 基于mysqld_multi实现MySQL 5.7.24多实例多进程配置

    学习环境: 操作系统 IP地址 主机名 软件包 备注 CentOS7.5 192.168.200.111 localhost       实验初始配置:所有主机关闭防火墙与selinux [root@ ...

  7. MySQL 5.5.35 单机多实例配置详解

    一.前言 二.概述 三.环境准备 四.安装MySQL 5.5.35 五.新建支持多实例的配置文件(我这里配置的是四个实例) 六.初始化多实例数据库 七.提供管理脚本 mysqld_multi.serv ...

  8. MySQL单机多实例安装并配置主从复制

    单机多实例据说可以最大程度提高硬件使用,谁知道呢,但是以前的公司喜欢这样搞,我最近也在学习复制什么的,电脑搞不起两台虚拟机,刚好单机多实例可以解救我.下面就说说步骤. 承上文http://www.cn ...

  9. Mysql 5.7.21 单机多实例安装

    下载MySQL 5.7 二制包 [root@MySQL ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linu ...

随机推荐

  1. Use Razor for Email Template outside ASP.NET MVC

    原文发布时间为:2011-09-15 -- 来源于本人的百度文章 [由搬家工具导入] http://kazimanzurrashid.com/posts/use-razor-for-email-tem ...

  2. [区别]APPlication,Session,Cookie,ViewState和Cache

    原文发布时间为:2009-08-01 -- 来源于本人的百度文章 [由搬家工具导入] 在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewS ...

  3. [LeetCode] Sudoku Solver 解数独,递归,回溯

    Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...

  4. Atcoder CODE FESTIVAL 2017 qual C D - Yet Another Palindrome Partitioning 回文串划分

    题目链接 题意 给定一个字符串(长度\(\leq 2e5\)),将其划分成尽量少的段,使得每段内重新排列后可以成为一个回文串. 题解 分析 每段内重新排列后是一个回文串\(\rightarrow\)该 ...

  5. php通过$_SERVER['HTTP_USER_AGENT']获取浏览器相关参数

    最近不忙,同事在忙一个app项目.当听到领导安排让他做一个判断苹果还是安卓手机,如果是安卓手机下载安卓app.如果是苹果手机下载苹果app;然后我就上网搜了一下学习学习: php通过$_SERVER[ ...

  6. Oracle 索引(转)

    一.索引介绍 1.1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema> ...

  7. Thinkphp3.2.3的主从分离事务问题(坑!!!)

    情景:使用Thinkphp3.2.3在项目开发中发现开启主从分离后,一旦事务体内,同时存在写入再读出,再写入这样的操作,TP在识别数据库的时候把读操作和写操作识别到了两个库..实际上希望事务开启后,所 ...

  8. Java多线程之Thread、Runnable、Callable及线程池

    一.多线程 线程是指进程中的一个执行流程,一个进程中可以有多个线程.如java.exe进程中可以运行很多线程.进程是运行中的程序,是内存等资源的集合,线程是属于某个进程的,进程中的多个线程共享进程中的 ...

  9. Codeforces Round #464 (Div. 2) A. Love Triangle[判断是否存在三角恋]

    A. Love Triangle time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  10. php设置报错级别

    ini_set("display_errors", "On");//若页面不报错的话,请设置php.ini 的display_errors 为 On error ...