MyCat是基于阿里巴巴的开源产品CoBar演变而来,以代替昂贵的oracle的MySQL集群的中间件。关于MyCat的介绍在此不多赘述(详细介绍 : 查看Mycat的详细介绍),本实验介绍在单台服务器实现Mysql主从同步,然后基于MyCat数据分片等的操作。
编译安装Mysql5.6
安装环境:阿里云ECS Centos6.5 ,双核Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz ,内存 16G
1.卸载自带的Mysql
rpm -qa | grep mysql #有的话通过下面的命令来卸载掉 rpm -e --nodeps mysql
2.安装编译所需依赖
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
3.下载源码包,编译Mysql
cd /software/ #下载 wget http://mirror.neu.edu.cn/mysql/Downloads/MySQL-5.6/mysql-5.6.27.tar.gz #解压 tar -zxvf mysql-5.6.27.tar.gz cd mysql-5.6.27 #编译 #DCMAKE_INSTALL_PREFIX 基础目录 #DMYSQL_DATADIR 数据目录 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLE_DOWNLOADS=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci
其他版本: http://mirror.neu.edu.cn/mysql/Downloads/MySQL-5.6/
等待大概20分钟编译完成....
配置Mysql
1.创建mysql用户组,修改基础目录的权限,因为等会要用mysql用户启动服务
useradd -g mysql mysql chown -R mysql:mysql /usr/local/mysql
将Mysql可执行程序目录加入到环境变量:编辑 /etc/profile加入如下内容
PATH=/usr/local/mysql/bin:$PATH; export PATH;
执行 source /etc/profile 使配置生效
2.创建数据目录,我们计划启动3个mysql服务 ,端口分别为3306、3307、 3308,所以创建3个目录分别存放不同服务的数据
mkdir -p /www/mysqldata3306 mkdir -p /www/mysqldata3307 mkdir -p /www/mysqldata3308 #更改所属用户 chown -R mysql.mysql /www/mysql*
3.初始化数据库,--datadir 指定我们刚刚创建的数据目录作为数据存储目录
/usr/local/mysql/scripts/mysql_install_db --datadir=/www/mysqldata3306/ --user=mysql --basedir=/usr/local/mysql /usr/local/mysql/scripts/mysql_install_db --datadir=/www/mysqldata3307/ --user=mysql --basedir=/usr/local/mysql /usr/local/mysql/scripts/mysql_install_db --datadir=/www/mysqldata3308/ --user=mysql --basedir=/usr/local/mysql
为不同端口的服务分别创建配置文件,这里需要说明 mysql启动的时候搜索配置文件的路径为 /etc > "$basedir/my.cnf" ,也就是先搜索/etc/下 ,没有就使用mysql基础目录下的 ,本文就是 /usr/local/mysql/my.cnf ,我们还是将配置文件放到etc下 , 三个配置文件分别为 my3306.cnf 、my3307.cnf、my3308.cnf ,可以从/usr/local/mysql/my.cnf 复制过去
cp /usr/local/mysql/my.cnf /etc/my3306.cnf cp /usr/local/mysql/my.cnf /etc/my3307.cnf cp /usr/local/mysql/my.cnf /etc/my3308.cnf
4.分别编辑三个配置文件:
my3306.cnf:
[client] port = 3306 #指定该端口所用的 sock文件 socket = /tmp/mysql3306.sock default-character-set=UTF [mysqld] basedir = /usr/local/mysql datadir = /www/mysqldata3306 port = 3306 pid-file = /www/mysqldata3306/mysqld.pid socket = /tmp/mysql3306.sock sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld_safe] #错误日志的位置 log-error=/www/mysqldata3306/mysqld.log
my3307.cnf:
[client] port = 3307 #指定该端口所用的 sock文件 socket = /tmp/mysql3307.sock default-character-set=UTF [mysqld] basedir = /usr/local/mysql datadir = /www/mysqldata3307 port = 3307 pid-file = /www/mysqldata3307/mysqld.pid socket = /tmp/mysql3307.sock sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld_safe] #错误日志的位置 log-error=/www/mysqldata3307/mysqld.log
my3308.cnf:同上 把所有3307改为3308
启动mysql并修改用户密码
执行命令,安ctrl+c后台,如有错误可查看数据目录下的日志mysqld.log
mysqld_safe --defaults-extra-file=/etc/my3306.cnf --datadir=/www/mysqldata3306 --user=mysql & mysqld_safe --defaults-extra-file=/etc/my3307.cnf --datadir=/www/mysqldata3307 --user=mysql & mysqld_safe --defaults-extra-file=/etc/my3308.cnf --datadir=/www/mysqldata3308 --user=mysql &
登录修改密码
mysql -S /tmp/mysq3308.sock -P 3306
初始登录不需要密码,登录后修改密码为root@3306
use mysql; update set password=password('root@3307') where user='root' and host='localhost';
同理可修改3307端口的服务 root密码为 root@3307 3308端口为root@3308方便区分
启动、登录和停止服务
编辑一个简单的启动脚本方便启动mysql,我们使用mysql_safe启动,并分别指定我们的配置文件和数据目录
启动脚本:mysqlStart.sh 内容如下,注意给执行权限
#!/bin/bash mysqld_safe --defaults-extra-file=/etc/my3306.cnf --datadir=/www/mysqldata3306 --user=mysql & mysqld_safe --defaults-extra-file=/etc/my3307.cnf --datadir=/www/mysqldata3307 --user=mysql & mysqld_safe --defaults-extra-file=/etc/my3308.cnf --datadir=/www/mysqldata3308 --user=mysql &
停止服务(mysqladmin -uroot -S /tmp/mysql3306.sock shutdown)
我们创建脚本:mysqlStop.sh 内容如下:
#!/bin/bash mysqladmin -uroot -proot@$1 -S /tmp/mysql$1.sock shutdown
例如停止3306端口的服务:
sh mysqlStop.sh 3306
登录(mysql -S /tmp/mysq3308.sock -P 3308)
我们创建脚本:mysqlLogin.sh 内容如下:
#!/bin/bash mysql -S /tmp/mysql$1.sock -P $1 -uroot -proot@$1
例如登录3306端口的服务:
sh mysqlLogin.sh 3306
查看服务状态:
ps -ef | grep mysql
其他实验