原作者:Etel Sverdlov 转载&翻译:https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-in-mysql

如何在MySQL中设置主从复制

关于MySQL复制

MySQL复制是一个允许您通过将MySQL数据从主数据库自动复制到从数据库来轻松维护MySQL数据的多个副本的过程。这可能有很多原因,包括为数据设置备份,在不使用主数据库的情况下对其进行分析,或仅仅作为向外扩展的方法。

本教程将介绍一个非常简单的mysql复制示例 - 一个master将向单个slave发送信息。要使进程正常工作,您需要两个IP地址:一个主服务器和一个从服务器。

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

12.34.56.78-主数据库

12.23.34.45-从属数据库

PS:请自行更改IP地址 , 并事先配置好主从服务器的网段Subnet、网关GateWay、地址IPAdress、DNS。

建立

本文假设您拥有具有sudo权限的用户并安装了MySQL。如果您没有mysql,可以使用以下命令安装它:

sudo apt-get install mysql-server mysql-client

RHEL/Fedora/CentOS/Oracle系统的使用下面命令:

# 默认包管理命令,这里没有写版本号,目前来看默认是mysql8.0,如果需要安装特定版本,请 yum search mysql-server 查找
sudo yum install mysql-server mysql-client# 如果您已经安装了dnf包管理器,也可以使用下面命令:
sudo dnf 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.78

下一个配置更改是指位于[mysqld]部分中的server-id。您可以为此位置选择任意数字(从1开始可能更容易),但该数字必须是唯一的,并且不能与复制组中的任何其他服务器ID匹配。我要继续设置为 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;

下一部分有点挑剔。要完成此任务,您需要打开一个新窗口或选项卡,以及您已经使用了几步的新窗口或选项卡

当前选项卡中 切换到“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行(0.00秒)

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

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

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

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

现在,返回到原始窗口,解锁数据库(使其再次可写)。完成退出shell。

  UNLOCK TABLES;
  QUIT;

现在,您已完成master数据库的配置。

第二步 - 配置从属数据库

配置master数据库后。您可以搁置一段时间,我们现在将开始配置从属数据库。

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

CREATE DATABASE newdatabase;
  EXIT;

导入先前从master数据库导出的数据库。

mysql -u root -p newdatabase </path/to/newdatabase.sql

现在我们需要以与主服务器相同的方式配置从服务器配置:

sudo nano /etc/mysql/my.cnf

我们必须确保在此配置中设置了一些内容。第一个是server-id。如前所述,这个数字必须是唯一的。由于它是默认设置(仍为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

您将需要添加relay-log行:默认情况下不存在。完成所有必要的更改后,保存并退出从属配置文件。

再次重启MySQL:

sudo service mysql restart 

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

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

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

该命令同时完成了几件事:

  1. 它将当前服务器指定为主服务器的从属服务器。
  2. 它为服务器提供正确的登录凭据
  3. 最后,它让从服务器知道从哪里开始复制; 主日志文件和日志位置来自我们之前写下的数字。

有了这个 ,您已经配置了主服务器和从服务器,激活从服务器:

  START SLAVE;

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

  SHOW SLAVE STATUS\G

如果在连接时出现问题,您可以尝试使用命令启动slave以跳过它:

  SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; SLAVE START; 

全部完成。

看更多

MySQL复制有很多不同的选择,这只是一个简短的概述。

英文原作者:Etel Sverdlov  翻译作者:Miazzy Chaos 英文原文:https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-in-mysql

如何在MySQL中设置主从复制相关推荐

  1. mysql外键约束脚本_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  2. mysql不同字符集_如何在mysql中设置不同的字符集

    需要设置server character set , database character set, client character set,如果有一个不大一样,就有可能导致乱码 . server ...

  3. 如何在MySQL中设置外键约束

    MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个:     一个是让数据库自己通过外键来保证数据的完整性和一致性     一个就是能够增加ER图的可读性     有些人认为外键的建 ...

  4. 在mysql中如何添加外键约束_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  5. 如何在MySQL中设置外键约束以及外键的作用

    1.外键的作用,主要有两个:     一个是让数据库自己通过外键来保证数据的完整性和一致性     一个就是能够增加ER图的可读性 2.外键的配置 1)先创建一个主表,代码如下: #创建表studen ...

  6. mysql外键约束的作用_如何在MySQL中设置外键约束以及外键的作用

    1.外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 2.外键的配置 1)先创建一个主表,代码如下: #创建表student,并添加各种约 ...

  7. 如何在MySQL中创建新用户并授予权限

    原作者:Etel Sverdlov  转载&翻译来源:https://www.digitalocean.com/community/tutorials/how-to-create-a-new- ...

  8. mysql data ibdata1_database - 如何在MySQL中收缩/清除ibdata1文件

    database - 如何在MySQL中收缩/清除ibdata1文件 我在localhost中使用MySQL作为在R中执行统计的"查询工具",也就是说,每次运行R脚本时,我创建一个 ...

  9. 如何在MySQL中声明变量?

    本文翻译自:How to declare a variable in MySQL? How to declare a variable in mysql, so that my second quer ...

最新文章

  1. hdu3986 spfa + 枚举最短路上的边
  2. Servlet RequestDispatcher需要注意的情况
  3. 【译】在Android中保护数据-加密大数据
  4. 领域驱动设计之PHP实现
  5. python正则表达式知识点
  6. root 进入ssh 出现问题
  7. [文章存档]Azure上部署的java app在向第三方服务传送中文时出现乱码
  8. ibm的服务器怎么重装系统,ibm服务器系统安装的具体教程
  9. 兄弟连关于PHP培训的声明
  10. 暴风php视频怎么打开,暴风下载的视频怎样转换视频格式
  11. 金蝶K3销售退货案例教程
  12. 新手如何使用JavaScript读取json文件
  13. 新手成为黑客,需要掌握电脑网络命令汇总
  14. “每个人的商学院”系列丛书
  15. 兄弟连php课程大纲,LAMP兄弟连PHP课程学习笔记 第四天 流程控制分支语句
  16. IDEA和Eclipse的debug怎么实现?出于好奇心,我越挖越深!
  17. SpringMVC框架中@ControllerAdvice和对应Advice切面使用原理
  18. 2019牛客多校 第七场 B Irreducible Polynomial 多项式因式分解判断
  19. 利用ICMP协议,使用python原始套接字实现主机存活探测工具
  20. 杭州电子商务研究院发布“独立站”新概念

热门文章

  1. 微信公众平台PHP开发
  2. SLAM数据集(1)
  3. mac下常用数据库及nginx笔记
  4. Linux Ubuntu 查看cpu信息
  5. 【今日CV 视觉论文速览】 04 Dec 2018
  6. 1218 标签的显示与隐藏
  7. 需求 新建数据表用于演练查询 2128
  8. 安装fastdfs-master
  9. 编辑工具-sublime使用介绍
  10. 2.7.3-YARN-获取debug命令:resourceManager+nodeManager