IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> MySQL数据库主从双向同步 -> 正文阅读

[系统运维]MySQL数据库主从双向同步

一 环境

由于开发需要,需要两台服务器进行负载均衡,两台服务器配置完全相同,均为windows server 2012,且MySQL数据库版本为Mysql5.6,连接工具使用Navicat Premium 12,使用默认安装。
MySql数据库配置文件 My.ini 位于C:\ProgramData\MySQL\MySQL Server 5.6。
假设两台服务器IP分别为:192.168.1.101,192.168.1.102
注意,在以下操作中最好不要有数据的读写,且保证两台服务器上要同步的数据库完全一致

二 主从同步

1.主服务器配置

我们以192.168.1.101为主服务器,以192.168.1.102为从服务器,让102服务器主动来同步101上的内容。
一般情况下,我们使用数据库的二进制日志文件来同步数据。
1.打开主服务器的mysql数据库配置文件my.ini,找到server-id=1这部分内容,在后面添加对应的内容。

# 数据库服务ID,同步时保证不重复即可
server-id=1
# 需要记录日志的数据库,这里记录test数据库的日志,有多个数据库时再来一条即可
binlog-do-db=test1
# 需要同步数据的数据库
replicate-do-db=test1

# 不需要同步数据的数据库,有多个数据库时再来一条即可,如果没有则可以不用
replicate-ignore-db=mysql1
# replicate-ignore-db=mysql2

# 日志文件的名称
log-bin=mysql_log_bin

修改完成之后保存,然后重启MySQL服务,使用命令或者在服务中重启都可以

net stop MySQL56
net start MySQL56

重启完成之后在MySql终端使用 show master status 查看状态
在这里插入图片描述
此处记录下 FilePosition 的值,分别为 mysql_log_bin.000001157,这两个值是同步成功的关键。
一切就绪好之后,需要添加一个允许进行数据库同步的用户,当然也可以使用其他拥有同步权限的账号,但是这里不推荐,建议创建一个只有同步权限且仅允许要同步的服务器访问。这里添加一个仅允许 192.168.1.102 访问且只有同步权限的用户。

--  添加用户 backuser,密码为 123456
grant replication slave on *.* to 'backuser'@'192.168.1.102' identified by '123456';
-- 刷新权限让其立即生效
flush privileges;

在mysql8.0版本中,下列的SQL语句无法执行,需要拆分成两句

create user 'backuser'@'192.168.1.102' identified by '123456';
grant replication slave on *.* to 'backuser'@'192.168.1.102';
flush privileges;

也可以在数据库连接工具中直接添加,只要赋予对应的权限即可,我是用的是Navicat Premium 12
在这里插入图片描述
在这里插入图片描述
至此,主服务器配置完成

2.从服务器配置

1.打开192.168.1.102的数据库配置文件 my.ini,找到 Server Id 节点,修改为以下内容

# Server Id. 保证不和另一台服务器的Server Id重复即可
server-id=2
# 要同步的数据库
replicate-do-db=test1
# 中继日志,一般情况下它在MySQL主从同步读写分离集群的从节点才开启
relay-log=mysqld-relay-bin

修改完成之后保存,重启数据库服务,然后使用 sql 语句设置需要同步的数据库的信息

-- 
CHANGE MASTER TO 
MASTER_HOST='192.168.1.101', 
MASTER_USER='backuser', 
MASTER_PASSWORD='123456', 
MASTER_LOG_FILE='mysql_log_bin.000001', 
MASTER_LOG_POS= 157;

记录的 FILE 的值就是此处 MASTER_LOG_FILE 的值,Position 的值就是此处 MASTER_LOG_POS 的值。
注意,运行前最好再去主服务器上运行 show master status 查一下 Position 的值,如果设置期间数据库发生过变化,这个值也会变化。
如果已经存在进行中的同步,则先运行 stop slave 停止,再运行以上内容。
最后使用 start slave 开启同步即可。

-- 停止同步
STOP SLAVE;
-- 开启同步
START SLAVE;
-- 查看同步状态
show slave status

以上步骤全部完成时,使用 show slave status 查看同步的状态。
在这里插入图片描述
注意这里File的名称已经发生变化

如果在cmd窗口中时,则可以使用 show slave status\G; 来查看同步的状态
在这里插入图片描述

如果 Slave_IO_RunningSlave_SQL_Running 的值均为 Yes,则说明数据库主从同步的设置已经完成。
如果不是的话,无非就是密码不对或者Pos值不对,再或者防火墙拦截等原因,仔细检查一下即可解决。
以上内容可用于数据库读写分离时,主数据库负责写入数据,从数据库负责读数据

二 双向同步

双向同步即在主从同步的基础上调换角色再设置一遍即可,两台服务器互为主从。

三 后记

部分细节描述的不够详细,后边有机会再补充。
过程中踩到很多坑,各种搜搜搜,最终以自己的理解编辑一篇,方便查阅。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:46:32  更:2022-04-15 00:47:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:29:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码