常用的连接方式:

套接字:  mysql -uroot -p123  -S /application/mysql/tmp/mysql.sock
Tcp/Ip: mysql -uroot -p123 -h 10.0.0.52 -P 3306

数据库的启动流程

mysqld 文件属性
[root@db02 ~]# cd /application/mysql/bin/
[root@db02 bin]# file mysqld
mysqld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped mysql.server文件属性
[root@db02 bin]# file ../support-files/mysql.server
../support-files/mysql.server: POSIX shell script text executable mysqld_safe文件属性
[root@db02 data]# file /application/mysql/bin/mysqld_safe
/application/mysql/bin/mysqld_safe: POSIX shell script text executable

注:可以看出mysql.server文件与mysqld_safe文件都是脚本文件,最后都调用mysqld二进制文件进行启动。

my.cnf 配置文件说明

功能 

    1、影响到服务器进程的启动

    2、影响到客户端程序

配置my.cnf

使用不同的"标签"去明确指定影响哪部分功能

服务器端

my.cnf文件配置实例

[root@db02 data]# cat /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log
port=
[mysql]
socket=/tmp/mysql.sock
user=root
password=

检查进程信息,可以看到与my.cnf配置的相同

[root@db02 data]# ps -ef |grep [my]sql
root 3411 1918 0 15:52 pts/1 00:00:00 /bin/sh /application/mysql/bin/mysqld_safe
mysql 3548 3411 0 15:52 pts/1 00:00:00 /application/mysql/bin/mysqld --basedir=/application/mysql --datadir=/application/mysql/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/var/log/mysql.log --pid-file=/application/mysql/data/db02.pid --socket=/tmp/mysql.sock --port=3307

配置文件的读取过程

/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> defaults-extra-file=/tmp/clsn.txt --> ~/.my.cnf

注:

假设4个配置文件都存在,同时使用--defaults-extra-file指定了参数文件,如果这时有一个 "参数变量"在5个配置文件中都出现了,那么后面的配置文件中的参数变量值会覆盖前面配置文件中的参数变量值,就是说会使用 ~/.my.cnf 中设置的值

如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了 --defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件。

mysql多实例配置

  

  简单地说,MySQL多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306/3307)同时运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。

  这些MySQL多实例共用一套MySQL安装程序,使用不同的my.cnf(也可以相同)配置文件、启动程序(也可以相同)和数据文件。在提供服务时,多实例MySQL在逻辑上看来是各自独立的,他们根据配置文件对应设定值,获得服务器响应数量的资源。

多实例的作用与问题 

1、有效利用服务器资源,充分利用剩余的资源提供更多的服务

2、节约服务器资源,需要主从同步等技术时,多实例就再好不过了

3、资源互抢问题,当某个服务实例并发很高或者慢查询时,

整个实例会消耗更多的内存、CPU、磁盘IO资源

多实例生产场景应用 

1、资金紧张性公司的选择
  资金紧张,公司业务访问量又不大,但又希望不同的业务的数据库服务各自尽量独立
2、并发访问不是特别大的业务
  当公司业务访问量不太大的时候,服务器的资源基本都是浪费的,这就适合多实例的使用
3、门户网站应用MySQL多实例场景
  配置硬件好的服务器,可以节省IDC机柜空间,跑多实例也不会减少硬件资源不慢的浪费
  一般是从库多实例,例如:某部门使用IBM服务器为48核CPU,内存96GB、一台服务器跑3~4个实例:此外,sina网也是用的多实例,内存48GB左右。企业环境中一般将多实例应用在测试环境。

配置方案  

1、多个配置文件,多个启动程序(比较好,推荐)

2、单一配置文件,多个启动程序(官方推荐,耦合性太高,不好)

单机运行1~4个数据库实例

多实例配置过程

(1)准备多个目录

[root@mysql ~]# mkdir -p /data/{,,}/data
[root@mysql ]# tree /data/
[root@db01 data]# tree
.
├──
│ └── data
├──
│ └── data
├──
│ └── data

(2)准备配置文件(配置文件与初始化先后顺序不影响,但注意初始化路径)

[root@mysql ~]# cat /data//my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/
socket=/data//mysql.sock
log_error=/data//mysql.log
user=mysql
port=
server_id=7 [root@mysql ~]# cat /data//my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/
socket=/data//mysql.sock
log_error=/data//mysql.log
user=mysql
port=
server_id=8 [root@mysql data]# cat /my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/
socket=/data//mysql.sock
log_error=/data//mysql.log
user=mysql
port=
server_id=

(3)初始化三套数据

mysqld --initialize-insecure  --user=mysql --datadir=/data//data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data//data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data//data --basedir=/usr/local/mysql

(4)systemd管理多实例

cd /etc/systemd/system
cp mysqld.service mysqld3307.service
cp mysqld.service mysqld3308.service
cp mysqld.service mysqld3309.service

[root@mysql system]# vim mysqld3307.service
......
ExecStart=/usr/local/mysql/bin/mysqld--defaults-file=/data//my.cnf [root@mysql system]# vim mysqld3308.service
......
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data//my.cnf [root@mysql system]# vim mysqld3309.service
......
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data//my.cnf

(5)授权

chown -R mysql.mysql /data/*

//重载守护进程   systemctl daemon reload
Warning: mysqld3309.service changed on disk. Run 'systemctl daemon-reload' to reload units.

(6)启动

systemctl start mysqld3307.service
systemctl start mysqld3308.service
systemctl start mysqld3309.service

查看端口是否启动mysqld

[root@mysql system]# netstat -lntup | grep 330
tcp6 0 0 :::3306 :::* LISTEN 2536/mysqld
tcp6 0 0 :::3307 :::* LISTEN 3168/mysqld
tcp6 0 0 :::3308 :::* LISTEN 3203/mysqld
tcp6 0 0 :::3309 :::* LISTEN 3238/mysqld

登录数据库

[root@mysql system]# mysql -S /data/3307/mysql.sock   //-S, --socket=name   连接服务器的sockey文件

检查创建实例是否存在

mysql -S /data//mysql.sock -e "show variables like 'server_id'"
mysql -S /data//mysql.sock -e "show variables like 'server_id'"
mysql -S /data//mysql.sock -e "show variables like 'server_id'" //例如:
[root@mysql system]# mysql -S /data//mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | |
+---------------+-------+

3306多实例管理脚本

  [root@db02 /]# cat data//mysql
#!/bin/sh
# start scripts
#init
port=
mysql_user="root"
CmdPath="/application/mysql/bin"
mysql_sock="/data/${port}/mysql.sock"
mysqld_pid_file_path=/data//.pid
start(){
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf --pid-file=$mysqld_pid_file_path >& > /dev/null &
sleep
else
printf "MySQL is running...\n"
exit
fi
}
stop(){
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
mysqld_pid=`cat "$mysqld_pid_file_path"`
if (kill - $mysqld_pid >/dev/null)
then
kill $mysqld_pid
sleep
fi
fi
} restart(){
printf "Restarting MySQL...\n"
stop
sleep
start
} case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

3307多实例管理脚本

 [root@db02 /]# cat data//mysql
#!/bin/sh
# start scripts
#init
port=
mysql_user="root"
CmdPath="/application/mysql/bin"
mysql_sock="/data/${port}/mysql.sock"
mysqld_pid_file_path=/data//.pid
start(){
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf --pid-file=$mysqld_pid_file_path >& > /dev/null &
sleep
else
printf "MySQL is running...\n"
exit
fi
}
stop(){
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
mysqld_pid=`cat "$mysqld_pid_file_path"`
if (kill - $mysqld_pid >/dev/null)
then
kill $mysqld_pid
sleep
fi
fi
} restart(){
printf "Restarting MySQL...\n"
stop
sleep
start
} case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

mysql -> 启动&多实例_03的更多相关文章

  1. MySQL(mariadb)多实例应用与多实例主从复制

    MySQL多实例 mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306.3307,3308),运行多个服务进程.这些 mysql 服务进程通过不同的 socket ...

  2. mysql 5.7.10 启动多实例笔记

    1. 复制配置文件 cp /etc/my.cnf /etc/my3308.cnf 2. 修改配置文件 3. 创建目录, 并赋予权限 4. 初始化数据库 ---> 有报错 2018-01-03T0 ...

  3. MySQL启动与多实例安装

    启动方式及故障排查 一.几个问题 1.1 /etc/init.d/mysql 从哪来 cp /usr/local/mysql/support-files/mysql.server /etc/init. ...

  4. Linux 平台MySQL启动关闭方式总结

    MySQL的启动方法有很多种,下面对比.总结这几种方法的一些差异和特性,下面实验的版本为MySQL 5.6.如有疏漏或不足,敬请指点一二.   1:使用mysqld启动.关闭MySQL服务 mysql ...

  5. MySQL的多实例

    一.准备工作     1.关闭mysql进程     # pkill     # service mysqld stop         2.从系统服务中删除mysqld     # chkconfi ...

  6. 深度解析MySQL启动时报“The server quit without updating PID file”错误的原因

    很多童鞋在启动mysql的时候,碰到过这个错误, 首先,澄清一点,出现这个错误的前提是:通过服务脚本来启动mysql.通过mysqld_safe或mysqld启动mysql实例并不会报这个错误. 那么 ...

  7. mysql实现多实例

    > mariadb安装    yum install mariadb-server > 创建相关目录,及设置权限    mkdir /mysqldb; mkdir /mysqldb/{33 ...

  8. mysql启动、关闭与登录

    按照上述三篇随笔中的方法安装mysql,其启动.关闭和登录方法如下. mysql启动基本原理:/etc/init.d/mysqld是一个shell启动脚本,启动后最终会调用mysql\bin\mysq ...

  9. Mysql 之多实例 安装以及配置

    MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...

随机推荐

  1. 【刷题】洛谷 P1519 穿越栅栏 Overfencing

    题目描述 描述 农夫John在外面的田野上搭建了一个巨大的用栅栏围成的迷宫.幸运的是,他在迷宫的边界上留出了两段栅栏作为迷宫的出口.更幸运的是,他所建造的迷宫是一个“完美的”迷宫:即你能从迷宫中的任意 ...

  2. java中poi进行execl导出

    首先贴出最终导出的execl截图吧: 前台界面如下: 点击导出时,为其按钮的onclick事件添加exportDate()函数: function exportDate(){ var begin_Da ...

  3. BZOJ 2521: [Shoi2010]最小生成树

    2521: [Shoi2010]最小生成树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 445  Solved: 262[Submit][Statu ...

  4. 洛谷 P1850 换教室 解题报告

    P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1≤i≤n) ...

  5. 利用solr实现商品的搜索功能

      后期补充: 为什么要用solr服务,为什么要用luncence? 问题提出:当我们访问购物网站的时候,我们可以根据我们随意所想的内容输入关键字就可以查询出相关的内容,这是怎么做到呢?这些随意的数据 ...

  6. Ubuntu 14.04安装和3556sdk环境配置

    1.配置为固定ip: vi /etc/network/interfaces 最后添加 iface eth0 inet staticaddress 192.168.1.100netmask 255.25 ...

  7. LocalDateTime与字符串互转/Date互转/LocalDate互转/指定日期/时间比较

    Java 8中表示日期和时间的类有多个,主要的有: Instant:表示时刻,不直接对应年月日信息,需要通过时区转换 LocalDateTime: 表示与时区无关的日期和时间信息,不直接对应时刻,需要 ...

  8. codevs 2147 数星星

    2147 数星星 http://codevs.cn/problem/2147/ 题目描述 Description 小明是一名天文爱好者,他喜欢晚上看星星.这天,他从淘宝上买下来了一个高级望远镜.他十分 ...

  9. 51nod 小Z的trie(Trie+广义SAM)

    [题目链接] http://www.51nod.com/contest/problem.html#!problemId=1647 [题意] 给定一个n个字符串的Trie,每次询问一个字符串在Trie上 ...

  10. 嵌入式Linux系统挂载NFS系统

    在建立交叉编译环境的时候,经常需要网嵌入式Linux环境中拷贝文件,nfs网络共享文件系统是一种很方便的方式. 在嵌入式Linux挂载nfs系统,需要用到如下命令: mount -t nfs -o n ...