专栏首页ITCoder如何在 CentOS 7 上配置 MySQL 主从复制

如何在 CentOS 7 上配置 MySQL 主从复制

MySQL replication 是一个进程,它允许你自动从一个数据库服务器拷贝数据到另外一个或者更多的服务器。

MySQL 支持许多复制拓扑结构,其中,主从拓扑结构是最著名的。在主从拓扑结构中,一个数据库服务器扮演 master(主要服务器),其他一个或者多个数据库服务器扮演 slaves(从服务器)。默认情况下,主要数据库将数据库修改封装成二进制的形式作为事件发送出去,而从服务器在准备好的情况下,请求这些事件。

在本篇指南中,我们将会讲解在 CentOS 7 上如何建立 MySQL 主从复制,其中一个作为主服务器,一个作为从服务器。对于 MariaDB 来说,步骤是一样的。

这种类型的复制拓扑最适合部署读复制。对于线上数据库进行读复制,以便灾备和分析任务。

一、前提条件

在这个例子中,我们假设你有两台运行 CentOS 7 的服务器。它们在同一个局域网中,可以相互通信。如果你的服务器不能提供局域网 ip,你可以使用公网 IP,并且配置防火墙,允许来自可信源的流量通过 3306 端口。

这个例子中的服务器有下面的 IP:

Master IP: 192.168.121.59
Slave IP:  192.168.121.14

二、安装 MySQL

默认的 CentOS7 源没有包括 MySQL 软件包,因此我们需要从他们的官方 YUM 软件源安装 MySQL。为了避免出现问题,我们将在两台服务器上都安装 MySQL5.7。

在主从服务器上都安装 MySQL:

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo yum install mysql-community-server

一旦安装完成,启动 MySQL 服务并且启用开机启动:

sudo systemctl enable mysqld
sudo systemctl start mysqld

当 MySQL 服务器第一次启动时,会给 MySQL 的 root 用户一个临时密码。想要查找这个密码,使用 grep 命令:

sudo grep 'temporary password' /var/log/mysqld.log

运行mysql_secure_installation命令设置你的新 root 密码并且提高 MySQL 实例的安全性:

mysql_secure_installation

输入临时 root 密码并且对所有的问题都回答Y(yes)。

新密码需要至少 8 位,并且包含至少一个大写字母,一个小写字母,一个数字和一个特殊符号。

三、配置主服务器

首先,我们将配置主要的 MySQL 服务器,并且做下面的修改:

  • 设置 MySQL 服务器监听局域网 IP。
  • 设置一个唯一的服务器 ID。
  • 启用二进制日志。

想要这样做,打开 MySQL 配置文件,并且讲下面的行添加到[mysqld]段:

sudo nano /etc/my.cnf
bind-address           = 192.168.121.59
server-id              = 1
log_bin                = mysql-bin

一旦设置完成,重启 MySQL 服务,使修改生效。

sudo systemctl restart mysqld

下一步骤就是创建新的复制用户。以 root 用户登录 MySQL 服务器:

mysql -uroot -p

从 MySQL 提示内部,运行下面的 SQL 查询语句,将会创建replica用户,并且授予该用户REPLICATION SLAVE权限:

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';
确保你修改了这个IP为你的从服务器IP地址。你可以使用你想要的名字。

当你还在 MySQL 提示符下,运行下面的命令,将会打印出二进制文件和位置:

SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 1427
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

注意文件名mysql-bin.000001和位置1427。在配置从服务器的时候,你可能要用到它们。这些值在你的服务器上可能是不同的。

四、配置从服务器

像上面的主服务器一样,我们将会对从服务器做以下修改:

  • 设置 MySQL 服务器,监听局域网 IP
  • 设置一个唯一 的服务器 ID
  • 启用二进制日志

打开 MySQL 配置文件,编辑下面的行:

sudo nano /etc/my.cnf
bind-address           = 192.168.121.14
server-id              = 2
log_bin                = mysql-bin

重启 MySQL 服务:

sudo systemctl restart mysqld

下一个步骤,是配置将要连接主服务器的从服务器参数。登录 MySQL shell:

mysql -uroot -p

首先,停止从服务器线程:

STOP SLAVE;

运行下面的查询,这将会简历从服务器复制主服务器:

CHANGE MASTER TO
MASTER_HOST='192.168.121.59',
MASTER_USER='replica',
MASTER_PASSWORD='strong_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1427;

确保你使用了正确的 IP 地址,用户名和密码。日志文件名和位置必须和你从主服务器上获取的值一样。

一旦完成,开启从服务器线程:

START SLAVE;

五、测试配置文件

此时,你已经设置好了主从复制。

想要验证一切按期望进行,我们将在主服务器上创建一个新的数据库:

mysql -uroot -p
CREATE DATABASE replicatest;

登录从服务器 MySQL shell:

mysql -uroot -p

运行下面的命令,列出所有的数据库:

SHOW DATABASES;

你将会看到你创建在主服务器上的数据库也在从服务器上:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| replicatest        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

六、总结

在这篇指南中,我们向你展示在 CentOS 7 上创建一个 MySQL 主从复制。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在 CentOS 8 上安装 Memcached

    Memcached 是一个免费并且开源的高性能内存键值数据库。它主要用于系统缓存,通过缓存数据库中的结果来提高应用的响应速度。

    雪梦科技
  • 如何在 CentOS 7 上安装 Memcached

    Memcached 是一个免费并且开源的高性能内存键值数据库。它主要用于系统缓存,通过缓存数据库中的结果来提高应用的响应速度。

    雪梦科技
  • 如何在 CentOS 8 上安装 GCC

    GNU 编译器集合是一系列用于语言开发的编译器和库的集合,包括: C, C++, Objective-C, Fortran, Ada, Go, and D等编程...

    雪梦科技
  • Nginx负载均衡配置与使用

    现在Nginx到处都可以见到,经常会看到宕机后的网页会显示nginx的字样,这也说明Nginx由于高性能、使用配置简、开源单这些特点被越来越多的用户所接受,所使...

    Java帮帮
  • Nginx负载均衡配置实例详解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。

    流柯
  • 从零单排学Redis【铂金二】

    好的,今天我们要上【铂金二】了,如果还没有上铂金的,赶紧先去蹭蹭经验再回来(不然不带你上分了):

    Java3y
  • MySQL实现主从复制功能

    MySQL安装参考之前的文章https://www.jianshu.com/p/452aa99c7476有讲解。

    Happyjava
  • 在CVM上搭建网页服务器(LNMP)

    LNMP是一组可用于为动态网页和Web应用程序提供服务的软件。这是一个描述Linux操作系统的首字母缩略词,带有Nginx(发音为“ Engine-X”)Web...

    小皇帝James
  • 腾讯云无缝切换服务器

    近日更换了腾讯云服务器,顺便写一个换服务器的教程。众所周知,网站瘫痪会造成大量的流量损失,还会影响搜索引擎收录。而更换服务器,一个操作不当就可能造成网站长时间瘫...

    神无月
  • 腾讯云学生机——2M1H1G只需1.02元

    腾讯云成都机房上线,折扣价2M1G1H只需65.02元。之前站长朋友用的学生机,现在可以直接领新购券,新购一台成都的2M带宽的机器。

    人工智能谁与争锋

扫码关注云+社区

领取腾讯云代金券