首页 / MYSQL / MySQL主从复制与读写分离
MySQL主从复制与读写分离
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL主从复制与读写分离,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4236字,纯文字阅读大概需要7分钟。
内容图文
![MySQL主从复制与读写分离](/upload/InfoBanner/zyjiaocheng/1107/141234e567ca46b28d30ad7479e00d76.jpg)
实验前环境准备
- Linux两台
- MySQL数据库一主一从
开始搭建
MySQL主服务器
安装ntp
[root@localhost ~] yum install ntp -y
修改ntp主配置文件
# 在配置文件里面添加
server 127.127.100.0 //本地是时钟源//
fudge 127.127.100.0 stratum 8 //设置时间层级为8(限制在15内)//
#开启主服务器的ntp
从服务器安装ntpdate
[root@localhost ~] yum install ntpdate -y
# 从服务器不需要配置直接启动
[root@localhost ~]# systemctl start ntpdate.service
配置 MySQL
主服务器设置
#修改主配置文件
vim /etc/my.cnf
server-id = 11
log-bin=master-bin //主服务器日志文件//
log-slave-updates=true //从服务器更新二进制日志//
mysql -u root -p //进入数据库
GRANT REPLICATION SLAVE ON *.* TO ‘myslave‘@‘192.168.32.%‘ IDENTIFIED BY ‘123456‘;
#允许192.168.32.0网段的主机以myslave为用户名,密码123456,访问数据库的任何库和任何表
FLUSH PRIVILEGES;
#刷新数据库
mysql> show master status; #查看
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 603 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
从服务器设置
server-id = 22 #server-id 要和主服务器不一样是myql的身份身份标识是唯一的
relay-log=relay-log-bin //从主服务器上同步日志文件记录到本地//
relay-log-index=slave-relay-bin.index //定义relay-log的位置和名称//
#进入mysql里面指定主服务器IP地址、用哪个用户登录、登陆密码、二进制文件名、偏移量(注:偏移量要随时看因为他会随时更新)
change master to master_host=‘192.168.100.101‘,master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘master-bin.000002‘,master_log_pos=339;
#开启从服务器同步
start slave;
show slave status\G; //查看状态//
下面两个状态要显示开启如果是no的话表名主从复制没开启成功就要检查了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
验证主从同步
主服务器上 create database db_test;
去从服务器上 show databases;
上面是主从同步,下面安装的amoeba是读写分离的调度服务器
配置amoeba服务器
#安装java环境
./jdk-6u14-linux-x64.bin 运行 中间有一个yes or no 的交互输入yes
#修改环境变量,在/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 运行profile
[root@localhost local] source /etc/profile
安装amoeba
上面做了两台MySQL数据库做的主从复制要做读写分离再加一台MySQL节点服务器做从
#先要有amoeba的源代码包解压到/usr/local里面创建一个amoeba的文件然后解压进去
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
chmod -R 755 /usr/local/amoeba/ #给amoeba文件夹755的执行权限
/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
--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.101</property>
--52-从服务器主机名-
<dbServer name="slave1" parent="abstractServer">
--55-从服务器地址-
<property name="ipAddress">192.168.100.102</property>
<dbServer name="slaves" virtual="true">
<poolConfig >
--末尾--
<property name="poolNames">slave1,slave2</property>
</poolConfig>
/usr/local/amoeba/bin/amoeba start&
netstat -anpt | grep java
在23行有一个test的数据库
23 <property name="schema">mysql</property>
虽然能登录主服务器的数据库但是不能对其进行操作
里面原来是test但是主服务器上没有test这个数库所
以会报错我们要把test改为主服务器里面已经存在的
数据库才能对它进行相应操作
想体验怎么读写分离down掉从服务器上的slave分别进行操作查看
---在两台从上-----
stop slave;
----在主服务器上---内容不会同步
insert into zang values(‘1‘,‘zhang‘,‘this_is_master‘);
----从服务器1----
use benet;
insert into zang values(‘2‘,‘zhang‘,‘this_is_slave1‘);
----从服务器2----
use benet;
insert into zang values(‘3‘,‘zhang‘,‘this_is_slave2‘);
------在客户端上测试----第一次会向从服务器1读数据-第二次会各从2读取
select * from zang;
-------------在通过客户端连接数据库后写入的数据只有主会记录,然后同步给从-从服务器不会记录,从而实现了读写分离。----
insert into zang values(‘5‘,‘zhang‘,‘write_test‘);
-----看不到新插入的数据--因为同步没有开启-----只有主服务器上有数据。
select * from zang;
原文:http://blog.51cto.com/13645280/2139688
内容总结
以上是互联网集市为您收集整理的MySQL主从复制与读写分离全部内容,希望文章能够帮你解决MySQL主从复制与读写分离所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。