不积跬步,无以至千里;不积小流,无以成江海。

Mycat主从同步、读写分离、分库分表(1)-单个服务器部署多个Mysql实例

数据库 康康 406℃ 0评论

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

其他实验

 

转载请注明:左手代码右手诗 » Mycat主从同步、读写分离、分库分表(1)-单个服务器部署多个Mysql实例

喜欢 (3)or分享 (0)
头像
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 头像
    nice good!
    Chen2017-08-18 17:18 回复
隐藏