今天我们要搭建的架构是一主多从,一个master,多个Slave。
首先Liunx安装mysql, 不会的请看博文 MySQL安装
多的就不说了,直接进入正题。
1. 配置 master 节点
cd /etc/mysql/mysql.conf.d
vim mysqld.cnf
添加下面配置
#配置需要同步的数据库
binlog-do-db=shupf
#配置不需要同步的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
server-id=1 //表示是主节点
log-bin=mysql-bin
保存退出,
重启mysql服务: service mysql restart
连接mysql: mysql -uroot -p你的密码
输入:show master status;
出现如图所以就表示配置成功
1表示:binlog日志,里面会记录update,alter,delete语句,不会记录select语句,从节点会监听这个binlog文件,然后读取里面的 语句,从而来达到数据的同步
2. 在另一台机器安装Slaver mysql数据库
vim /etc/my.cnf
添加如下配置
server-id=2 #从节点,多个依次增加
log-bin=mysql-slave-bin
replicate-do-db=shupf #需要同步的数据库#不需要同步的数据库
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
重启mysql, systemctl restart mysqld.service
进入msyql: mysql -uroot -p
配置连接master服务器: change master to master_host='master host', master_user='root', master_password='密码'
启动slave节点:start slave;
查看状态:show slave status \G;mysql
标识配置成功;
测试一下数据同步,
在三个连接中创建好需要同步的数据库:向master中创建一个表t_user,插入数据,然后刷新其他两个连接的数据库是否正常通过过去,至此,数据同步完成,接下了还有就是实现读写分离。
3. 读写分离,运用Atlas来实现
wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm
rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
配置Atlas
cd /usr/local/mysql-proxy/conf/
修改配置 test.cnf
加密密码
划线部分主要是需要配置的
运行atlas成功
用navcat 连接atlas
host为master主机地址,用户名和密码都是,唯一是端口是1234
,测试连接
如果你们报错10060,需要检查两个地方
第一,开放阿里云端口,如果开放后还是不行,第二,开放防火墙1234端口
开放防火墙端口:
查询端口号 1234 是否开启:firewall-cmd --query-port=1234/tcp
如果显示no,表示没开放,yes表示开放
开放1234端口:firewall-cmd --zone=public --add-port=1234/tcp --permanent
重启防火墙:firewall-cmd --reload
查询端口号 1234 是否开启:firewall-cmd --query-port=1234/tcp
显示yes表示成功开放,
再去连接navcat就好了
此时我们就来测试一下读写分离,这里我先说明一下,由于atlas在CentOS安装比较顺利,所有后面我就把78服务器改为了master, 231和214服务器改为了slave节点
我们先打开日志:
cd /usr/local/mysql-proxy/log
实时查看sql_test.log文件
tail -f tail -f sql_test.log
进入刚刚连接的atlas连接的mysql, 执行查询t_user表2次看看结果
从这里我们可以看出,查询语句只走了slave节点231和214,如果我们非要从master节点查询,可以在查询语句前面加上/*MASTER*/
此时就走了master节点,至此大功告成!