MySQL数据库进阶篇——主从同步与读写分离
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,MySQL数据库进阶篇--主从同步与读写分离主从同步实验准备总共四台虚拟机,一台应用端,一台amoeba,一台主服务器,一台从服务器 应用端: centos7-2(实验前已装MySQL) amoe
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
计算机软件开发收入核算
网络安全事件等级的确定
龙契网络技术
ftp不能连接服务器
安卓微信显示服务器异常
沧州金诺网络技术公司
办公室如何做好管理与服务器
一维套料软件开发
本科通信工程考研网络安全
数据库数据做错了还能改吗
三级网络技术考过
软件开发过程模型设计
工控网络安全知识重要性
网络安全分析五官
网络安全品牌份额
网络安全构造协议
我的世界服务器日志怎么找密码
软件开发师和机械工程师
对话网络安全系统
福田区无源网络技术开发经验丰富
互联网科技最新资讯
万方数据库下载英文文献
果考网服务器地址哪里查
个人网络安全讲稿
阿里的服务器自带cdn
加大网络安全意识
徐州服务器托管收费标准
我的世界服务器在哪招人
辽宁子墨网络技术有限公司招聘
万方数据库和中国知网异同