千家信息网

MySQL数据库进阶篇——主从同步与读写分离

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,MySQL数据库进阶篇--主从同步与读写分离主从同步实验准备总共四台虚拟机,一台应用端,一台amoeba,一台主服务器,一台从服务器​ 应用端: centos7-2(实验前已装MySQL)​ amoe
千家信息网最后更新 2026年10月31日MySQL数据库进阶篇——主从同步与读写分离

MySQL数据库进阶篇--主从同步与读写分离

主从同步

实验准备

总共四台虚拟机,一台应用端,一台amoeba,一台主服务器,一台从服务器

​ 应用端: centos7-2(实验前已装MySQL)

​ amoeba: centos7-1(无MySQL)

​ 主服务器: centos7-3(实验前已装MySQL)

​ 从服务器: centos7-4(实验前已装MySQL)

主服务器设置

安装时间同步服务

[root@master ~]# yum install ntp -y#修改ntp配置文件[root@master ~]# vim /etc/ntp.conf      server 127.127.195.0        //本地是时钟源,195段落//    fudge 127.127.195.0 stratum 8       //设置时间层级为8//###开启服务[root@master ~]# systemctl start ntpd

修改MySQL主配置文件

[root@master ~]# vim /etc/my.cnf    server-id 10    log-bin=zhu-bin    log-slave-updates=ture    ##开启主从同步[root@master ~]# systemctl restart mysqld[root@master ~]# systemctl stop firewalld

进入数据库修改

[root@master ~]# mysql -u root -pgrant replication slave on *.* to 'myslave'@'192.168.142.%' identified by 'asd123';    #允许从服务器使用myslave账户在主服务器上进行复制操作show master status;   #查看主服务器信息mysql> mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000005 |      868 |              |                  |                   |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)
从服务器设置

安装同步服务客户端ntpd

[root@slave ~]# yum install ntp ntpdate -y#开启服务关防火墙[root@slave ~]# systemctl start ntpd[root@slave ~]# systemctl stop firewalld##进行时间同步[root@slave ~]# /usr/sbin/ntpdate 主服务器地址

修改MySQL主配置文件

[root@slave ~]# vim /etc/ntp.conf    server-id = 20    relay-log = relay-bin      ###同步日志文件到本地    relay-log-index = slave-bin.index    ##定义日志文件类型及名称[root@slave ~]# systemctl restart mysqld

进入数据库修改

[root@slave ~]# mysql -u root -p123123change master to master_host='192.168.142.135',master_user='myslave',master_password='asd123',master_log_file='mysql-bin.000005',master_log_pos=865;    ##授予权限start slave;###查询同步是否成功show slave status\G*************************** 1. row ***************************               Slave_IO_State: Reconnecting after a failed master event read                  Master_Host: 192.168.142.132                  Master_User: myslave                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.000004          Read_Master_Log_Pos: 1633               Relay_Log_File: master1-relay-bin.000011                Relay_Log_Pos: 1126        Relay_Master_Log_File: mysql-bin.000004             Slave_IO_Running: Yes        ##IO连接            Slave_SQL_Running: Yes        ##SQL连接            ......

PS:

​ 有时候做主从同步时会遇见Slave_SQL_Running: NO的问题,以下是解决方法:

####Slave_SQL_Running: No问题解决方案MariaDB [(none)]> stop slave;                                                       MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;MariaDB [(none)]> start slave; MariaDB [(none)]> show slave status\G 

至此,MySQL主从同步已经完成,下面就是开始进行动静分离


MySQL读写分离

实验准备

以下实验全部基于主从同步的基础上进行

#总共四台虚拟机,一台应用端,一台amoeba,一台主服务器,一台从服务器

​ 应用端:centos7-2(有MySQL)

​ amoeba: centos7-1(无MySQL)

​ 主服务器: centos7-3(有MySQL)

​ 从服务器: centos7-4(有MySQL)

设置amoeba服务器

安装jdk环境(amoeba由java开发)

[root@amoeba ~]# systemctl stop firewalld.service   #关闭防火墙[root@amoeba ~]# setenforce 0[root@amoeba mnt]# cp -p jdk-6u14-linux-x64.bin /usr/local/  #移动事先准备好的jdk包[root@amoeba mnt]# cd /usr/local/[root@amoeba local]# ./jdk-6u14-linux-x64.bin       #安装jdk环境[root@amoeba local]# mv jdk1.6.0_14/ jdk1.6##配置jdk环境变量[root@amoeba local]# vim /etc/profile     export JAVA_HOME=/usr/local/jdk1.6    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib     export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin    export AMOEBA_HOME=/usr/local/amoeba    export PATH=$PATH:$AMOEBA_HOME/bin[root@amoeba local]# source /etc/profile

解压、安装amoeba工具包

[root@amoeba local]# mkdir amoeba[root@amoeba local]# tar zxf /mnt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba   #解压事先准备好的工具包[root@amoeba local]# chmod -R 755 amoeba/    #赋予权限##检查是否安装成功[root@amoeba local]# /usr/local/amoeba/bin/amoebaamoeba start|stop     ##出现以下命令行即为成功

修改主配置文件amoeba.xml

[root@amoeba local]# vim amoeba/conf/amoeba.xml##按照下图进行修改#(增加客户机访问amoeba的账户、密码)amoeba123123---------------------------------------------------------#(开启默认池、读取池、写入池)mastermasterslaves

修改amoeba有关数据库的配置文件dbserver.xml

[root@amoeba local]# vim amoeba/conf/dbServers.xml## 按照下图进行修改#(修改amoeba访问节点服务器的账户、密码)    test    asd123-------------------------------------------------------------#(指定主、从服务器节点地址)    192.168.142.132    192.168.142.136--------------------------------------------------------------#(将从服务器划入读取地址池中)    slave

返回主、从服务器数据库中

##在主、从服务器上开放访问权限[root@slave ~]# mysql -u root -p123123     #进入主服务器数据库(从服务器与主服务器操作相同)grant all on *.* to test@'192.168.142.%'identified by 'asd123';  #开放test用户访问权限

开启amoeba服务器

[root@amoeba conf]# /usr/local/amoeba/bin/amoeba start &   #调入后台持续运行
应用客户端

​ 在安装好MySQL的前提下,输入mysql -u amoeba -p123123 -h 192.168.142.142 -P8066即可成功访问amoeba服务器。

​ 此时,进行读写操作时将使用主服务器master进行写入,使用从服务器slave进行读取。

服务 服务器 同步 文件 主从 数据 数据库 实验 配置 应用 成功 权限 准备 地址 客户 环境 账户 下图 客户端 密码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司的优势 金诺互联网科技 互联网科技与金融科技 奇酷互联网科技 世界互联网领先科技成果 智慧科技互联网 电子科技大学互联网 亿人帮互联网科技 互联网金融和金融科技 科技赋能互联网健康 深圳市运趣互联网科技有限公司 青岛中康互联网医疗科技有限公司 湖南诚度互联网科技有限公司 宁夏科技产业互联网案例 武汉健翔互联网络科技有限公司 崇明区互联网教育科技售后服务 广州燕处互联网科技有限公司 互联网时代科技型公司的机会 中国新注册互联网科技 平安好医生打造互联网科技医疗 花魁咖啡 互联网金融监管科技数据 安徽鑫晟辉互联网科技 伴你行互联网科技有限公司 镁科技互联网资讯平台 山东吉时兔互联网科技有限公司 未来五年的互联网科技 阿里互联网科技企业 浙南科技城互联网大厦招聘 重庆科技产业互联网有哪些
0