Mysql运维管理-MySQL多实例常见配置方案3
多实例配置文件部署方案
1.通过配置多个配置文件及多个启动程序来实现多实例的方案
[root@mysql ~]# tree -L 2 /data/
/data
├── 3306
│ ├── data
│ ├── my.cnf 3306实例的配置文件
│ └── mysql 3306实例的启动文件
└── 3307
├── data
├── my.cnf 3307实例的配置文件
└── mysql 3307实例的启动文件
多实例启动文件启动mysql服务实质
mysql_safe --defaults-file=/data/3306/my.cnf 2>&1 > /dev/null &
mysql_safe --defaults-file=/data/3307/my.cnf 2>&1 > /dev/null &
多实例启动文件的平滑停止mysql服务实质
mysqladmin -u root -p123456 -S /data/3306/mysql.sock shutdown
mysqladmin -u root -p123456 -S /data/3307/mysql.sock shutdown
2. 授权用户和组管理整个多实例目录/data
[root@mysql ~]# chown -R mysql.mysql /data
[root@mysql ~]# find /data -name mysql
/data/3306/mysql
/data/3307/mysql
3 授权mysql多实例服务所有启动文件mysql可执行
[root@mysql ~]# find /data -type f -name "mysql"|xargs ls -l
-rw-r--r--. 1 mysql mysql 1604 1月 12 17:06 /data/3306/mysql
-rw-r--r--. 1 mysql mysql 1604 1月 12 17:06 /data/3307/mysql
[root@mysql ~]# find /data -type f -name "mysql"|xargs chmod +x
[root@mysql ~]# find /data -type f -name "mysql"|xargs ls -l
-rwxr-xr-x. 1 mysql mysql 1604 1月 12 17:06 /data/3306/mysql
-rwxr-xr-x. 1 mysql mysql 1604 1月 12 17:06 /data/3307/mysql
4 配置MySQL命令全局使用路径
前面cmake安装mysql的时候已经配过了,这里就不配了。配完全局变量使用mysql命令就能找到了。
[root@mysql ~]# tail -1 /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
5 初始化MySQL多实例的数据库文件
(1)初始化命令
mysql5.1.X初始化命令
mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3307/data/ --user=mysql
mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3307/data/ --user=mysql
mysql5.5.32初始化命令
[root@mysql ~]# cd /home/zbf/mysql-5.5.32/scripts/
要在scripts下执行,不在mysql bin下。注意要在当前目录下执行加 ./。
./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3306/data/ --user=mysql
./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3307/data/ --user=mysql
(2)为什么要初始化数据库?
a. 初始化的主要目的就是创建基础的数据库文件,例如生成mysql库表。
b. 初始化后可以查看对应的实例数据库目录,可以看到如下文件。
6 启动mysql服务
/data/3306/mysql start
/data/3307/mysql start
7 MySQL故障排错多实例数据库
如果mysql没有起来排查方法如下
(1)如果发现没有显示MySQL的端口,请等待几秒mysql服务启动会有点慢。
(2)如果还是不行,请查看错误日志,错误日志路径在my.cnf配置文件路径下面。
grep log-error /data/3306/mysql_zbf3306.err|tail -1
(3)细看所有执行命令返回的输出,不要忽略关键的输出结果。
(4)查看系统的/var/log/messages。
(5)如果是关联服务,要同时查看相关服务的LOG。
8 Mysql多实例登录
Mysql安装完成后,默认情况下管理员账号root是无密码的。登录不同的mysql数据库需要指定不同库的sock路径。如果是远程的话就指定IP地址。
[root@mysql ~]# mysql -S /data/3306/mysql.sock
[root@mysql ~]# mysql -S /data/3307/mysql.sock
9 MySQL安全配置
为root增加密码
mysqladmin -u root -S /data/3306/mysql.sock password '123456'
mysqladmin -u root -S /data/3307/mysql.sock password '123456'
###设置完数据路密码登录数据库的方法
[root@mysql 3306]# mysql -uroot -p123456 -S /data/3306/mysql.sock
[root@mysql 3306]# mysql -uroot -p123456 -S /data/3307/mysql.sock
为mysql多实例启动脚本修改执行权限,只允许root用户有执行权限
[root@mysql ~]# find /data -type f -name "mysql" -exec ls -l {} \;
-rwxr-xr-x 1 mysql mysql 1252 1月 15 02:18 /data/3306/mysql
-rwxr-xr-x 1 mysql mysql 1252 1月 15 04:45 /data/3307/mysql
[root@mysql ~]# find /data -type f -name "mysql" -exec chmod 700 {} \;
[root@mysql ~]# find /data -type f -name "mysql" -exec chown 700 {} \;
[root@mysql ~]# find /data -type f -name "mysql" -exec ls -l {} \;
-rwx------ 1 root root 1252 1月 15 02:18 /data/3306/mysql
-rwx------ 1 root root 1252 1月 15 04:45 /data/3307/mysql