接上文
第15章 MySQL主从及读写分离
一. 简介
MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先要部署主从复制,有主从复制完成了,才能完成读写分离。只读写分离就是只在主服务器上写,只在从服务器上读,是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。
二. mysql主从复制
2.1实验拓扑图
2.2主服务器配置
1.安装mysql
2.编辑配置文件vim /etc/my.cnf
server-id = 1
log-bin=master-bin
#log-slave-updates=true
1.1 数据库创建密码 登陆
#mysqladmin –u root password 123456
#mysql –u root –p
1.2 数据库添加允许从slave 登陆
mysql> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'
192.168.1.%' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;
mysql> show master status; //查看端口和密码
# service mysqld restart
2.3从服务器
2.1 安装mysql
2.2 编辑配置文件 vim /etc/my.cnf
# vim /etc/my.cnf
server-id = 2
上面出现的2行注释掉
#relay-log=relay-log-bin
#relay-log-index=slave-relay-bin.index
# service mysqld restart
2.3 数据库给root用户添加密码
#mysqladmin –u root password 123456
#mysql –u root –p
2.4 添加主服务器的信息
mysql>change master to
master_host='192.168.1.5',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=1341; //文件和端口需要自己查看
mysql> start slave;
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
三. mysql读写分离
3.1在代理服务器Amoeba上安装Java环境
/路径/
需要软件包:jdk-6u14-linux-x64.bin
# chmod +x /usr/local/jdk-6u14-linux-x64.bin
# cd /usr/local/
# ./jdk-6u14-linux-x64.bin
# mv jdk1.6.0_14/ /usr/local/jdk1.6
# vim /etc/profile //配置环境变量
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/bin:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba/
export PATH=$PATH:$AMOEBA_HOME/bin
# source /etc/profile
# java -version //查看jave版本 1.6.0
3.2安装并配置Amoeba软件
# mkdir /usr/local/amoeba
# tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
# chmod -R 755 /usr/local/amoeba/ //给执行权限
# /usr/local/amoeba/bin/amoeba start
# /usr/local/amoeba/bin/amoeba start
log4j:WARN log4j config load completed from file:/usr/local/amoeba/conf/log4j.xml
2017-03-17 16:43:58,943 INFO context.MysqlRuntimeContext - Amoeba for Mysql current versoin=5.1.45-mysql-amoeba-proxy-2.2.0
log4j:WARN ip access config load completed from file:/usr/local/amoeba/conf/access_list.conf
2017-03-17 16:43:59,643 INFO net.ServerableConnectionManager - Amoeba for Mysql listening on /192.168.1.1:3306.
2017-03-17 16:43:59,681 INFO net.ServerableConnectionManager - Amoeba Monitor Server listening on /127.0.0.1:32475.
3.3配置文件 am账户 mysql账户
1.配置am账户文件
vim /usl/local/amoeba/bin/amoeba.xml
3306 //最好修改端口为3306,默认端口
root //登陆代理数据库的用户名
123456 //登陆代理数据库的密码
1500
master //默认服务器名称
master //读的服务器名称
slave //写权限的的服务器名称
true
2.配置mysql账户文件
vim /usl/local/amoeba/bin/dbServers.xml
3306 //默认登陆端口
test //登陆数据库的用户名
123456 //登陆数据库的密码
192.168.1.5 //master 服务器的ip
192.168.1.132 //slave服务器的ip
slave //服务器名称写入地址池中
3.4客户机测试
1.在每个SQL上开发全新给Amoeba访问
mysql> grant all on *.* to ’test’@'192.168.1.%' identified by '123.com';
2. 192.168.1.111客户机
登陆测试
# mysql -u test -p 123456 -h 192.168.1.1 -P 3306
123456
enter ok
3.在主服务器Master上创建表
mysql> use db_test;
mysql> create table zang (id int(10),name varchar(10),address varchar(20));
4.在从服务器停止 slave
mysql> stop slave;
5.在主服务创建数据
mysql> insert into zang values('1','zhang','this_is_master');
6.从服务器创建数据
mysql> use db_test;
mysql> insert into zang values('2','zhang','this_is_slave1');
7.在Client查询
mysql> use db_test;
mysql> select * from zang;
mysql> insert into zang values('3','zhang','this_is_amoeba')
----------------------------------------end-------------------------------------------