mysql主从协议_Mysql主从同步读写分离
Mysql主从同步读写分离
⽬录
⼀.概述
Amoeba是⼀个以MySQL为底层数据存储,并对应⽤提供MySQL协议接⼝的proxy。它集中地响应应⽤的请求,依据⽤户事先设置的规则,将SQL请求发送到特定的数据库上执⾏。基于此可以实现负载均衡、读写分离、⾼可⽤性等需求。与MySQL官⽅的MySQL Proxy相⽐,作者强调的是amoeba配置的⽅便(基于XML的配置⽂件,⽤SQLJEP语法书写规则,⽐基于lua脚本的MySQL Proxy简单)。
免费编译器下载
⼆. 实验⽬的
实际的⽣产环境中,由单台Mysql作为独⽴的数据库是完全不能满⾜实际需求的,⽆论是在安全性,⾼可⽤性以及⾼并发等各个⽅⾯。通过主从同步(Master-Slave)的⽅式来同步数据,再通过读写分离(amobe)来提升数据库的并发负载能⼒。
部署MySQL主从同步与读写分离,同时可以使我们真正的了解其内部⼯作原理,更好的认识安畅云数据库,快速定位故障并及时解决,为客户提供更专业的IT服务。
三.试验环境
设备名称
管理IP
操作系统
⽤途
Slave1
172.16.200.82
Centos 6.5 64bit
Mysql5.1.73
Slave2
172.16.200.80
Centos 6.5 64bit
Mysql5.1.73
amoeba-mysql-master
172.16.200.81
Centos 6.5 64bit
Amobe 3.0.5Mysql5.1.73
初始配置:关闭防⽕墙或将3306与8066添加例外,关闭Selinux。
四.⽅案说明
allocation of本⽅案为利⽤amobe实现mysql数据库读写分离,提升数据库并发负载能⼒,同时配置mysql主从同步,增加数据库安全性和⾼可⽤性能。
五.Mysql主从同步配置
1. 安装与初始化数据库
主从服务器均安装MySQL,并设置开机⾃启动。
在线电子书转换器Yum install mysql mysql-devel mysql-server
/etc/init.d/mysqld start
Chkcofig mysqld on
分别设置MySQL数据库密码为123
mysqladmin -u root password "123"
注:
所有机器的MySQL数据库密码要相同,amoeba配置要求。
2. 主从服务器均授予MySQL远程登录权限。
jsp代码怎么注释
mysql> grant all privileges on *.* to  root@"172.16.200.%"  identified by "123";
mysql> flush privileges;
注:
我这⾥为配置简单,将root⽤户开启远程登录,在⽣产环境中建议新建MySQL⽤户并设置相关的登录权限。例如:限制源IP,允许访问的库⽂件等。
3. 主从同步配置
(1). 在amoeba-mysql-master上创建数据库⽂件
相关操作命令如下:
create database 数据库名称;              //创建数据库
Use 数据库;                            //改变所使⽤的数据库
create table 表名称(字段名称 数据类型);//创建表
description 表名称;                      //查看表结构
select 字段 from 表;                    //数据库查询
查看amoeba-mysql-master⽬前数据库列表⽂件是否创建成功
(2). 分别修改主从服务器的MySQL配置⽂件对新建数据库master_test⽂件进⾏同步。
修改amoeba-mysql-master服务器的/etc/myf⽂件配置如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
log-bin=mysql-bin  #打开mysql⼆进制⽇志
server-id=1    #设置mysql_id,主从不能相同
binlog-do-db=master_test  #设置⼆进制⽇志记录的库
binlog-ignore-db=mysql  ##设置⼆进制⽇志不记录的库
sync_binlog=1
symbolic-links=0
# Disabling symbolic-links is recommended to prevent assorted security risks [mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
修改slave1服务器/etc/myf配置如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
log-bin=mysql-bin
server-id=2
master-user=root
master-host=172.16.200.81
master-password=123
master-port=3306
# Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
修改slave1服务器/etc/myf配置如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
log-bin=mysql-bin
server-id=3
master-user=root
master-host=172.16.200.81南京php培训哪家好
master-password=123
master-port=3306
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
注:MySQL主与MySQL从服务器server-id 不能相同,MySQL主的ID为1,其他从服务器的ID均未1以下,保证不相同即可。
(2). 进⾏数据同步
将amoeba-mysql-master服务器MySQL数据master_test数据库打包分别copy到从服务器MySQL数据⽬录/var/lib/mysql/下,并进⾏解压。拷贝打包好的数据可以使⽤scp命令。
scp master_ root@172.16.200.82:/var/lib/mysql/
scp master_ root@172.16.200.83:/var/lib/mysql/数据解压完成分别登录主从服务器查看数据库主从同步状态
⾸先查看master服务器状态mysql怎么读英语
mysql> show master status;
其次查看slave1和slave2的状态。分别如下:
mysql> show slave status \G
Slave1状态如下:
Slave2状态如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。