此类架构主要解决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;
重启mysql服务
service mysqld restart
重新进入mysql,查看
show master status
记录下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
成功!
测试:
通过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