失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【数据库七】搭建MySQL主从复制和读写分离详解

【数据库七】搭建MySQL主从复制和读写分离详解

时间:2022-08-22 16:09:16

相关推荐

【数据库七】搭建MySQL主从复制和读写分离详解

详解搭建搭建MySQL主从复制和读写分离

1.案例实施:搭建MySQL主从复制1.1 主节点数据库(CentOS 7-5)1.2 从节点数据库(CentOS 7-6)1.3 从节点数据库(CentOS 7-7)1.4 验证MySQL主从复制 2.案例实施:搭建MySQL读写分离2.1 Amoeba服务器(CentOS 7-4)2.2 客户端(CentOS 7-3)2.3 主节点数据库(CentOS 7-5)2.4 从节点数据库(CentOS 7-6)2.5 验证MySQL读写分离和负载均衡2.6 从节点数据库(CentOS 7-7)

接上文MySQL主从复制和读写分离知识点讲解

1.案例实施:搭建MySQL主从复制

1.1 主节点数据库(CentOS 7-5)

###关闭和禁止防火墙开机自启功能systemctl stop firewalldsystemctl disable firewalldsetenforce 0vim /etc/selinux/configSELINUX=disabled

(1)搭建时间同步服务器

rpm -q ntp ntpdatevim /etc/ntp.confrestrict default nomodifyserver ntpdate #查看aliyun时间同步服务器systemctl restart ntpd #重启ntp时间服务ntpq -p

(2)修改/etc/f文件,开启二进制日志

vim /etc/fserver-id = 1 #设置主服务器的id号为1log-bin=mysql-binbinlog_format=mixedsystemctl restart mysqld

(3)添加允许从服务器复制的用户名和密码

mysql -uroot -p123grant replication slave on *.* to 'myslave'@'%' identified by '123';flush privileges;show master status;

1.2 从节点数据库(CentOS 7-6)

###关闭和禁止防火墙开机自启功能systemctl stop firewalldsystemctl disable firewalldsetenforce 0vim /etc/selinux/configSELINUX=disabled

(1)设置计划性任务,使从服务器与主服务器保持时间同步

ntpdate 192.168.80.50 #连接主服务器的IP地址crontab -e #在从服务器上执行计划性任务,每30分钟向主服务器进行一次时间同步*/30 * * * * /usr/sbin/ntpdate 192.168.80.50systemctl restart crond #重启计划性服务crontab -l #查看计划性任务

(2)修改/etc/f配置文件,开启从服务器的中继日志

vim /etc/fserver-id = 2relay-log=relay-log-binrelay-log-index=relay-log-bin.indexsystemctl restart mysqld

(3)设置从服务器连接复制主服务器的二进制日志数据

mysql -uroot -p123change master to master_host='192.168.80.50',master_port=3306,master_user='myslave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=592;start slave;show slave status\G*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.80.50Master_User: myslaveMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 592Relay_Log_File: relay-log-bin.000002Relay_Log_Pos: 320Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: Yes #查看到I/O进程和SQL进程都为Yes,表示主从服务器同步复制成功Slave_SQL_Running: Yes

1.3 从节点数据库(CentOS 7-7)

实验步骤操作同CentOS 7-6完全一样,此处省略!!!

1.4 验证MySQL主从复制

(1)在主服务器中添加数据记录

(2)在从服务器中查看数据记录是否同步发生更改

2.案例实施:搭建MySQL读写分离

强调说明:该“案例实施:搭建MySQL读写分离”,是在“案例实施:搭建MySQL主从复制”的基础上进行的,因此此处省略MySQL主从复制的步骤!!!

2.1 Amoeba服务器(CentOS 7-4)

###关闭和禁止防火墙开机自启功能systemctl stop firewalldsystemctl disable firewalldsetenforce 0vim /etc/selinux/configSELINUX=disabled

(1)安装 Java 环境

cd /opt/rz -Eamoeba-mysql-binary-2.2.0.tar.gz jdk-6u14-linux-x64.bincp /opt/jdk-6-u14linux-x64.bin /usr/local/cd /usr/local/chmod +x /usr/local/jdk-6u14-linux-x64./jdk-6u14-linux-x64.bin//按yes,按enter

(2)安装Amoeba软件

cd /opt/mkdir /opt/amoebatar xf amoeba-mysql-binary-2.2.0.tar.gz -C amoeba mv /opt/amoeba /usr/local/chmod -R 755 /usr/local/amoeba/

(3)将Amoeba服务的路径加入到系统环境变量中

vim /etc/profileexport JAVA_HOME=/usr/local/jdk1.6.0_14export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport AMOEBA_HOME=/usr/local/amoebaexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$AMOEBA_HOME/binsource /etc/profilejava -version

(4)开启Amoeba服务

cd /usr/local/amoeba/bin./amoeba

(5)配置Amoeba读写分离,两个Slave 读负载均衡

修改amoeba.xml配置文件,定义客户端连接Amoeba服务器的用户名和密码;

cp /usr/local/amoeba/conf/amoeba.xml /usr/local/amoeba/conf/amoeba.xml.bakvim /usr/local/amoeba/conf/amoeba.xml<property name="user">admin</property>#在30行左右定义客户端连接amoeba服务器的用户名<property name="password">123</property> #在32行左右定义客户端连接amoeba服务器的密码<property name="writePool">master</property>#取消该行注释,在118行左右设置写服务器池名master<property name="readPool">slaves</property> #取消该行注释,在119行左右设置读服务器池名slaves

修改dbServers.xml配置文件,定义Amoeba服务器连接主从数据库的用户名和密码;

cp /usr/local/amoeba/conf/dbServers.xml /usr/local/amoeba/conf/dbServers.xml.bakvim /usr/local/amoeba/conf/dbServers.xml###22行-24行内容需要注释<!-- mysql schema <property name="schema">test</property>--><property name="user">myamoeba</property> #在27行左右定义amoeba服务器连接主从数据库的用户名<property name="password">123</property>#在30行左右定义amoeba服务器连接主从数据库的密码<dbServer name="master" parent="abstractServer"> #在46行左右设置写服务器池名master<property name="ipAddress">192.168.80.50</property> #在49行左右设置写服务器池的IP地址<dbServer name="slave1" parent="abstractServer"> #在53行左右设置从节点名slave1<property name="ipAddress">192.168.80.60</property> #在56行左右设置从节点名的IP地址<dbServer name="slave2" parent="abstractServer"> #在60行左右设置从节点名slave2<property name="ipAddress">192.168.80.70</property> #在63行左右设置从节点名的IP地址<dbServer name="slaves" virtual="true"> #在67行左右设置读服务器池名slaves<property name="poolNames">slave1,slave2</property> #在73行左右添加从节点的名称

(6)启动Amoeba软件,并通过端口验证是否开启

cd /usr/local/amoeba/bin./amoeba start &netstat -lntp | grep 8066

2.2 客户端(CentOS 7-3)

(1)关闭防火墙,并禁止开机自启

###关闭和禁止防火墙开机自启功能systemctl stop firewalldsystemctl disable firewalldsetenforce 0vim /etc/selinux/configSELINUX=disabled

(2)安装并启动mariadb数据库

yum install -y mariadb mariadb-serversystemctl start mariadbnetstat -lntp | grep 3306

(3)登录Amoeba服务器代理访问mysql

mysql -u admin -p123 -h 192.168.80.40 -P 8066

通过amoeba服务器代理访问mysql,在通过客户端连接mysql后写入的数据只有主服务会记录,然后同步给从服务器

2.3 主节点数据库(CentOS 7-5)

(1)开放权限给Amoeba用户(myamoeba) 访问

grant all on *.* to 'myamoeba'@'192.168.80.%' identified by '123';flush privileges;

2.4 从节点数据库(CentOS 7-6)

(1)开放权限给Amoeba用户(myamoeba) 访问

grant all on *.* to 'myamoeba'@'192.168.80.%' identified by '123';flush privileges;

2.5 验证MySQL读写分离和负载均衡

查看并确定目前主从复制,以及Amoeba服务器代理运行成功;

select * from location;

测试读写分离;

###关闭两个从节点数据库stop slave;###在客户端中新添加两条数据记录insert into location values('hhh','gggg');insert into location values('cgy','hjue');###在所有主机数据库中查看结果select * from location;###两个从节点数据库开启主从复制start slave;select * from location;

测试负载均衡;

###在节点数据库1中添加一条数据记录insert into location values('LYU','LYU');###在节点数据库2中添加另一条数据记录insert into location values('HESW','HESW');###在客户端反复执行select命令查看select * from location;

2.6 从节点数据库(CentOS 7-7)

两个从节点服务器的操作步骤完全一样,同从节点数据库(CentOS 7-6),此处省略!!!

如果觉得《【数据库七】搭建MySQL主从复制和读写分离详解》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。