当前位置:首页 > 文章列表 > 文章 > linux > 在MySQL中设置主从复制入门实例

在MySQL中设置主从复制入门实例

来源:Linux就该这么学 2024-12-21 09:13:02 0浏览 收藏

文章小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《在MySQL中设置主从复制入门实例》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


在MySQL中设置主从复制入门实例

mysql复制示例:一个master将向单个slave发送信息。为了使进程工作,您将需要两个IP地址:主服务器之一和从属设备之一。

本教程将使用以下IP地址:

12.34.56.789-主数据库

12.23.34.456-从数据库

本文假设您具有sudo权限的用户并且已安装MySQL。 如果你没有mysql,你可以用这个命令安装:

sudo apt-get install mysql-server mysql-client
第一步 - 配置主数据库

打开主服务器上的mysql配置文件。

sudo nano /etc/mysql/my.cnf

一旦进入该文件,我们需要进行一些更改。

第一步是找到如下所示的部分,将服务器绑定到本地主机:

bind-address            = 127.0.0.1
将标准IP地址替换为服务器的IP地址。

bind-address            = 12.34.56.789 
下一个配置更改是指位于[mysqld]部分中的server-id。 您可以为此点选择任何数字(可能更容易从1开始),但该数字必须是唯一的,并且不能与复制组中的任何其他服务器标识匹配。 我要去打电话这个1。

确保此行已取消注释。

server-id               = 1
移动到log_bin行。 这是保存复制的真实细节的地方。 从属程序将复制在日志中注册的所有更改。 对于这一步,我们只需要取消注释引用log_bin的行:

log_bin                 = /var/log/mysql/mysql-bin.log
最后,我们需要指定将在从服务器上复制的数据库。 您可以通过为所有您需要的数据库重复此行,包括多个数据库。

binlog_do_db            = newdatabase
完成所有更改后,继续保存并退出配置文件。

刷新MySQL。
sudo service mysql restart

接下来的步骤将在MySQL shell中进行,本身。

打开MySQL shell。

mysql -u root -p

我们需要给从属权限。 您可以使用此行命名您的从属并设置其密码。 命令应采用以下格式:

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

下一部分是有点bit。。 为了完成任务,你需要在除了你已经使用了几步倒行一打开一个新窗口或标签 。

在当前标签页切换到“newdatabase”。

USE newdatabase;

接下来,锁定数据库以防止任何新的更改:

FLUSH TABLES WITH READ LOCK;

然后输入:

SHOW MASTER STATUS;

你会看到一个表应该看起来像这样:

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 | newdatabase  |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

这是从数据库将开始复制的位置。 记录这些数字,他们将在以后有用。

如果在同一个窗口中进行任何新的更改,数据库将自动解锁。 因此,您应该打开新的选项卡或窗口,然后继续下一步。

继续数据库仍然锁定,在新窗口中使用mysqldump导出数据库(确保您在bash shell中而不是在MySQL中键入此命令)。

mysqldump -u root -p --opt newdatabase > newdatabase.sql

现在,返回到您的原始窗口,解锁数据库(使它们可写入)。 通过退出shell完成。

UNLOCK TABLES;
QUIT;

现在你已经完成了master数据库的配置。

第二步 - 配置从数据库

配置主数据库之后。 你可以把它放在一边,我们现在将开始配置从数据库。

登录到从服务器,打开MySQL shell并创建要从主服务器复制的新数据库(然后退出):

CREATE DATABASE newdatabase;
EXIT;
导入先前从主数据库导出的数据库。

mysql -u root -p newdatabase 

Now we need to configure the slave configuration in the same way as we did the master:

sudo nano /etc/mysql/my.cnf

We have to make sure that we have a few things set up in this configuration. The first is the server-id. This number, as mentioned before needs to be unique. Since it is set on the default (still 1), be sure to change it’s something different.

server-id               = 2

Following that, make sure that your have the following three criteria appropriately filled out:

relay-log               = /var/log/mysql/mysql-relay-bin.log
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = newdatabase

You will need to add in the relay-log line: it is not there by default.
Once you have made all of the necessary changes, save and exit out of the slave configuration file.

Restart MySQL once again:

sudo service mysql restart

The next step is to enable the replication from within the MySQL shell.

Open up the the MySQL shell once again and type in the following details, replacing the values to match your information:

CHANGE MASTER TO MASTER_HOST='12.34.56.789',MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=  107;

This command accomplishes several things at the same time:

It designates the current server as the slave of our master server. 
It provides the server the correct login credentials
Last of all, it lets the slave server know where to start replicating from; the master log file and log position come from the numbers we wrote down previously.


With that—you have configured a master and slave server. 

Activate the slave server:

START SLAVE;

You be able to see the details of the slave replication by typing in this command. The \G rearranges the text to make it more readable.

SHOW SLAVE STATUS\G 

If there is an issue in connecting, you can try starting slave with a command to skip over it:

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; SLAVE START; 

All done. 

See More

MySQL replication has a lot different options, and this was just a brief overview.

If you have any further questions about the specific capabilities of MySQL, feel free to post your questions in our Q&A Forum and we’ll be happy to answer them. 

By Etel Sverdlov

现在我们需要以与我们做主机相同的方式配置从机配置:

sudo nano /etc/mysql/my.cnf

我们必须确保我们在这个配置中设置了一些东西。 第一个是服务器标识。 这个数字,如前所述需要是唯一的。 因为它被设置为默认(仍然是1),一定要改变它的东西不同。

server-id               = 2
之后,请确保您已正确填写以下三个条件:

relay-log               = /var/log/mysql/mysql-relay-bin.log
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = newdatabase

您将需要在中继日志行中添加:默认情况下不存在。 一旦完成所有必要的更改,保存并退出从配置文件。

再次重新启动MySQL:

sudo service mysql restart

下一步是在MySQL shell中启用复制。

再次打开MySQL shell,输入以下详细信息,替换值以匹配您的信息:

CHANGE MASTER TO MASTER_HOST='12.34.56.789',MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=  107;

此命令同时完成几个事情:

它将当前服务器指定为我们的主服务器的从属。

它为服务器提供正确的登录凭据

最后,它让从服务器知道从哪里开始复制; 主日志文件和日志位置来自我们之前写下的数字。

这样,您已经配置了主服务器和从服务器。

激活从服务器:

START SLAVE;

通过键入此命令,您可以看到从复制的详细信息。 \ G重新排列文本,使其更易读。

SHOW SLAVE STATUS\G

如果在连接中存在问题,可以尝试使用命令启动从器件以跳过它:

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; SLAVE START; 

全做完了。

到这里,我们也就讲完了《在MySQL中设置主从复制入门实例》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于Linux,Linux系统,红帽,Linux命令,linux认证,红帽linux,linux教程,linux视频的知识点!

版本声明
本文转载于:Linux就该这么学 如有侵犯,请联系study_golang@163.com删除
寻求 Java 大学管理系统应用程序的指导寻求 Java 大学管理系统应用程序的指导
上一篇
寻求 Java 大学管理系统应用程序的指导
可以实现零代码开发的OPPO智能体平台,到底强在哪?
下一篇
可以实现零代码开发的OPPO智能体平台,到底强在哪?
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    511次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    498次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 千音漫语:智能声音创作助手,AI配音、音视频翻译一站搞定!
    千音漫语
    千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
    191次使用
  • MiniWork:智能高效AI工具平台,一站式工作学习效率解决方案
    MiniWork
    MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
    191次使用
  • NoCode (nocode.cn):零代码构建应用、网站、管理系统,降低开发门槛
    NoCode
    NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
    190次使用
  • 达医智影:阿里巴巴达摩院医疗AI影像早筛平台,CT一扫多筛癌症急慢病
    达医智影
    达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
    195次使用
  • 智慧芽Eureka:更懂技术创新的AI Agent平台,助力研发效率飞跃
    智慧芽Eureka
    智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
    212次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码