Mycat 基于MySQL master-slave 读写分离验证
来源:互联网 发布:生态文明我知我行稿子 编辑:程序博客网 时间:2024/06/05 15:54
操作系统 CentOS 6.5 64bit
MySQL版本 :
MySQL-client-5.6.22-1.linux_glibc2.5.x86_64.rpm
MySQL-server-5.6.22-1.linux_glibc2.5.x86_64.rpm
Mycat版本:
Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
Mycat依赖于JDK,需要先安装JDK,若Mycat单独服务器部署,还需要安装MySQL client。
MySQL master : 192.168.1.236
MySQL slave:192.168.1.237
Mycat :192.168.1.235
MySQL安装
查询系统是否已安装
rpm -qa|grep mysql
一般默认会有一个mysql-libs-5.1.71-1.e16.x86_64
执行卸载命令(需要强制卸载)
rpm -e --nodeps mysql-libs-5.1.71-1.e16.x86_64
执行安装
rpm -ivh MySQL-client-5.6.22-1.linux_glibc2.5.x86_64.rpmrpm -ivh MySQL-server-5.6.22-1.linux_glibc2.5.x86_64.rpm
编辑配置文件
vi /usr/my.cnf
添加或修改如下内容
[client]default-character-set = utf8[mysqld]character-set-server = utf8lower_case_table_names = 1sql_mode = NO_ENGINE_SUBSTITUTION
防火墙打开MySQL端口,默认3306
vi /etc/sysconfig/iptables
添加如下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
重启防火墙服务
service iptables restart
启动MySQL
service mysql start
修改初始登录密码,系统随机的初始化密码位于/root/.mysql_secret内
cat /root/.mysql_secret
通过系统随机的初始化密码登录并修改登录密码
mysql -u root -p
修改root登录密码
mysql> set password=password('123456');mysql> use mysql;mysql> select user,host,password from user;
更新root账户
mysql> update user set password=password('123456') where user = 'root';mysql> select user,host,password from user;
刷新设置
mysql> flush privileges;
创建远程访问账户
mysql> insert into user (user,host,password) values ('root','%',password('123456'));
授权远程访问账户权限
mysql> grant all on *.* to root@'%' identified by '123456';
刷新设置
mysql> flush privileges;
MySQL master-slave配置
主库上建立从库的复制账户
mysql> grant replication slave,replication client on *.* to repl237@'192.168.1.237' identified by 'p4ssword';mysql> flush privileges;
修改主库的MySQL 配置文件
必须的配置项:
log_bin:自定义,默认是主机名,推荐进行设置
server_id:为server起一个唯一的id,默认是1,推荐取IP最后一节
可选的配置项:
binlog-do-db:用于配置哪些库会做二进制日志用以replicate
binlog-ignore-db:用于配置哪些库不会做二进制日志用以replicate
server_id = 236log_bin = mysql_bin_log
需要重启MySQL服务
service mysql restart
查看主库的复制状态
mysql> show master status;
修改从库的配置文件
从服务器必须的配置项:
log_bin:自定义,默认是主机名,推荐进行设置
server_id:为server起一个唯一的id,默认是1,推荐取IP最后一节
replicate-do-db:
replicate-ignore-db:
replicate-do-table:
replicate-ignore-table:
replicate-wild-do-table:
replicate-wild-ignore-table:
从机推荐的配置:
server_id = 237log_bin = mysql_bin_logrelay_log = mysql_relay_bin_loglog_slave_updates = 1read_only = 1
从库连接主库,并开启复制
mysql> change master to maset_host='192.168.1.236',master_user='repl237',master_password='p4ssword',master_log_file='mysql_bin_log.000001',master_log_pos=120;mysql> start slave;
从库查看复制状态
mysql> show slave status \G
查看Slave_IO_Running和Slave_SQL_Running是否是YES
在主库中创建一个测试库,看从库是否也会自动创建,验证复制是否正常工作
Mycat配置
解压即可
# tar –zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz;
防护墙打开Mycat端口8066(数据端口)和9066(管理端口)
打开方式参考上述MySQL中打开防火墙端口
调整schema.xml 文件,设置不分片
需要根据dataNode中的database预先在物理数据库中创建db
登录Mycat
# mysql –uroot –p123456 –h192.168.1.235 –P8066 –DTESTDB
创建表
mysql> create table travelrecord (id bigint not null primary key,user_id varchar(100),travel_date date,fee decimal,days int);
初始化数据:
mysql> insert into travelrecord (id,user_id,travel_date,fee,days) values (1,'100', 20160816, 2000, 5);mysql> insert into travelrecord (id,user_id,travel_date,fee,days) values (2,'300', 20160916, 5000, 3);
开启Mycat 日志DEBUG模式,修改log4j 2.xml
mycat 执行SQL:
select * from travelrecord;
mycat route 之后:
SELECT * FROM travelrecord LIMIT 100;而且已经知道将在dn1上执行
select read source hostM1 for dataHost:localhost1
host=192.168.1.236,port=3306
说明读操作在主库上执行,因为balance=”0”表示不开启读写分离
修改schema.xml dataHost=localHost1的balance=”2”,重启Mycat
从日志可以看出,主库和从库均参与了读操作
修改schema.xml dataHost=localHost1的balance=”3”
从日志可以看出,只有从库参与了读操作
balance=”1”的情形因未配置双主未进行测试
可以发现 Mycat 基于MySQL 的 master-slave 实现读写分离还是非常简单的
- Mycat 基于MySQL master-slave 读写分离验证
- 基于MyCat实现的MySQL读写分离
- 基于Mycat的MySQL读写分离
- MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)
- mysql+mycat读写分离
- Redis Master-Slave 读写分离测试
- 用mycat做读写分离:基于 MySQL主从复制
- 用mycat做读写分离:基于 MySQL主从复制
- 用mycat做读写分离:基于 MySQL主从复制
- 用mycat做读写分离:基于 MySQL主从复制
- ubuntu 下基于mycat的mysql读写分离配置
- 用mycat做读写分离:基于 MySQL主从复制
- 使用mycat 读写分离mysql
- mycat实现mysql读写分离
- mysql+mycat 实现读写分离
- MyCAT 部署 MySQL 读写分离
- mycat进行mysql读写分离
- mycat实现mysql读写分离
- Mysql之聚合函数
- 移动标签TabLayout的使用
- 线程—ThreadLocal
- 1054. 求平均值 (20) PAT乙级&&1108. Finding Average (20)PAT甲级
- POJ 1014 Dividing 已被翻译
- Mycat 基于MySQL master-slave 读写分离验证
- C++操作oracle数据库
- 顺序串基本操作
- 洛谷 1319_压缩技术_模拟
- 比较器:Comparable和Comparator
- shadowsocks and pac
- arp命令使用
- Retrofit实现图文上传至服务器
- JMeter常用测试元件