MySQL数据库进阶篇——主从同步与读写分离
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,MySQL数据库进阶篇--主从同步与读写分离主从同步实验准备总共四台虚拟机,一台应用端,一台amoeba,一台主服务器,一台从服务器 应用端: centos7-2(实验前已装MySQL) amoe
千家信息网最后更新 2025年11月06日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的账户、密码)amoeba 123123 ---------------------------------------------------------#(开启默认池、读取池、写入池)master master slaves 修改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安全错误
数据库的锁怎样保障安全
软件开发商注册资金
服务器维保备件
c 从数据库读出照片
软件开发公司联系电话
电信网络安全新闻稿
大学的数据库软件
华为服务器管理口使用方法
和信科技互联网
工业软件开发技术学费
数据库学生表中的候选码
阿里云服务器内存大小会影响什么
警惕网络诈骗等网络安全
2018网络安全会议哪些
列王的纷争怎么创服务器
陕西枫丹名郡网络技术有限公司
数据库设计由谁做
网络安全标语小视频
网络安全网站设计感上衣
数据库的库文件
方舟端游宝可梦服务器怎么进
品众网网络安全小组组长
数据库中自增长用什么
数据库 插入中文
西电集团网络安全
tdcs系统网络安全防护
数据库接口逻辑是怎样的
网络安全 映射
查询数据库表的列名和列说明
坦克世界显示服务器忙
小学生网络安全我的故事征文