精通MySQL多实例配置
MySQL多实例实战案例# mkdir -p /data/{3306,3307}/data
# tree /data/
/data/ 多实例根目录
|-- 3306 3306实例的目录
| `-- data 3306实例的数据文件目录
`-- 3307 3307 实例的目录
`-- data 3307实例的数据文件目录
4 directories, 0 files
# unzip data.zip
Archive:data.zip
creating: data/
creating: data/3306/
inflating: data/3306/my.cnf
inflating: data/3306/mysql
creating: data/3307/
inflating: data/3307/my.cnf
inflating: data/3307/mysql
# cp data/3306/my.cnf /data/3306/
# cp data/3307/my.cnf /data/3307/
# cp data/3306/mysql /data/3306/
# cp data/3307/mysql /data/3307/
# tree /data
/data
|-- 3306
| |-- data
| |-- my.cnf
| `-- mysql
`-- 3307
|-- data
|-- my.cnf
`-- mysql
4 directories, 4 files
多实例启动文件的mysql服务实质
mysqld_safe --defaults-file=/data/3306/my.cnf 2&1 > /dev/null &
mysqld_safe --defaults-file=/data/3307/my.cnf 2&1 > /dev/null &
多实例启动文件的停止服务实质
mysqladmin -uroot -p1 -S /data/3306/mysql.sock shutdown
mysqladmin -uroot -p1 -S /data/3307/mysql.sock shutdown
授权相关文件
# chown -R mysql.mysql /data
# find /data/ -type f -name "mysql" | xargs chmod 750
# find /data/ -type f -name "mysql" | xargs ls -l
-rwxr-x--- 1 mysql mysql 1301 Jul 31 22:54 /data/3306/mysql
-rwxr-x--- 1 mysql mysql 1300 Jul 31 22:54 /data/3307/mysql
初始化数据库
# cd /usr/local/mysql/scripts/
# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3307/data --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
启动服务
# /data/3306/mysql start
Starting MySQL...
# /data/3307/mysql start
Starting MySQL...
# netstat -anutp | grep 330
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 37099/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 37818/mysqld
测试登录
# mysql -S /data/3306/mysql.sock
mysql>
# mysql -S /data/3307/mysql.sock
mysql>
设定密码
# mysqladmin -uroot -S /data/3306/mysql.sock password '1'
# mysqladmin -uroot -S /data/3307/mysql.sock password '1'
测试停止服务
# /data/3306/mysql stop
Stoping MySQL...
# /data/3307/mysql stop
Stoping MySQL...
实战增加第三个实例
# mkdir /data/3308/data -p
# cp /data/3306/my.cnf /data/3308/
# cp /data/3306/mysql /data/3308/
# ls /data/3308/
datamy.cnfmysql
# chown -R mysql.mysql /data/3308/
# vim /data/3308/my.cnf
# vim /data/3308/mysql
# cd /usr/local/mysql/scripts/
# ./mysql_install_db \
> --basedir=/usr/local/mysql/ \
> --datadir=/data/3308/data \
> --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
# /data/3308/mysql start
Starting MySQL...
# netstat -anutp | grep 330
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 39537/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 40254/mysqld
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 42028/mysqld
# mysqladmin -uroot -S /data/3308/mysql.sock password '1'
# mysql -uroot -p1 -S /data/3308/mysql.sock
mysql> quit
Bye
# /data/3308/mysql stop
Stoping MySQL...
MySQL启动基本原理说明
/etc/init.d/mysqld 是一个shell启动脚本,启动后最终会调用mysqld_safe脚本,最后调用mysqld服务启动mysql
初始化数据库时MySQL系统输出给出的启动方法:
mysqld_safe --user=mysql &
提示:
1. 当找回root密码时,会经常使用mysqld_safe --user=mysql &带参数启动
2. 我们自己开发脚本启动数据库时可能会用到这个启动方法。
3. /etc/init.d/mysqld和mysqld_safe --user=mysql &的启动实质是一样的。
MySQL关闭基本原理
优雅关闭
1. mysqladmin方法
# mysqladmin -uroot -p123 shutdown
2. 自带的脚本
/etc/init.d/mysqld stop
3. kill、killall、pkill等进程管理命令(不建议使用,特别是生产环境,高并发情况会导致数据丢失,甚至无法启动)
觉得本文章不错的可以分享给您的朋友或订阅我,后期会分享更多的Linux技术文章
页:
[1]