此类架构主要解决V2.0架构下的读问题,通过给Instance挂数据实时备份的思路来迁移读取的压力,在Mysql的场景下就是通过主从结构,主库抗写压力,通过从库来分担读压力,对于写少读多的应用


准备工作:

2个linux服务器,安装mysql,尽量使用版本一致,否则可能出现不兼容。

注:

远程访问

第一步:检查阿里云安全组策略,是否开放端口

第二步:检查iptables防火墙是否开放端口


Master配置

vim /etc/my.cnf 

修改如下

#可访问的地址段
bind-address = 0.0.0.0
#mysql集群唯一标识
server-id = 1 
无需开启二进制日志文件的数据库
binlog-ignore-db=information_schema

mysql -u root -p进入数据库

执行如下:

#创建一个用户
create user harris;
#赋予slave访问权限
grant replication slave on *.* to 'harris'@'%' identified by 'test';
#查询是否成功
select host,user from mysql.user;

QQ图片20170906141207.png

重启mysql服务

service mysqld restart

重新进入mysql,查看

show master status

QQ图片20170906141412.png

记录下mysql-bin.000042 与120的值。分别代表同步日志与日志位置

Slave配置

vim /etc/my.cnf修改如下

bind-address = 0.0.0.0
server-id = 2
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60

重启mysql服务

service mysqld restart

进入mysql

添加主服务器连接信息

#master服务器ip或host
change master to master_host='x.x.x.x',
#master服务器用户名
master_port=3306,master_user='harris',
#master服务器密码
master_password='test',
#刚刚记录的日志名 
master_log_file='mysql-bin.0000040',
#刚刚记录的pos值
master_log_pos=120;
#启动主服务器同步
start slave;
#查看连接状态
show slave status\G

QQ图片20170906142048.png

成功!

测试:

通过master写入数据,在slave查看,结果一致!


关于配置过程错误提示:

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

执行:reset slave//清空所有的复制信息,然后重置gtid_purged和master.infor

注:如有其它报错可以看mysql错误日志,具体情况解决

查看mysql错误日志

位置:/data/mysql/mysql-error.log