Mysql 读写分离、主从复制

本文详细介绍了MySQL主从复制的工作原理,包括基于语句和行的复制,以及混合类型,并深入讲解了读写分离的实现策略。此外,还提供了如何配置主从服务器时间同步,安装MySQL并配置主从复制的步骤,以及部署读写分离的实战指南,包括Amoeba工具的使用和数据库规则调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、mysql主从复制原理
①、mysql的复制类型
基于语句的复制
基于行的复制
混合类型的复制
②、mysql主从复制的工作原理
主服务器 master 记录数据库通过 dump 线程将操作记录到 Binary log
从服务器开启 I/O 线程向主服务器发送同步日志请求
主服务器把二进制日志内容发送给从服务器
从服务器将二进制日志记录的操作同步到relay log (中继日志) (存在从服务器的缓存中)
从服务器中的sql线程将relay log日志记录的操作在从服务器执行后写入从服务器数据库。
2、mysql读写分离原理
读写分离就是只在主服务器上写,只在从服务上读;
主数据库处理事务性查询,从数据库处理 select 查询;
数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库
3、部署主从同步
①、主从服务器设置时间同步

1、主服务器(192.168.20.10)

yum -y install ntp

vim /etc/ntp.conf
末行添加
server 127.127.20.0 #设置本地是时钟源,注意修改网段
fudge 127.127.20.0 stratum 8 #设置时间层级为8(限制在15内)

systemctl start ntpd

2、从服务器(192.168.20.20 ,192.168.20.40)
yum -y install ntp ntpdate

systemctl start ntpd
/usr/sbin/ntpdate 192.168.20.10
#进行时间同步,指向Master服务器IP

crontab -e
*/30 * * * * /usr/sbin/ntpdate 192.168.20.10
②、服务器安装mysql
创建 mysql 用户
useradd -s /sbin/nologin mysql

##安装依赖包
yum -y install
gcc
gcc-c++
make
pcre-devel
expat-devel
perl
ncurses-devel
autoconf
cmake

##编译
cd /opt/mysql-5.6.26
cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DEXTRA_CHARSETS=all
-DSYSCONFIDIR=/etc
-DMYSQL_DATADIR=/home/mysql/
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock

make && make install

##支持环境变量(mysql命令)
echo export PATH= P A T H : / u s r / l o c a l / m y s q l / b i n / > > / e t c / p r o f i l e e x p o r t P A T H = PATH:/usr/local/mysql/bin/ >>/etc/profile export PATH= PATH:/usr/local/mysql/bin/>>/etc/profileexportPATH=PATH:/usr/local/mysql/bin/
source /etc/profile

cd /opt/mysql-5.6.26
cp support-files/my-default.cnf /etc/my.cnf

##为保证安全,根据最小权限原则,给予myql目录权限
chown -R mysql.mysql /usr/local/mysql/

cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
chkconfig mysqld --level 35 on

vi /etc/init.d/mysqld
##修改数据文件目录和工作目录
basedir=/usr/local/mysql
datadir=/home/mysql

/usr/local/mysql/scripts/mysql_install_db
–user=mysql
–ldata=/var/lib/mysql
–basedir=/usr/local/mysql
–datadir=/home/mysql

service mysqld start
③、配置数据库规则
1、主服务器
vim /etc/my.cnf
server_id = 1
log_bin=master-bin #添加,主服务器开启二进制日志
log_slave=updates=true #添加,允许从服务器更新二进制日志

systemctl restart mysqld

mysql -u root -p
#给从服务器授权,允许其复制所有数据库的所有表(第一个账户)
grant replication slave on . to ‘myslave’@‘192.168.20.%’ identified by ‘12345’;

flush privileges;

查看master数据库状态
show master status\G

#java项目www.fhadmin.org
2、从服务器
vim /etc/my.cnf
server-id = 2 #修改,注意id与Master的不同,两个Slave的id也要不同
relay-log=relay-log-bin #添加,开启中继日志,从主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index #添加,定义中继日志文件的位置和名称

systemctl restart mysqld

mysql -u root -p
change master to master_host=‘192.168.20.10’ , master_user=‘myslave’,master_password=‘12345’,master_log_file=‘master-bin.000001’,master_log_pos=412;
##配置同步,注意 master_log_file 和 master_log_pos 的值要与Master查询的一致,这里的是例子,每个人的都不一样

start slave; #启动同步,如有报错执行 reset slave;
show slave status\G #查看 Slave 状态

##确保 IO 和 SQL 线程都是 Yes,代表同步正常
Slave_IO_Running: Yes #负责与主机的io通信
Slave_SQL_Running: Yes #负责自己的slave mysql进程
4、部署读写分离
①、安装amoeba
将jdk-6u14-linux-x64.bin 和 amoeba-mysql-binary-2.2.0.tar.gz.0 上传到/opt目录下

cd /opt/
cp jdk-6u14-linux-x64.bin /usr/local/

cd /usr/local/
chmod +x jdk-6u14-linux-x64.bin
./jdk-6u14-linux-x64.bin
##按空格到最后一行
美女图片www.meimeitu8.com

按yes,按回车

mv jdk1.6.0_14/ /usr/local/jdk1.6

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH= C L A S S P A T H : CLASSPATH: CLASSPATH:JAVA_HOME/lib: J A V A H O M E / j r e / l i b e x p o r t P A T H = JAVA_HOME/jre/lib export PATH= JAVAHOME/jre/libexportPATH=JAVA_HOME/lib: J A V A H O M E / j r e / b i n / : JAVA_HOME/jre/bin/: JAVAHOME/jre/bin/:PATH: H O M E / b i n e x p o r t A M O E B A H O M E = / u s r / l o c a l / a m o e b a e x p o r t P A T H = HOME/bin export AMOEBA_HOME=/usr/local/amoeba export PATH= HOME/binexportAMOEBAHOME=/usr/local/amoebaexportPATH=PATH:$AMOEBA_HOME/bin

source /etc/profile
java -version

#java项目www.fhadmin.org
##安装 Amoeba软件##
mkdir /usr/local/amoeba
tar zxvf /opt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
chmod -R 755 /usr/local/amoeba/
/usr/local/amoeba/bin/amoeba

##如显示amoeba start|stop 说明安装成功
②、配置读写分离
1、服务器上配置amoeba对接
grant all on . to test@‘192.168.20.%’ identified by ‘12345’;

#java项目www.fhadmin.org
2、amoeba服务器上配置服务器对接
cd /usr/local/amoeba/conf/

cp amoeba.xml{,.bak}
vim amoeba.xml
##修改amoeba配置文件

30修改
amoeba

32修改
12345

115修改
master

117去掉注释–
master
slaves

cp dbServers.xml{,.bak}
vim dbServers.xml ##修改数据库配置文件

##23修改
mysql

##26修改

test

##28-30去掉注释
12345

##45修改,设置主服务器的名Master

##48修改,设置主服务器的地址
192.168.20.10

##52修改,设置从服务器的名slave1

##55修改,设置从服务器1的地址
192.168.20.20

##58复制上面6行粘贴,设置从服务器2的名slave2和地址

192.168.20.40

##65修改

##71修改
slave1,slave2

/usr/local/amoeba/bin/amoeba start & ##启动Amoeba软件,按ctrl+c 返回
netstat -anpt | grep java ##查看8066端口是否开启,默认端口为TCP 8066

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值