MySQL 5.6 多实例安装

逸兴
逸兴
逸兴
57
文章
25
评论
2019-09-0616:44:053 5024字阅读16分44秒
摘要

在一台服务器上,启动多个端口,每个端口运行一个mysql。多端口多进程,每个端口就是一个实例,各个进程之间没有关系,但他们又同用相同的硬件资源。

1.0 多实例概述

这些多实例,使用相同的应用程序,运行不同的配置,使用各自的数据文件。

就像qq一样,一台电脑上可以登录多个qq,但是只安装了一套qq程序, 每个qq都有自己的数据文件 。

这种方式可以大限度的利用硬件资源,同时因为在一台服务器上,运行多个实例,如果服务器故障,这些实例都会受影响。另外,某个实例高并发或者慢查询时,整个实例会消耗大量系统的CPU与磁盘I/O等资源,导致服务器上 的其他实例的服务质量下降。

2.0 二级制包安装

   与源码安装相比,二进制安装包太大,但是安装速度比源码包快很多。

2.1 二进制包下载

https://dev.mysql.com/downloads/mysql/5.6.html

MySQL 5.6 多实例安装
MySQL 5.6 多实例安装

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz

2.2 安装

tar xf mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-5.6.45-linux-glibc2.12-x86_64 /usr/local/mysql

# 添加环境变量

echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile.d/path.sh

. /etc/profile

useradd -s /sbin/nologin mysql

mkdir /data/my3306/data -p

chown -R mysql.mysql /data/my3306

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/my3306/data --user=mysql

2.3 添加mysql配置

[root@master01 tools]# cat my3306.cnf 
[client]
port = 3306 #mysql3306实例的端口
socket = /data/my3306/mysql.sock #socket文件
[mysql]
no-auto-rehash
[mysqld]
user = mysql
port = 3306
skip-grant-tables # 跳过登录认证,初始化时需要
socket = /data/my3306/mysql.sock
basedir = /use/local/mysql/
datadir = /data/my3306/data/
open_files_limit = 1024000
back_log = 600
max_connections = 800
max_connect_errors = 3000
table_cache = 614
external-locking = FALSE
max_allowed_packet =8M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 100
thread_concurrency = 2
query_cache_size = 2M
query_cache_limit = 1M
query_cache_min_res_unit = 2k
default_table_type = InnoDB
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 2M
max_heap_table_size = 2M
long_query_time = 1
log_long_format
log-error = /data/my3306/error.log
log-slow-queries = /data/my3306/slow.log
pid-file = /data/my3306/mysql.pid
log-bin = /data/my3306/mysql-bin
relay-log = /data/my3306/relay-bin
relay-log-info-file = /data/my3306/relay-log.info
binlog_cache_size = 1M
max_binlog_cache_size = 1M
max_binlog_size = 2M
expire_logs_days = 7
key_buffer_size = 16M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 1M
myisam_sort_buffer_size = 1M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
lower_case_table_names = 1
skip-name-resolve
slave-skip-errors = 1032,1062
replicate-ignore-db=mysql
server-id = 3306
innodb_additional_mem_pool_size = 4M
innodb_buffer_pool_size = 32M
innodb_data_file_path = ibdata1:12M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 4M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
[mysqldump]
quick
max_allowed_packet = 2M
[mysqld_safe]
log-error=/data/my3306/mysql_3306.err
pid-file=/data/my3306/mysqld.pid

2.4 初始化 实例

MySQL 5.6 多实例安装
解决方法 :安装autoconf库  
命令:yum -y install autoconf   # 此包安装时会安装Data:Dumper模块
然后重新初始化。

/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my3306.cnf --basedir=/usr/local/mysql --datadir=/data/my3306/data --user=mysql

 

MySQL 5.6 多实例安装

# 先启动测试下:

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3306.cnf

MySQL 5.6 多实例安装

可以正常启动,登录修改密码:

mysql -S /data/my3306/mysql.sock -u root

mysql> flush privileges;  # 跳过登陆认证的,要想刷新授权表。
Query OK, 0 rows affected (0.00 sec)

mysql> set password for root@localhost = password('123456');
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

# 停止实例,可直接kill掉

# 修改配置文件,删除“跳过登录认证”

 

2.5 添加启动文件

port="$1"       # 传两个参数,端口号 和 动作
acction="$2"
user="root" # 用于关闭实例时的用户,关闭使用的mysqladmin shutdown
passwd="123456" # 和密码
my_conf="/etc/my${port}.cnf" # 启动时指定的配置文件位置
my_sock="/data/my$port/mysql.sock" # socket位置
err_log="/data/my$prot/mysql_3306.err" # 错误日志的位置

. /etc/init.d/functions
function _usage() {
if [ "$#" -ne 2 ];then
echo "USAGE: $0 {prot} {stop|start|restart}"
exit
fi
}
function _MySQL_start() {
if lsof -i :$port &>/dev/null;then
echo "error: mysql $port is running."
exit
else
"/usr/local/mysql/bin/mysqld_safe" --defaults-file=$my_conf 2>>$err_log 1>/dev/null &
sleep 3
if lsof -i :$port &>/dev/null;then action "start mysql $prot" /bin/true else action "start mysql $port" /bin/false fi fi
}
function _MySQL_stop() {
if lsof -i :$port &>/dev/null;then
"/usr/local/mysql/bin/mysqladmin" -u"$user" -p"$passwd" -S $my_sock shutdown 2>>$err_log 1>/dev/null &
sleep 3
if lsof -i :$port &>/dev/null;then action "stop mysql $prot" /bin/false else action "stop mysql $port" /bin/true fi else echo "error: mysql $port is not running." exit fi
}
case $2 in
start)
_MySQL_start
;;
stop)
_MySQL_stop
;;
restart)
_MySQL_stop
_MySQL_start
;;
*)
_usage
;;
esac

2.5.1 启动一个实例,测试脚本

MySQL 5.6 多实例安装
启动 & 关闭

这里的启动可以写出systemctl 管理,为了方便没有写,开机启动可以写到/etc/rc.local 中。

echo -e "# 启动 3306 实例/n/data/mysql 3306 start" >>/etc/rc.local

chmod +x /etc/rc.d/rc.local # 给源文件加执行权限,rc.local 里面有提示

# 为了方便每次登陆,这里可以给mysql 添加一个别名

echo "alias my3306='mysql -uroot -p123456 -S /data/my3306/mysql.sock'" >>/etc/profile.d/alias.sh

. /etc/profile

MySQL 5.6 多实例安装
登录别名

3.0 安装第二个实例 3307

安装多个实例,只是重复3306的初始化过程,并创建相应的环境即可。

# 先创建环境

cp /etc/my3306.cnf /etc/my3307.cnf
sed -i 's/3306/3307/g' /etc/my3307.cnf
mkdir -p /data/my3307/data

touch /data/my3307/mysql_error_3307.err
chown -R mysql.mysql /data/my3307

# 进行初始化

/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my3307.cnf --basedir=/usr/local/mysql --datadir=/data/my3307/data --user=mysql

# 启动实例,记得首次登陆添加 skip-grant-tables

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf

MySQL 5.6 多实例安装
已启动

# 修改密码

MySQL 5.6 多实例安装
修改密码

然后删除 skip-grant-tables,kill 3307 进程,重新启动即可

MySQL 5.6 多实例安装
多实例

这样就完成了多实例,如果还有其他实例,一样操作。




https://www.hugbg.com/archives/127.html
逸兴
  • 本文由 发表于 2019-09-0616:44:05
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
自动更新SSL证书 默认分类

自动更新SSL证书

现在免费的SSL证书只有三个月有效期,有一个博客和图床都用的ssl证书到期需要重新签发,挺麻烦的。原本想着写个脚本通过阿里云的 OpenAPI 进行证书的签发和部署,但是偶然发现了 ACME 这个项目...
推导式、生成式与生成器 基础语法

推导式、生成式与生成器

推导式 概述 Python中的推导式是一种快速、简洁的数据结构创建方式,不需要手动创建数据结构中的每一个元素,类似于给出一个规律,python会根据这个规律自动填充数据结构。支持有列表推导式、字典推导...
CVE-2024-38077 Windows RDL漏洞检测修复方法(末尾) 默认分类

CVE-2024-38077 Windows RDL漏洞检测修复方法(末尾)

一、漏洞详情 Windows Server是由微软开发的操作系统系列,专为服务器环境设计,用于管理网络、数据存储和应用程序的运行。它为企业和组织提供了稳定、可靠的服务器平台,支持各种规模的网络基础设施...
Django DRF禁用URL末尾斜杆(:) 点点滴滴

Django DRF禁用URL末尾斜杆(:)

一、关于URL末尾斜杆 比如http://127.0.0.1:8000/api/v1/register 和 http://127.0.0.1:8000/api/v1/register/, 这两个是同一...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:3   其中:访客  3   博主  0
    • 老司机 老司机 1

      人总有一天都会死的,但正因为生命是有限的,才能够欢喜和悲伤。 —《通灵王》

      • fdasfdas fdasfdas 3

        未知和恐惧并不是你停下脚步的理由 —《孤影墨香》

        • 历史创造者 历史创造者

          步伐虽小,密而不停 —《实验品家庭》