标签:write 开启 hang binlog cal this 步骤 amoeba usr
Centos7 下 MYSQL 读写分离MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
3台mysql服务器 (本次使用的是3台5.7版本的mysql)
一台 centos 服务器 (用作安装 amoeba)
amoeba安装包 java环境包
systemctl stop firewalld.service
setenforce 0
yum install ntp -y
vim /etc/ntp.conf
在配置文件中添加
server 127.127.100.0 ##本地是时钟源
fudge 127.127.100.0 stratum 8 ##设置时间层级为8
service ntpd start ##开启服务
/usr/sbin/ntpdate 192.168.100.100 ##进行时间同步
vim /etc/my.cnf
在[mysqld] 下添加
server-id=1
log-bin=master-bin ##主服务器日志文件
log-slave-updates=true ##从服务器更新二进制日志
service mysqld restart
mysql -u root -p ##进入mysql数据库
GRANT REPLICATION SLAVE ON *.* TO ‘myslave‘@‘192.168.100.%‘ IDENTIFIED BY ‘123456‘; ## 给予回应从服务器的权限
FLUSH PRIVILEGES; ##刷新数据
show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 | 339 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
vim /etc/my.cnf
在 [mysqld]下添加
server-id=11
relay-log=relay-log-bin ##从主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index ##定义relay-log的位置和名称
## 第二台从服务器的 serverid不能相同
service mysqld restart ##重启服务
mysql -u root -p ##进入mysql数据库
change master to master_host=‘192.168.100.100‘,master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘master-bin.000002‘,master_log_pos=339; ##配置主服务器
start slave; ##开启同步
show slave status \G; ##查看同步状态
在主服务器上
create database test;
在从服务器上
show databases;
能看到test 则说明成功
推荐使用java 1.6的环境包
cp jdk-6u14-linux-x64.bin /usr/local/
/usr/local/jdk-6u14-linux-x64.bin
一直往下 接着输入 yes , 再按 enter
稍等一会 配置完成java环境
mv jdk1.6.0_14/ /usr/local/jdk1.6
vim /etc/profile
在最后添加
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$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 ##使配置生效
mkdir /usr/local/amoeba ##创建amoeba服务器位置
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ ##解压amoeba
chmod -R 755 /usr/local/amoeba ##给予amoeba权限
/usr/local/amoeba/bin/amoeba
##显示amoeba start|stop说明安装成功
在三台mysql上添加权限开放给amoeba访问
grant all on *.* to test@‘192.168.100.%‘ identified by ‘123.com‘;
回到amoeba服务器
cd /usr/local/amoeba
vim conf/amoeba.xml
---30行--
##用户名
<property name="user">amoeba</property>
----32行---------
##密码
<property name="password">123456</property>
---117-去掉注释-
<property name="defaultPool">master</property> ##默认池
<property name="writePool">master</property> ##写入池
<property name="readPool">slaves</property> ##读取池
vi conf/dbServers.xml
--23-- mysql服务器的通用数据库名称--
<property name="schema">mysql</property>
--26-29--去掉注释--
<property name="user">test</property>
<property name="password">123.com</property>
-----42-主服务器地址---
<dbServer name="master" parent="abstractServer">
<property name="ipAddress">192.168.100.100</property>
--52-从服务器主机名-
<dbServer name="slave1" parent="abstractServer">
--55-从服务器地址-
<property name="ipAddress">192.168.100.101</property>
将从服务器的6行复制 并配置 slave2 和其ip地址
-----63-从服务器地址池---
<dbServer name="slaves" virtual="true">
<poolConfig
--末尾--
<property name="poolNames">slave1,slave2</property>
</poolConfig>
/usr/local/amoeba/bin/amoeba start& ##开启服务
netstat -anpt | grep java
看到8066 表示服务开启成功
看到主从服务器的地址 表示连接数据库成功
在一台已经安装mysql服务器的电脑上
mysql -u amoeba -p123456 -h 192.168.100.100 -P8066
## 通过amoeba 登录
--在主服务器上--
create database zzz;
create table test (id int(10),name varchar(10),address varchar(20));
--在两台从服务器上--
stop slave; ##关闭同步
--在主服务器上--
use zzz;
insert into test values(‘1‘,‘abc‘,‘this_is_master‘);
--在从服务器1上--
use zzz;
insert into test values(‘2‘,‘abc‘,‘this_is_slave1‘);
--在从服务器2上--
use zzz;
insert into test values(‘3‘,‘abc‘,‘this_is_slave2‘);
------在客户端上测试----第一次会向从服务器1读数据-第二次会各从2读取
select * from test;
一次显示id为2的数据 一次显示id为3的数据
-------------在通过客户端连接数据库后写入的数据只有主会记录,然后同步给从-从服务器不会记录,从而实现了读写分离。----
insert into test values(‘5‘,‘abc‘,‘this_is_client‘);
--在主服务器上可以看到写入的数据--
select * from test;
可以看到id 为 1 和 5的数据
--在从服务器上--
start slave; 开启同步
--在客户端--
select * from test;
一次会显示 id为 1 2 5 的数据
一次会显示 id 为 1 3 5 的数据
Centos7 下 mysql 5.7通过 amoeba 读写分离
标签:write 开启 hang binlog cal this 步骤 amoeba usr
原文地址:http://blog.51cto.com/13625924/2145043