前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在 CentOS 7 上配置 MySQL 主从复制

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

作者头像
雪梦科技
发布2020-05-11 16:15:31
5930
发布2020-05-11 16:15:31
举报
文章被收录于专栏:ITCoderITCoder

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

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

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

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

一、前提条件

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

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

代码语言:javascript
复制
Master IP: 192.168.121.59
Slave IP:  192.168.121.14

二、安装 MySQL

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

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

代码语言:javascript
复制
sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo yum install mysql-community-server

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

代码语言:javascript
复制
sudo systemctl enable mysqld
sudo systemctl start mysqld

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

代码语言:javascript
复制
sudo grep 'temporary password' /var/log/mysqld.log

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

代码语言:javascript
复制
mysql_secure_installation

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

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

三、配置主服务器

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

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

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

代码语言:javascript
复制
sudo nano /etc/my.cnf
代码语言:javascript
复制
bind-address           = 192.168.121.59
server-id              = 1
log_bin                = mysql-bin

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

代码语言:javascript
复制
sudo systemctl restart mysqld

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

代码语言:javascript
复制
mysql -uroot -p

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

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

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

代码语言:javascript
复制
SHOW MASTER STATUS\G
代码语言:javascript
复制
*************************** 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 配置文件,编辑下面的行:

代码语言:javascript
复制
sudo nano /etc/my.cnf
代码语言:javascript
复制
bind-address           = 192.168.121.14
server-id              = 2
log_bin                = mysql-bin

重启 MySQL 服务:

代码语言:javascript
复制
sudo systemctl restart mysqld

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

代码语言:javascript
复制
mysql -uroot -p

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

代码语言:javascript
复制
STOP SLAVE;

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

代码语言:javascript
复制
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 地址,用户名和密码。日志文件名和位置必须和你从主服务器上获取的值一样。

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

代码语言:javascript
复制
START SLAVE;

五、测试配置文件

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

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

代码语言:javascript
复制
mysql -uroot -p
代码语言:javascript
复制
CREATE DATABASE replicatest;

登录从服务器 MySQL shell:

代码语言:javascript
复制
mysql -uroot -p

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

代码语言:javascript
复制
SHOW DATABASES;

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

代码语言:javascript
复制
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| replicatest        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

六、总结

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年12月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前提条件
  • 二、安装 MySQL
  • 三、配置主服务器
  • 四、配置从服务器
  • 五、测试配置文件
  • 六、总结
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档