网站开发 创造收益,百度模拟点击,手机建网站软件,西湖app开发公司MySQL数据库主从复制和读写分离
。## MySQL主从复制
MySQL主从复制的概念
MySQL主从复制是一个异步的数据复制过程#xff0c;允许将一个MySQL服务器#xff08;主服务器#xff09;上的数据复制到一个或多个MySQL服务器#xff08;从服务器#xff09;。主从复制提供了…MySQL数据库主从复制和读写分离
。## MySQL主从复制
MySQL主从复制的概念
MySQL主从复制是一个异步的数据复制过程允许将一个MySQL服务器主服务器上的数据复制到一个或多个MySQL服务器从服务器。主从复制提供了数据冗余和高可用性常用于读写分离、负载均衡和备份等场景。
**1主从复制的过程 MySQL主服务器开启二进制日志MySQL主服务器的dump线程响应从服务器IO线程从服务器的IO线程会定期检查主服务器的二进制日志是否有新的更新如果有它会主动发起请求。从服务器的IO线程请求到了更新的二进制日志后会将二进制日志更新写入中继日志此时从服务器的SQL线程会读取中继日志并将中继日志中事务执行并存入硬盘
2支持复制的类型 1STATEMENT基于语句的复制。在服务器上执行sql语句在从服务器上执行同样的语句mysql默认采用基于语句的复制执行效率高。 2ROW基于行的复制。把改变的内容复制过去而不是把命令在从服务器上执行一遍。 3MIXED混合类型的复制。默认采用基于语句的复制一旦发现基于语句无法精确复制时就会采用基于行的复制。
主从复制的部署
部署环境 Master服务器 192.168.20.10 Slave1服务器192.168.20.20 Slave2服务器192.168.20.30 关闭防护墙
systemctl stop firewalld关闭selinux
setenforce 01时间同步 主服务器与从服务器要进行时间同步
主服务器配置 安装时间同步服务
yum install ntp -y
vim /etc/ntp.conf添加
server 127.127.20.0
fudge 127.127.20.0 stratum 8service ntpd start启动ntpd 服务 从服务器配置
定时进行时间同步
yum install ntp ntpdate -y
service ntpd start
/usr/sbin/ntpdate 192.168.20.10
crontab -e
*/30 * * * * /usr/sbin/ntpdate 192.168.20.102配置Mysql服务 主服务器
vim /etc/my.cnfserver-id 1 服务器id号
log-binmaster-bin 开启主服务器二进制文件
binlog_format MIXED 使用MIXED模式
log-slave-updatestrue 允许slave从master复制数据时可以写入到自己的二进制日志systemctl restart mysqld
mysql -uroot -p123123给从服务器赋权
GRANT REPLICATION SLAVE ON *.* TO myslave192.168.20.% IDENTIFIED BY 123123;
FLUSH PRIVILEGES; 查看主服务器偏移量
show master status;偏移量为1036
从服务器的mysql配置
vim /etc/my.cnfserver-id 2
relay-logrelay-log-bin
relay-log-indexslave-relay-bin.index
relay_log_recovery 1 systemctl restart mysqld.serviceCHANGE master to master_host192.168.20.10,master_usermyslave,master_password123123,master_log_filemaster-bin.000001,master_log_pos1036;master_log_file 和 master_log_pos要和查询出来的一样 启动同步
start slave;查看同步状态
show slave status\G测试 在主MySQL是创建一个新库glcs
create database glcs;读写分离的的搭建
新开一台虚拟主机 192.168.20.40 新机器上安装Amoeba服务 安装Amoeba服务
下载我上传的Amoeba压缩包 解压包
cd /opt/amoeba
tar xfv amoeba-mysql-binary-2.2.0.tar.gz
chmod -R 777 /opt/amoeba
/opt/amoeba/bin/amoeba输入/opt/amoeba/bin/amoeba以后显示amoeba start|stop则表示安装成功 先在Master、Slave1、Slave2 的mysql上开放权限给 Amoeba 访问
grant all on *.* to test192.168.20.% identified by 123123;再回到amoeba服务器配置amoeba服务
cd /opt/amoeba/conf/
cp amoeba.xml amoeba.xml.bak
vim amoeba.xml--30行--
property nameuseramoeba/property
--32行--
property namepassword123456/property
--115行--
property namedefaultPoolmaster/property
--117-去掉注释-
property namewritePoolmaster/property
property namereadPoolslaves/propertycp dbServers.xml dbServers.xml.bak
vim dbServers.xml #修改数据库配置文件--23行--注释掉 作用默认进入test库 以防mysql中没有test库时会报错
!-- property nameschematest/property --
--26--修改
property nameusertest/property
--28-30--去掉注释
property namepassword123456/property
--45--修改设置主服务器的名Master
dbServer namemaster parentabstractServer
--48--修改设置主服务器的地址
property nameipAddress192.168.10.15/property
--52--修改设置从服务器的名slave1
dbServer nameslave1 parentabstractServer
--55--修改设置从服务器1的地址
property nameipAddress192.168.10.14/property
--58--复制上面6行粘贴设置从服务器2的名slave2和地址
dbServer nameslave2 parentabstractServer
property nameipAddress192.168.10.16/property
--65行--修改
dbServer nameslaves virtualtrue
--71行--修改
property namepoolNamesslave1,slave2/property启动amoeba
/usr/local/amoeba/bin/amoeba start测试 客户端
yum install -y mariadb-server mariadb
systemctl start mariadb.service在客户端服务器上测试
mysql -u amoeba -p123456 -h 192.168.20.40 -P8066查询时出现报错则在主服务器上添加
CREATE USER amoeba192.168.20.40 IDENTIFIED BY 123123;
Query OK, 0 rows affected (0.01 sec)
mysql GRANT ALL PRIVILEGES ON *.* TO amoeba192.168.20.40;
Query OK, 0 rows affected (0.00 sec)
mysql FLUSH PRIVILEGES;测试
#在主服务器上
use glcs;
create table test4 (id int(10),name varchar(10),address varchar(20));#在两台从服务器上
stop slave; #关闭同步
use glcs;
#在slave1上
insert into test4 values(1,gh,this_is_slave1);
#在slave2上
insert into test4 values(2,lo,this_is_slave2);#在主服务器上
insert into test4 values(3,lx,this_is_master);读写分离成功