实验拓扑:
地址分配:
Client 192.168.1.1
Amoeba 192.168.1.2
Mysql-Master 192.168.1.3
Mysql-slave1 192.168.1.4
Mysql-slave2 192.168.1.5
1、配置时间同步
1)在Master上使用yum安装ntp,修改其配置文件/etc/ntp.conf后启动服务。为udp端口123开启iptables例外。
2)在两台slave上执行/usr/sbin/ntpdate 192.168.1.3使得时间同步与Master同步。
2、主从复制
注意:三台Mysql数据库上都需要开启tcp端口3306的iptables例外。
1)主服务器Master的配置
/etc/my.cnf的配置
重启mysqld服务
执行mysql -u root -p登录到mysql数据库,为服务器授权
2)从服务器slave的配置(两台从服务器配置相同)
/etc/my.cnf的配置
重启服务(service mysqld restart),登陆mysql配置启动slave
通过show slave status\G可以查看主从复制运行是否正常。主从复制依赖于SQL进程和IO进程,这两个进程状态为“yes”即表示运行正常。
3、读写分离
Mysql读写分离可以通过两种方式实现,基于程序代码内部实现和基于中间件实现,本次使用Amoeba就是基于中间件实现的其中一个方法。
1)Amoeba中间件服务器的配置
安装jdk
修改/etc/profile
执行source /etc/profile立即生效,java -version查看是否完成安装。
安装Amoeba
修改Amoeba配置文件/usr/local/amoeba/conf/amoeba.xml
修改Amoeba配置文件/usr/local/amoeba/conf/dbServers.xml
启动Amoeba,查看端口
所以Amoeba中间件需要开启tcp端口8066iptables例外。
2)三台Mysql都需要给Aomeba授权(三台相同操作)
4、客户端连接Amoeba。(正常应当在命令后加-P8066,我后来将端口修改为3306了,就不用在后面加端口号了)
注意:横线处输入密码为‘amoeba’的密码‘123456b’,而命令中密码为‘chen’的密码‘123456c’。
总结,最后的效果是:
1)在slave上登陆本地mysql写数据,不会同步到master;而在master上写数据,可以同步到slave。
2)关闭主从复制,在client上写数据,可以在master上看到该数据,slave上看不到(因为client写数据会直接写到master上)。
3)关闭主从复制后,在master上登陆本地的mysql写数据,client读取不到数据;相反在slave上登陆本地写数据,client可以读取到(因为client读数据是从slave上读取的)。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享名称:Mysql主从复制和读写分离-创新互联
本文地址:http://lswzjz.com/article/csigoi.html