mycat部署mysql_基于Mycat分布式MySQL数据库部署实践指南

Mycat 是一款基于Java开发的开源数据库中间件,是分布式数据库架构的可选方案。

MySQL、CentOS、Mycat、Java 版本号分别是:

# mysql

mysql> select version();

+------------+

| version() |

+------------+

| 5.7.17-log |

+------------+

# centos

~ cat /etc/centos-release

CentOS Linux release 7.2.1511 (Core)

# mycat

mysql> show @@version;

+-----------------------------------------+

| VERSION |

+-----------------------------------------+

| 5.6.29-mycat-1.6-RELEASE-20161028204710 |

+-----------------------------------------+

# java

java -version

java version "1.7.0_79"

Java(TM) SE Runtime Environment (build 1.7.0_79-b15)

Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

MySQL 主从同步配置

Master:192.168.7.103

Slave:192.168.7.117

Master配置

1、授权Slave服务器

在 master 服务器 分配帐号 “repl” 给 Slave 服务器使用。

mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.%' IDENTIFIED BY 'repl';

mysql>FLUSH PRIVILEGES;

2、修改 Master 的 my.conf 配置

主要改动的地方有:开启 bin-log、设置 server-id,指定需要同步的数据库和不需要同步的数据库,可以指定多个

vim /etc/my.conf

[mysqld]

server-id=1

log-bin=mysql-bin

log-bin-index=master-bin.index

binlog_format=mixed

sync-binlog=1

binlog-ignore-db=mysql

binlog-ignore-db=test

binlog-do-db=ceshi

binlog-do-db=users

3、重启MySQL服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

/etc/init.d/mysqld restart

4、检查 Master 状态

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000003 | 1177 | ceshi | mysql | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

二进制日志名和偏移量是Slave将要从此处开始复制的位置。

Salve 配置

1、修改 slave 配置信息 /etc/my.cnf

[mysqld]

# log-bin=binlog

log-bin=mysql-bin

server-id=2

replicate-do-db=ceshi

replicate-do-db=users

2、连接 Master

mysql> change master to master_host='192.168.7.103',\

master_user='repl',\

master_password='repl',\

master_log_file='mysql-bin.000003',\

master_log_pos=154;

master_log_file 和 master_log_pos 就是从 Master 开始复制的位置。如果上面命令报错,那么需要先运行 stop slave 停止 slave,再运行 reset slave 清空 slave 的配置,然后再从头开始配置。

3、启动 Slave 复制

mysql> start slave;

4、查看同步状态

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.7.103

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000003

Read_Master_Log_Pos: 154

Relay_Log_File: lzjun-PC-relay-bin.000002

Relay_Log_Pos: 320

Relay_Master_Log_File: mysql-bin.000003

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: ceshi

Replicate_Ignore_DB:

Exec_Master_Log_Pos: 154

Relay_Log_Space: 530

Master_Server_Id: 1

1 row in set (0.00 sec)

Slave_IO_Running 和 Slave_SQL_Running 是 YES 表示配置成功。主从同步,如果遇到问题,比如 Slave_SQL_Running 是 No,想重新从0开始同步,可以这样:

# master

RESET MASTER;

FLUSH TABLES WITH READ LOCK;

SHOW MASTER STATUS;

mysqldump -u root -p --all-databases > /a/path/mysqldump.sql

UNLOCK TABLES;

# slave

mysql -uroot -p < mysqldump.sql

RESET SLAVE;

CHANGE MASTER TO master_host='192.168.7.103',\

master_user='repl',\

master_password='repl',\

MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98;

START SLAVE;

SHOW SLAVE STATUS;

查看Slave_IO_Running 和 Slave_SQL_Running 是否为 YES

同步 Master 数据到 Slave

master

# 锁表停止更新操作

mysql>flush tables with read lock;

# 备份数据

mysqldump -uroot -p123456 ceshi > ceshi.sql

# 解锁

mysql>unlock tables;

slave

# 停止slave

mysql> stop slave ;

# 新建数据库

mysql> create database ceshi default charset utf8;

# 导入数据

mysql -uroot -p123456 ceshi

# 启动slave

mysql>start slave;

至此,MySQL 的主从搭建完了,接下来使用 MyCat 实现读写分离

MyCat 读写分离配置

Mycat 安装

安装mycat的前置条件是安装JVM

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm"

sudo yum localinstall jdk-7u79-linux-x64.rpm

mycat 下载地址: https://github.com/MyCATApache/Mycat-download 直接下载,解压既可以,另外一个可选的下载地址是:http://dl.mycat.io/1.6-RELEASE/

配置 Mycat

Mycat 的核心配置文件是 server.xml 和 schema.xml,server.xml 是Mycat服务器调优配置和用户授权的配置文件

1、修改 server.xml

test

TESTDB

用户名 test,密码 test,数据库 TESTDB,这是 mycat 的逻辑库,由应用程序连接该数据库

2、修改 schema.xml

writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

select user()

password="baouser&56">

schema 中的 TESTDB 就是 server.xml 中指定的逻辑库,里面的逻辑表要映射到物理库中的表。

dataHost 配置的真正的物理库,这里面我指定了一个写库 hostM1 和一个读库 hostS2

3、启动 mycat

/usr/local/mycat/bin/mycat start

用 lsof 确定是否正常启动

[root@localhost bin]# lsof -i:9066

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

java 89491 root 90u IPv6 2006454 0t0 TCP *:9066 (LISTEN)

也可以使用 ps 命令

[root@localhost bin]# ps -ef |grep mycat

root 89489 1 0 10:01 ? 00:00:00 /usr/local/mycat/bin/./wrapper-linux-x86-64 /usr/local/mycat/conf/wrapper.conf wrapper.syslog.ident=mycat wrapper.pidfile=/usr/local/mycat/logs/mycat.pid wrapper.daemonize=TRUE wrapper.lockfile=/var/lock/subsys/mycat

4、连接 mycat

mysql -utest -ptest -P9066 -dTESTDB

参数都是server.xml 中指定的值,mycat 的端口默认是9066

常见问题

启动 mycat 报错

STATUS | wrapper | 2017/04/26 09:57:23 | Launching a JVM... ERROR | wrapper | 2017/04/26 09:57:23 | Unable to start JVM: No such file or directory (2)

这是因为mycat找不到jvm运行环境,首先确定系统是否已经安装了jvm,然后确定是否设置好了环境变量。

vim /etc/proflie

export JAVA_HOME=/usr/local/jre

export JRE_HOME=/usr/local/jre

export CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=.:$PATH:$JAVA_HOME/bin

wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

./mycat start # 启动

./mycat stop # 停止

./mycat status # 查看启动状态

mysql -uroot -proot -P8066 -h127.0.0.1 # 通过mycat连接mysql 用户和密码就是mysql的用户的密码

Skip one error in the replication

STOP SLAVE;

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;

START SLAVE;

参考文档:

http://www.cnblogs.com/ivictor/p/5131480.html

http://www.cnblogs.com/LCX/archive/2010/03/10/1682227.html

https://github.com/MyCATApache/Mycat-Server

转载:https://foofish.net/mysql-for-mycat.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值