mysql主从复制

news/2024/11/24 13:41:35/

1.服务器环境准备

我这里是在两台centos系统的虚拟机中进行的ip地址分别是192.168.168.100(主)和192.168.168.101(从)

系统为:CentOS Linux release 7.5.1804 (Core)

在两台服务器上都安装mysql,可以按照这个来安装:Linux安装MySQL_生骨大头菜的博客-CSDN博客

需要关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

因为是测试环境,所以直接关闭了防火墙,如果是正式环境的话开放3306端口就好了

firewall-cmd --zone=public --add-port=3306/tcp -permanent
firewall-cmd -reload

2.环境配置

2.1.主库配置

2.1.1.修改配置文件

vim /etc/my.cnf

在[mysqld]下添加 

# mysql服务ID,保证整个集群环境中唯一,取值范围: 1 - 2^{32}-1,默认为1 
server-id=1
# 是否只读,1代表只读, 0代表读写
read-only=0
# 忽略的数据,指不需要同步的数据库
# binlog-ignore-db=mysql
# 指定同步的数据库
# binlog-do-db=db01

2.1.2.重启mysql服务

systemctl restart mysql

2.1.3.登录mysql,创建远程连接账号,并授予主从复制权限

# 登录mysql
mysql -u root -p
# 创建slave用户,并设置密码,该用户可在任意主机连接该MySQL服务
CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#为'itcast'@'%'用户分配主从复制权限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';

2.1.4.通过指令,查看二进制日志坐标 

show master status;

 这里可以看到是为空的,原因是没有开启日志

编辑/etc/my.cnf

vim /etc/my.cnf

在[mysqld]下添加:

log-bin=mysql-bin

重启服务:

systemctl restart mysql

再进入mysql服务执行:

show master status;

可以看到

2.2从库配置

vim /etc/my.cnf

2.2.1.添加配置

# mysql服务ID,保证整个集群环境中唯一,取值范围: 1 - 2^{32}-1,默认为1 
server-id=2
# 是否只读,1代表只读, 0代表读写
read-only=1 

# 日志

log-bin=mysql-bin

2.2.2.重启服务

systemctl restart mysql

2.2.3.登录mysql,设置主库配置

CHANGE REPLICATION SOURCE TO SOURCE_HOST='xxx.xxx',SOURCE_USER='xxx',SOURCE_PASSWORD='xxx',SOURCE_LOG_FILE='xxx',SOURCE_LOG_POS=xxx;
# 上述是8.0.23中的语法。如果mysql是8.0.23之前的版本,执行如下SQL: .
CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx',MASTER_USER='xxx',MASTER_PASSWORD='xxx',MASTER_LOG_FILE='xxx',MASTER_LOG_POS=xxx;

 因为mysql版本是5.7,所以选择第二种

CHANGE MASTER TO MASTER_HOST='192.168.168.100', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;

 2.2.4.开启同步操作

# 8.0.22之后
start replica;
# 8.0.22之前
start slave;

 2.2.5.查看主从同步状态

# 8.0.22之后
show replica status;
# 8.0.22之.前
show slave status;

 为了更加清晰,加上\G查看

show slave status\G;

 3.测试

在主库上创建数据库、表并插入数据

登录主库mysql

mysql -uroot -p
create database db01;use db01;create table tb_user(id int(11) primary key not null auto_increment,name varchar(50) not null,sex varchar(1)
)engine=innodb default charset=utf8mb4;insert into tb_user(id,name,sex) values(null, 'Tom', '1'),(null, 'Triggr', '0'),(null, 'Dawn', '1');

查看插入数据

select * from tb_user;

执行更新语句

update tb_user set sex=0;select * from tb_user;

 

 查看从库信息

登录从库mysql

mysql -uroot -p
show databases;

use db01;select * from tb_user;

 可以看到数据同步了

至此完成


http://www.ppmy.cn/news/5023.html

相关文章

使用HTML制作静态宠物网站——蓝色版爱宠之家(HTML+CSS)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

PB数据库开发技术(五)-PowerBuilder菜单设计

PowerBuilder菜单设计 一.实验目的 掌握PowerBuilder的菜单设计画板的使用熟悉应用系统的模块划分与系统集成二.实验内容 自行设计一窗口菜单使之能关闭退出 三.实验步骤 1.在工作区中新建主窗口w_window_main和主窗口菜单m_window_main

Windows10下用Vscode配置OpenCV (解包即用版)

Windows10下用Vscode配置OpenCV (解包即用版) 维基百科: OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费…

router

前言 router 路由 应为vue是单页应用不会有那么多html 让我们跳转 所有要使用路由做页面的跳转 Vue 路由允许我们通过不同的 URL 访问不同的内容。通过 Vue 可以实现多视图的单页Web应用 安装 构建前端项目 npm init vuelatest //或者 npm init vitelatest使用Vue3 安装对…

【High 翻天】Higer-order Networks with Battiston Federico (3)

目录模型(1)Equilibrium modelsBipartite modelsMotifs modelsStochastic set modelsHypergraphs modelsSimplicial complexes models模型的目的是再现、解释和预测系统的结构,最好用涉及系统两个或多个元素的交互来描述。为了考虑其输出的可…

matlab学习笔记(九)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 matlab学习笔记(九)一、信号采样二、信号重建一、信号采样 信号的采样原理图如下图所示: 其数学模型表示为: 其中的f(t)为原…

分享一种通信协议的应用编程原理和思路

已剪辑自: https://mp.weixin.qq.com/s/wy-flva6pCNqHV3ObeLPCQ 嵌入式开发过程中,UART、 CAN、 USB等通信基本离不开通信协议。 下面给大家分享一种通信协议(MAVLink)在应用编程中的编程原理和思路。 本节提供“MAVLink发送接收例程”例程下…

基于SpringMVC+Hibernate+Layui城市智能消防决策平台设计

开发软件:Eclipse,可以用idea,mysql数据库 开发技术:SpringMVC,Spring,Hibernate,jquery,layui 本系统的功能主要分为两个角色,其中用户的功能有:登陆注册,查看火灾案例,火警报警,查看自己的报警…