MySQL多配置方式的多实例的部署
安装MySQL需要注意的事项:
选择MySQL的版本的建议:
1)稳定版:选择开源的社区版的稳定版GA版本
2)选择MySQL数据库GA版本发布后六个月以后得GA版本
3)选择发布版本前后几个月没有大的修复BUG的版本。而不是有大量BUG修复的版本
4)考虑开发人员开发程序使用的版本是否兼容你选的版本
这里我装的MySQL的版本是5.6.23
操作系统是centos 6.5
mkdir –p /data{3306,3307}/data (存放数据文件,二进制日志,sock和pid文件) mkdir –p /data/{3306,3307}/logs (存放错误日志和慢查询日志) chown –R mysql.mysql /data
记得授权
chown mysql.mysql /data -R
然后我们下载MySQL的压缩包
创建MySQL的用户
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
cmake . \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/3306/data \ -DSYSCONFDIR=/data/3306 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/data/3306/data/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLE_DOWNLOADS=1
make
这里慢慢的等吧,好长时间的
make install
在编译的时候看看有没有错误,有错误的时候,根据提示解决一下
注意,这里我们重新编译的时候需要执行以下的操作
make clean
rm -f CMakeCache.txt
解决完错误提示,重新编译一下
make
make install
接着我们要做的就是初始化数据库了
[root@kz-003 scripts]# pwd /usr/local/mysql/scripts /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql 注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置! 注意:在CentOS 6.4版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。 在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。
接下来我们要做的就是创建配置文件了
[root@kz-003 3306]# cat my.cnf [client] port = 3306 socket = /data/3306/data/mysql.sock [mysqld] port=3306 socket = /data/3306/data/mysql.sock pid-file = /data/3306/data/mysql.pid basedir = /usr/local/mysql datadir = /data/3306/data server-id=999 log-bin=mysql-bin log-bin-index= mysql-bin.index innodb_buffer_pool_size = 512M join_buffer_size = 32M sort_buffer_size = 2M read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # LOGGING log_error=/data/3306/logs/mysql-error.log slow_query_log_file=/data/3306/logs/mysql-slow.log slow_query_log=1
五、修改启动脚本
可自行编写一个启动脚本,可参考/etc/init.d/portmap进行编写
脚本思想:
1、 启动mysql,使用mysqld_safe启动
mysqld_safe--defaults-file=/data3306/my.cnf --user=mysql \ --basedir=/usr/local/mysql--datadir=/data/3306/data &
2、 停止mysql,使用mysqladmin平滑停止
mysqladmin –uroot –p123456 –S /data/3306/data/mysql.sock shutdown
3、 重启mysql
先停止,后启动。
接下来我们要做的就是启动文件了
[root@kz-003 3306]# cat mysqld #!/bin/bash mysql_port=3306 mysql_username="root" mysql_password="123456" function_start_mysql() { printf "Starting MySQL...\n" /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/${mysql_port}/my.cnf 2>&1 > /dev/null & } function_stop_mysql() { printf "Stoping MySQL...\n" /usr/local/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /data/${mysql_port}/data/mysql.sock shutdown } function_restart_mysql() { printf "Restarting MySQL...\n" function_stop_mysql function_start_mysql } function_kill_mysql() { kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}') kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}') } case $1 in start) function_start_mysql;; stop) function_stop_mysql;; kill) function_kill_mysql;; restart) function_stop_mysql;; *) echo "Usage: /data/${mysql_port}/mysqld {start|stop|restart|kill}";; esac
这里我们就可以启动数据库了,要记住这它可执行权限
chmod a+x mysqld
/data/3306/mysqld start
这里我们更改一下root的密码
[root@kz-003 3306]# /usr/local/mysql/bin/mysql -u root mysql> SET PASSWORD = PASSWORD('123456'); 或者使用下面的这个方法 /usr/local/mysql/bin/mysqladmin -uroot password 'password' -S /data/dbdata_3306/mysql.sock 因为这里使用root用户启动停止数据库有点不安全,所以这里我们新建一个用户来起停数据库 GRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY '123456'; flush privileges; 创建了admin帐号以后脚本的stop功能和restart功能就正常了! 这里我们对应修改一下启动脚本中的账号密码
在安装完成之后,我们删除匿名用户和空用户
mysql> select user,host from mysql.user; +----------+-----------+ | user | host | +----------+-----------+ | Damocles | % | | dba | % | | huamu | % | | root | % | | root | 127.0.0.1 | | root | ::1 | | | kz-003 | | root | kz-003 | | | localhost | | admin | localhost | | root | localhost | +----------+-----------+ 11 rows in set (0.00 sec)
mysql> delete from mysql.user where user=''; mysql> delete from mysql.user where host='kz-003'; mysql> delete from mysql.user where host='::1'; mysql> select user,host from mysql.user; +----------+-----------+ | user | host | +----------+-----------+ | Damocles | % | | dba | % | | huamu | % | | root | % | | root | 127.0.0.1 | | admin | localhost | | root | localhost | +----------+-----------+ 7 rows in set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
更改环境变量
vim /etc/profile 添加下面一行内容 PATH=/usr/local/mysql/bin/:${PATH} source /etc/profile
在配置环境变量的时候,我们把MySQL的环境变量放在前面
参照文章:
http://blog.chinaunix.net/uid-20639775-id-3438560.html
http://crazy123.blog.51cto.com/1029610/1611887/