CentOS7.5使用mysql_multi方式安装MySQL5.7.28多实例

因使用源码安装的MySQL5.7.28多实例,在导入数据库时会出现问题,所以重新研究使用mysql_multi的方法来管理多实例,经过测试环境验证之后,在各方面使用上特别在备份还原上,没有报MySQL5.7.28多实例的问题,踩了不少坑,这里我将我的部署过程分享下,如果在哪里出问题的,还请多多指正与指导,谢谢!!
关于mysql安装部署基础环境与配置可以参考文章:CentOS7.5源码安装MySQL5.7.28多实例
https://blog.51cto.com/8355320/2463218
本从就直接从2.7章节开始安装mysql多实例,具体部署过程如下:
2.7 安装mysql多实例
2.7.1. 创建软件安装目录(部署路径请根据实际修改)

[[email protected]~]#  mkdir -pv /data/mysql/{3306,3307}
[[email protected]~]#  mkdir -v /data/mysql/3306/{logs,data,binlog}
[[email protected]~]#  mkdir -v /data/mysql/3307/{logs,data,binlog}

2.7.2. MySQL安装包下载

[[email protected]~]#  cd /opt
[[email protected]~]#  wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[[email protected]~]#  tar zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[[email protected]~]#  mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql
[[email protected]~]#  chown -R mysql:mysql /usr/local/mysql
[[email protected]~]#  chown -R mysql:mysql /data

2.7.3. MySQL参数配置
? 配置my.cnf参数文件
(1)server_id=3306与server_id=3307数值请根据实际配置,注意配置的id值与局域网内其他各实例所配置的数值不可以冲突;
(2)max_connections=1000配置MySQL数据库的最大连接数,根据实际需要配置,其他参数的优化根据实际需要修改或添加;
(3)配置文件全部内容如下

[[email protected]~]#  vim /etc/my.cnf
[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /data/mysql/mysqld_multi.log
#user=root
#pass=

[mysql]
prompt="\[email protected] \R:\m:\s [\d]> "
no-auto-rehash

[mysqld3306]
user                                = mysql
port                                = 3306
symbolic-links                      = 0
#basedir                             = /usr/
datadir                             = /data/mysql/3306/data
socket                              = /data/mysql/3306/mysql3306.sock
pid-file                            = /data/mysql/3306/mysqld3306.pid
server_id                           = 3306
character_set_server                = utf8
max_connections                     = 1000
skip_name_resolve                   = 1
open_files_limit                    = 65536
thread_cache_size                   = 64
table_open_cache                    = 4096
table_definition_cache              = 1024
table_open_cache_instances          = 64
max_prepared_stmt_count             = 1048576
explicit_defaults_for_timestamp     = true
log_timestamps                      = system

binlog_format                       = row
log_bin                           = /data/mysql/3306/binlog/mysql-bin
binlog_rows_query_log_events        = on
expire_logs_days                    = 7
binlog_cache_size                   = 4M
max_binlog_cache_size               = 2G
max_binlog_size                     = 1G
sync_binlog                         = 1
log_bin_trust_function_creators     = 1

slow_query_log                      = on
slow_query_log_file                 = /data/mysql/3306/data/slow.log
log-error                           = /data/mysql/3306/logs/error.log
log_queries_not_using_indexes      = on
long_query_time                     = 1.000000

gtid_mode                           = on
enforce_gtid_consistency            = on

default_storage_engine              = innodb
default_tmp_storage_engine          = innodb
innodb_data_file_path               = ibdata1:12M:autoextend:max:2000M
innodb_temp_data_file_path          = ibtmp1:12M:autoextend:max:2000M
innodb_buffer_pool_filename         = ib_buffer_pool
innodb_log_files_in_group           = 3
innodb_log_file_size                = 512M
innodb_online_alter_log_max_size    = 1024M
innodb_open_files                   = 4096
innodb_page_size                    = 16k
innodb_thread_concurrency           = 0
innodb_read_io_threads              = 4
innodb_write_io_threads             = 4
innodb_purge_threads                = 4
innodb_page_cleaners                = 4
innodb_print_all_deadlocks          = on
innodb_lock_wait_timeout            = 20
innodb_spin_wait_delay              = 128
innodb_autoinc_lock_mode            = 2
innodb_io_capacity                  = 200
innodb_io_capacity_max              = 2000
#innodb_flush_neighbors             =
innodb_log_buffer_size              = 8M
innodb_flush_log_at_timeout         = 1
innodb_flush_log_at_trx_commit      = 2
innodb_buffer_pool_size             = 1024M
innodb_buffer_pool_instances        = 4
autocommit                          = 1
innodb_buffer_pool_dump_pct         = 25
innodb_buffer_pool_dump_at_shutdown = ON
innodb_buffer_pool_load_at_startup  = ON

[mysqld3307]
user                                = mysql
port                                = 3307
symbolic-links                      = 0
lower_case_table_names              = 1
#basedir                             = /usr/
datadir                             = /data/mysql/3307/data
socket                              = /data/mysql/3307/mysql3307.sock
pid-file                            = /data/mysql/3307/mysqld3307.pid
server_id                           = 3307
character_set_server                = utf8
max_connections                     = 1000
skip_name_resolve                   = 1
open_files_limit                    = 65536
thread_cache_size                   = 64
table_open_cache                    = 4096
table_definition_cache              = 1024
table_open_cache_instances          = 64
max_prepared_stmt_count             = 1048576
explicit_defaults_for_timestamp     = true
log_timestamps                      = system

binlog_format                       = row
log_bin                            = /data/mysql/3307/binlog/mysql-bin
binlog_rows_query_log_events        = on
expire_logs_days                    = 7
binlog_cache_size                   = 4M
max_binlog_cache_size               = 2G
max_binlog_size                     = 1G
sync_binlog                         = 1

slow_query_log                      = on
slow_query_log_file                 = /data/mysql/3307/data/slow.log
log-error                           = /data/mysql/3307/logs/error.log
log_queries_not_using_indexes      = on
long_query_time                     = 1.000000

gtid_mode                           = on
enforce_gtid_consistency            = on

default_storage_engine              = innodb
default_tmp_storage_engine          = innodb
innodb_data_file_path               = ibdata1:12M:autoextend:max:2000M
innodb_temp_data_file_path          = ibtmp1:12M:autoextend:max:2000M
innodb_buffer_pool_filename         = ib_buffer_pool
innodb_log_files_in_group           = 3
innodb_log_file_size                = 512M
innodb_online_alter_log_max_size    = 1024M
innodb_open_files                   = 4096
innodb_page_size                    = 16k
innodb_thread_concurrency           = 0
innodb_read_io_threads              = 4
innodb_write_io_threads             = 4
innodb_purge_threads                = 4
innodb_page_cleaners                = 4
innodb_print_all_deadlocks          = on
innodb_lock_wait_timeout            = 20
innodb_spin_wait_delay              = 128
innodb_autoinc_lock_mode            = 2
innodb_io_capacity                  = 200
innodb_io_capacity_max              = 2000
#innodb_flush_neighbors             =
innodb_log_buffer_size              = 8M
innodb_flush_log_at_timeout         = 1
innodb_flush_log_at_trx_commit      = 2
innodb_buffer_pool_size             = 1024M
innodb_buffer_pool_instances        = 4
autocommit                          = 1
innodb_buffer_pool_dump_pct         = 25
innodb_buffer_pool_dump_at_shutdown = ON
innodb_buffer_pool_load_at_startup  = ON

[mysqldump]
quick
max_allowed_packet = 32M

2.7.4. 配置MySQL环境变量

[[email protected]~]#  echo ‘export PATH=/usr/local/mysql/bin:$PATH‘ >> /etc/profile
[[email protected]~]#  tail -1 /etc/profile
[[email protected]~]#  source /etc/profile

2.7.5. testone实例初始化
? 操作实例初始化

[[email protected]~]#  mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql/ --user=mysql --datadir=/data/mysql/3306/data/ > /tmp/3306.log 2>&1
[[email protected]~]#  tail -100f /tmp/3306.log

---使用tail命令查看初始化日志,有出现如下内容,即表示初始化完成(其中#5+t+xYW+<t?即为root用户的临时密码)
A temporary password is generated for [email protected]ost: #5+t+xYW+<t?

? 生成ssl文件

[[email protected]~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3306/data

? 启动testone实例

[[email protected]~]#  mysqld_multi start 3306
[[email protected]~]#  tail -100f /data/mysql/3306/logs/error.log 

----使用tail命令查看启动日志,有出现即表示启动成功

Version: ‘5.7.28-log‘ socket: ‘/data/mysql/3306/mysql3306.sock‘ port: 3306 MySQL Community Server (GPL)

? 修改root密码

[[email protected]~]#  less /tmp/3306.log | grep ‘A temporary password‘
[[email protected]~]#  mysql -uroot -p -S /data/mysql/3306/mysql3306.sock
Enter password:
mysql> alter user ‘root‘@‘localhost‘ identified by ‘统一密码‘;
mysql> flush privileges;
mysql> exit;

? 验证 testone root用户统一密码(界面正常输出information_schema内容表示正常)

[[email protected]~]#  mysql -uroot -p -S /data/mysql/3306/mysql3306.sock -e "show databases;" | grep information_schema
Enter password:

? 修改my.cnf配置文件,将修改的统一密码,添加到配置文件中

[[email protected]~]#  sed -i "[email protected]^#[email protected][email protected]" /etc/my.cnf
[[email protected]~]#  sed -i "[email protected]^#[email protected]=统一密码@g" /etc/my.cnf
[[email protected]~]#  cat /etc/my.cnf | grep pass=      ---使用cat命令查看配置文件pass字段输出的结果是否一致

? 停止testone实例

[[email protected]~]#  mysqld_multi stop 3306
[[email protected]~]#  netstat -tnlp|grep 3306         ---输入结果为空表示服务停止正常

2.7.6. testtwo实例初始化
? 操作实例初始化

[[email protected]~]#  mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql/ --user=mysql --datadir=/data/mysql/3307/data/ > /tmp/3307.log 2>&1
[[email protected]~]#  tail -100f /tmp/3307.log

---使用tail命令查看初始化日志,有出现如下内容,即表示初始化完成(其中-pn>t;Ye)Ay6=I即为root用户的临时密码)
A temporary password is generated for [email protected]: -pn>t;Ye)Ay6=I
? 生成ssl文件

[[email protected]~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3307/data

? 启动testwo实例

[[email protected]~]# mysqld_multi start 3307

----使用tail命令查看启动日志,有出现即表示启动成功

[[email protected]~]# tail -100f /data/mysql/3307/logs/error.log
Version: ‘5.7.28-log‘  socket: ‘/data/mysql/3307/mysql3307.sock‘  port: 3307  MySQL Community Server (GPL)

? 修改root密码

[[email protected]~]#  less /tmp/3307.log|grep ‘A temporary password‘
[[email protected]~]#  mysql -uroot -p -S /data/mysql/3307/mysql3307.sock
Enter password:
mysql> alter user ‘root‘@‘localhost‘ identified by ‘统一密码‘;
mysql> flush privileges;
mysql> exit;

? 验证 testtwo root用户统一密码(界面正常输出information_schema内容表示正常)

[[email protected]~]#  mysql -uroot -p -S /data/mysql/3307/mysql3307.sock -e "show databases;" | grep information_schema
Enter password:

? 停止testtwo实例

[[email protected]~]#  mysqld_multi stop 3307
[[email protected]~]#  netstat -tnlp|grep 3307         ---输入结果为空表示服务停止正常

2.7.7. mysqld_multi多实例管理命令
? 启动全部实例

[[email protected]~]# mysqld_multi start

? 停止单个实例

[[email protected]~]#  mysqld_multi stop 3306
[[email protected]~]#  mysqld_multi stop 3307

? 启动单个实例

[[email protected]~]#  mysqld_multi start 3306
[[email protected]~]#  mysqld_multi start 3307

? 查看全部实例的状态(is running)

[[email protected]~]#  mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running

? 查看单个实例状态

[[email protected]~]#  mysqld_multi report 3306
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
[[email protected]~]#  mysqld_multi report 3307
Reporting MySQL servers
MySQL server from group: mysqld3307 is running

? 停止全部实例

[[email protected]~]# mysqld_multi stop

2.7.8. 数据导入
(1)将待导入的数据库脚本(test.sql、testtwo.sql)文件(名称根据实际情况操作)上传至/data/路径下
(2)使用命令确认两实例已经处于运行状态

[[email protected]~]#  mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running

(3)进入testone的mysql数据库创建testone数据库实例、用户名及密码并导入数据

[[email protected]~]#  cd /data/
[[email protected]~]#  mysql -uroot -p -S /data/mysql/3306/mysql3306.sock
Enter password:
mysql>create database testone default character set utf8 collate utf8_bin;
mysql> grant select,insert,update,delete,create,alter,execute on testone.* to ‘testone‘@‘%‘ identified by ‘密码‘;
mysql> flush privileges;
mysql> exit
[[email protected]~]#  mysql -uroot -p -S /data/mysql/3306/mysql3306.sock testone < /data/test.sql

(3)进入testtwo的mysql数据库,创建testtwo服务数据库实例、用户名与密码并导入数据

[[email protected]~]#  mysql -uroot -p -S /data/mysql/3307/mysql3307.sock
Enter password:
mysql> create database testtwo default character set utf8 collate utf8_bin;
mysql> grant select,insert,update,delete,create,alter,execute on testtwo.* to ‘testtwo‘@‘%‘ identified by ‘密码‘;
mysql> flush privileges;
mysql> exit
[[email protected]~]# mysql -uroot -p -S /data/mysql/3307/mysql3307.sock testtwo < /data/testtwo.sql

2.7.9. 防火墙配置
? 根据实际要求,添加开放端口

[[email protected]~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[[email protected]~]# firewall-cmd --zone=public --add-port=3307/tcp --permanent

? 重新载入

[[email protected]~]# firewall-cmd --reload

原文地址:https://blog.51cto.com/8355320/2466817

时间: 2024-10-08 08:16:01

CentOS7.5使用mysql_multi方式安装MySQL5.7.28多实例的相关文章

关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题

最近在centos7中通过rpm方式安装了最新版本的mysql-server 5.7 (mysql57-community-release-el7-7.noarch.rpm) ,发现安装成功后无法使用root登录.百度google一番无果,最后在官方文档中找到了答案.现记录完整安装及问题解决过程,希望能帮助到其他朋友. OS版本: Linux version 3.10.0-327.el7.x86_64 ([email protected]) (gcc version 4.8.3 20140911

CentOS7.5源码安装MySQL5.7.28多实例

由于环境的需要,一个实例所有表要区分大小表,另一个实例不区分.部署过来也参数了很多资料,也遇到些坑,这里将我的部署记录下来,以便大家参考,操作过程如有不当之处,还请指点,谢谢!!具体部署过程记录如下: 安装环境准备1.1 主机环境准备1.1.1. HOST配置每台主机的hosts(/etc/hosts),添加host_ip $hostname到/etc/hosts文件中. [[email protected]~]# echo " 192.168.8.100 multidb" >&

centos7上以RPM方式安装MySQL5.6

1. 下载MySQL http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.6/ MySQL-5.6.36-1.el7.src.rpm MySQL-5.6.36-1.el7.x86_64.rpm-bundle.tar MySQL-5.6.36-1.el7.x86_64.rpm-bundle.tar.asc MySQL-5.6.36-1.el7.x86_64.rpm-bundle.tar.md5 注意: el6标识centos 6,el7标识centos 7

centos7 RPM方式安装MySQL5.7

centos7 RPM方式安装MySQL5.7 1.下载Linux对应的RPM包,CentOS7对应的RPM包,如下: [[email protected] soft]# unzip mysql-5.7-centos7.zip  Archive:  mysql-5.7-centos7.zip  extracting: mysql-commercial-client-5.7.16-1.1.el7.x86_64.rpm    extracting: mysql-commercial-embedded

centos7和centos6.5环境rpm方式安装mysql5.7和mysql5.6详解

centos7和centos6.5环境rpm方式安装mysql5.7和mysql5.6详解 centos环境安装mysql5.7 其实不建议安装mysql5.7 语法和配置可能和以前的版本区别较大,多坑,慎入 1.yum方式安装(不推荐) a.安装mysql5.7 yum源 centos6: wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpmyum localinstall mysql-community-release

Mysql系列二:Centos7.4安装mysql5.7.28源码

本文为博客Mysql系列二:Centos7.4安装mysql5.7.28源码 mysql安装方法有多种,以Centos7为例,可以官网下载编译好的二进制代码进行安装,可以官网下载rpm包进行yum install rpm包进行安装,本文我们介绍官网下载源码自行编译安装. 根据Mysql系列一下载的源码,我们开始安装mysql源码,安装方法希望大家多从官网的document上阅读,吸取精髓,安装方法和顺序并不唯一,如下内容可供参考. 基础环境: yum install -y ntp wget cu

无外网情况下RPM方式安装MySQL5.6

RPM方式安装MySQL5.6 a. 检查MySQL及相关RPM包,是否安装,如果有安装,则移除(rpm –e 名称) 1 [[email protected] ~]# rpm -qa | grep -i mysql 2 mysql-libs-5.1.66-2.el6_3.x86_64 3 [[email protected] ~]# yum -y remove mysql-libs* b. 下载Linux对应的RPM包,如:CentOS6.4_64对应的RPM包,如下:这里给出我下载好的包,官

源码方式安装mysql5.5

mysql5.5开始,源码配置编译工具configure变成了cmake,所以先要去把cmake装上.并安装make,bison,cmake,gcc-c++,ncurses的包 去http://www.cmake.org/cmake/resources/software.html 下载cmake ./cmake-2.8.12.2-Linux-i386.sh  --prefix=/usr/local/ ln -s /usr/local/cmake-2.8.12.2-Linux-i386/bin/c

在Centos6.8采用通用二进制的方式安装MySQL5.7.13

安装环境:Centos6.8 目的:通过通用二进制(Generic Binary)的方式安装MySQL5.7.13 所需软件:mysql-5.7.13-linux-glibc2.5-x86_64.tar(请自行从MySQL官网下载) 步骤: 1.创建mysql用户,mysql组 groupadd -g 3306 mysql useradd -g mysql -u 3306 -s /sbin/nologin -M mysql id mysql #查看是否创建成功 2.通过逻辑卷的方式创建MySQL