Mysql单主机多实例部署

基础环境

1.部署环境

CentOS 7

5.6.42 MySQL Community Server (GPL)

2.MySQL环境准备

1)yum安装MySQL

#rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

#yum repolist

#yum -y install mysql-community-server

2)启动MySQL

#systemctl is-enabled mysqld

#systemctl start mysqld

3)Mysql安全调整

# mysql_secure_installation

4)登陆测试

#mysql -u root -p

以上说明登陆成功,查看MySQL的用户权限:

mysql>select user,host,password from mysql.user \G;

在这里可以看到有四个登录账号,user表示登录名,host表示登录主机限制,password为散列后的登录密码,其中%表示任意,如host的%表示可以任意主机登录,在之后会写到怎样修改这些登录数据。

多实例部署

1.创建目录并授权

这里根据占用的端口来创建,便于区分

#mkdir -p /data/multiMysql/{etc,socket,bin,datadir/330{7,8,9}}

然后用mysql_install_db来生成即将使用的多个实例的数据文件,首先需要对/data/multiMysql进行递归授权防止之后的操作出现权限不够的情况:

# chmod -R 777 /data/multiMysql 或# chown -R mysql.mysql /data/multiMysql/

2. Mysql数据库初始化

3307,3308,3309均执行一次。

#mysql_install_db --basedir=/usr --datadir=/data/multiMysql/datadir/3307 --user=mysql

#mysql_install_db --basedir=/usr --datadir=/data/multiMysql/datadir/3308 --user=mysql

#mysql_install_db --basedir=/usr --datadir=/data/multiMysql/datadir/3309 --user=mysql

其中的参数--basedir是指mysql的二进制文件目录,--datadir是指即将安装到的数据库文件目录,--basedir可以登录进mysql后查询:

mysql>show variables like '%basedir%';

--user是指mysql实例将使用的在linux系统中的用户,最好命名为mysql,yum安装的方式一般都有这个用户,如果没有可以自主创建:

#groupadd mysql

# useradd -g mysql mysql

现在来查看三份数据文件有没有生成,例如查看3308的:

#ls /data/multiMysql/datadir/3308/

如果里面有文件代表生成成功。

3.多实例配置:

1)创建公用配置文件:

#mkdir /data/multiMysql/etc/my.cnf.d/

#vim /data/multiMysql/etc/my.cnf.d/my.cnf

[mysqld]

skip-name-resolve

lower_case_table_names=1

innodb_file_per_table=1

back_log = 50

max_connections = 300

max_connect_errors = 1000

table_open_cache = 2048

max_allowed_packet = 16M

binlog_cache_size = 2M

max_heap_table_size = 64M

sort_buffer_size = 2M

join_buffer_size = 2M

thread_cache_size = 64

thread_concurrency = 8

query_cache_size = 64M

query_cache_limit = 2M

ft_min_word_len = 4

default-storage-engine = innodb

thread_stack = 192K

transaction_isolation = REPEATABLE-READ

tmp_table_size = 64M

log-bin=mysql-bin

binlog_format=mixed

slow_query_log

long_query_time = 1

server-id = 1

key_buffer_size = 8M

read_buffer_size = 2M

read_rnd_buffer_size = 2M

bulk_insert_buffer_size = 64M

myisam_sort_buffer_size = 128M

myisam_max_sort_file_size = 10G

myisam_repair_threads = 1

myisam_recover

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 200M

innodb_data_file_path = ibdata1:10M:autoextend

innodb_file_io_threads = 8

innodb_thread_concurrency = 16

innodb_flush_log_at_trx_commit = 1

innodb_log_buffer_size = 16M

innodb_log_file_size = 512M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 60

innodb_lock_wait_timeout = 120

[mysqldump]

quick

max_allowed_packet = 256M

[mysql]

no-auto-rehash

prompt=\\u@\\d \\R:\\m>

[myisamchk]

key_buffer_size = 512M

sort_buffer_size = 512M

read_buffer = 8M

write_buffer = 8M

[mysqlhotcopy]

interactive-timeout

[mysqld_safe]

open-files-limit = 8192

2)创建三个实例的配置文件

#vim /data/multiMysql/etc/3307.cnf

[client]

port = 3307

socket = /data/multiMysql/socket/mysql3307.sock

[mysqld]

datadir=/data/multiMysql/datadir/3307

port = 3307

socket = /data/multiMysql/socket/mysql3307.sock

log-error=/data/multiMysql/datadir/3307/mysqld3307.log

pid-file=/data/multiMysql/datadir/3307/mysqld3307.pid

!includedir /data/multiMysql/etc/my.cnf.d

复制3307.cnf:

# cd /data/multiMysql/etc/

# cp 3307.cnf 3308.cnf

# cp 3307.cnf 3309.cnf

编辑复制的两份配置文件,把其中的3307修改为3308或3309。

#cat 3308.cnf

# cat 3309.cnf

在配置文件中,port是实例的端口,socket是实例运行时的sock文件,datadir是之前生成的数据库文件位置。

启动实例

1.编辑实例启动脚本

#vim /data/multiMysql/bin/mysqlctl

#!/bin/bash

. /etc/init.d/functions

PORT=$2

USER=root

PASSWD=

MYSQLBIN='/usr/bin'

SOCKETFILE="/data/multiMysql/socket/mysql${PORT}.sock"

MYCNF="/data/multiMysql/etc/${PORT}.cnf"

[[ $# -eq 2 ]] || {

echo "Usage: $0 {start|stop|restart} {PORT}"

exit 1

}

mysql_start() {

[[ -e "$SOCKETFILE" ]] && {

action "MySQL port: $PORT IS already running" /bin/false

exit 0

} || {

action "Starting MySQL... please wait" /bin/true

$MYSQLBIN/mysqld_safe --defaults-file=$MYCNF &> /dev/null &

}

[[ "$?" == "0" ]] && {

action "MySQL has been Started" /bin/true

} || {

action "MySQL Started" /bin/false

}

}

mysql_stop() {

[[ ! -e "$SOCKETFILE" ]] && {

action "MySQL port:$PORT was already down" /bin/false

} || {

$MYSQLBIN/mysqladmin -u $USER -p$PASSWD -S $SOCKETFILE shutdown &>/dev/null

}

[[ "$?" == 0 ]] && {

action "MySQL port:$PORT has been Stopped" /bin/true

}

}

case "$1" in

'start')

mysql_start

;;

'stop')

mysql_stop

;;

'restart')

mysql_stop

sleep 3

mysql_start

;;

*)

echo "Usage: $0 {start|stop|restart} {PORT}"

esac

因为是yum安装,所以mysqld_safe和mysqladmin可以不用加路径直接运行,另外mysql_port是指这个bash简要打开的实例的端口,mysql_username和mysql_userpassword即将在实例中配置的可关闭mysql进程的mysql用户名和密码。

给予mysqlctl文件执行权限,并尝试打开三个实例:

#chmod +x /data/multiMysql/bin/mysqlctl

先关闭yum安装的默认mysql实例进程:

#systemctl stop mysqld

2.启动三个实例

#/data/multiMysql/bin/mysqlctl start 3307

#/data/multiMysql/bin/mysqlctl start 3308

#/data/multiMysql/bin/mysqlctl start 3309

查看是否有三个mysql进程:

#ps -ef | grep mysql

显示以上则说明实例启动成功。

连接测试

1.连接实例

连接监听于3307端口的实例

#mysql -u root -S /data/multiMysql/socket/mysql3307.sock

连接监听于3308端口的实例

#mysql -u root -S /data/multiMysql/socket/mysql3308.sock

连接监听于3309端口的实例

#mysql -u root -S /data/multiMysql/socket/mysql3309.sock

以上则说明实例能够连接成功。

2.打开实例

例如:连接3307的sock后执行sql:

mysql>show variables like '%port%';

以上则说明成功打开实例。

后续建立用户、创建密码、修改权限、自启动设置不再赘述。

至此,三个mysql实例创建到此结束。

mysql 用户 多主机_MySQL单主机多实例部署相关推荐

  1. mysql 用户管理表_Mysql—用户表详解(mysql.user)

    MySQL 数据库 Mysql-用户表详解(mysql.user) MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限 ...

  2. mysql 用户与数据_MySQL经验9-用户和数据安全

    mysql心得9--用户和数据安全 1. 添加用户 可以使用CREATE USER语法添加一个或多个用户,并设置相应的密码.  语法格式: CREATE USER user [identified B ...

  3. mysql用户控制登录_MySql用户权限控制_MySQL

    bitsCN.com MySql用户权限控制 本文将介绍MySql创建帐号,删除帐号,设置和介绍各种帐号的权限 创建用户帐号: www.bitsCN.com [sql] CREATE USER use ...

  4. mysql 单实例部署_Mysql 数据库单机多实例部署手记

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

  5. mysql 用户划表_mysql用户表

    mysql5.6中mysql.user表 一些特殊符号: 在myql中% *是通配符, ::1 是IPv6格式的 127.0.0.1 Host列指定了允许用户登录所使用的IP,比如user=root ...

  6. mysql用户replace权限_mysql查看用户的权限脚本

    1.安装mysql支持python包 yum -y install mysql-connector-python 2.查看MySQL 用户权限的Python脚本 vi py_priv.py #!/us ...

  7. 给mysql用户授权命令_mysql添加用户并授权的命令(示例)

    本节内容: mysql用户授权命令与mysql常用命令. 1,新建(添加)用户. 复制代码 代码示例: //登录MYSQL >mysql -u root -p >密码 //创建用户 mys ...

  8. mysql乐观锁实现_mysql实现乐观锁实例(demo)

    本文参考:https://blog.csdn.net/seapeak007/article/details/53490156,感谢老铁的辛苦付出. 乐观锁介绍: 乐观锁( Optimistic Loc ...

  9. mysql 用户管理表_mysql用户管理

    msyql用户定义: 使用某个用户 从哪个(些)地址访问我的数据库 主机范围 单独IP:'10.0.0.200' 一个网段:'10.0.0.%' --->10.0.0.1-->10.0.0 ...

最新文章

  1. U3D的Collider
  2. 关于STM32使用RTC时复位后程序死在 RTC
  3. 近世代数--有限交换群--存在子群的阶是群阶的因子
  4. 微信小程序 - 实战小案例 - 简易记事本
  5. 光纤交换机光纤通道协议介绍
  6. java学习(78):GUL拆分窗口
  7. 前端 常用css总结
  8. 使用Lucene检索文档中的关键字
  9. 树莓派 —— 树莓派安装字体
  10. oppok3如何刷机_OPPO K3怎么刷机?
  11. 技嘉z77主板msata速度_z77-d3h_技嘉z77d3h说明书_技嘉z77 d3h msata
  12. 域名前缀和后缀html,域名常用前缀和后缀
  13. 计算机科普扫盲——固态硬盘
  14. 苹果系统安全吗?7种方法保护自己的隐私
  15. 尚硅谷外卖项目笔记二
  16. R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、检验模型是否满足等比例风险、是否存在非线性关系、使用rms包的Predict函数计算指定连续变量和风险比HR值的关系并可视化
  17. 五个强盗分金币的问题分析(博弈论)
  18. 如何安装 Manjaro 21 桌面系统 ?
  19. Facebook第三方登录切换账号的问题
  20. NodeJS 之 fs 模块(路径动态拼接问题)

热门文章

  1. Varnish3.0中文入门教程-应用篇2
  2. BackboneFast
  3. EntityFramework之领域驱动设计实践(十)(转)
  4. Dos判断文件夹有没有存在,如果存在删除,不存在创建
  5. 算法-链表-给定一个数小于该值的在左边等于在中间大于的在右边
  6. python打印异常
  7. numpy permutation排列组合方法
  8. python类的继承 被继承类放在类后面的括号中
  9. Eclipse 之 EasyExplore 插件
  10. 跨境电商三单对碰三单申报流程详解