循序渐进学习如何在 MariaDB 中配置主从复制 | Linux 中国

2018 年 2 月 5 日 Linux中国 译者:qhwdw
复制是用于为我们的数据库创建多个副本,这些副本可以在其它数据库上用于运行查询,像一些非常繁重的查询可能会影响主数据库服务器的性能,或者我们可以使用它来做数据冗余,或者兼具以上两个目的。我们可以将这个过程自动化,即主服务器到从服务器的复制过程自动进行。执行备份而不影响在主服务器上的写操作。
-- Shusain

本文导航
编译自 | http://linuxtechlab.com/creating-master-slave-replication-mariadb/ 
 作者 | Shusain
 译者 | qhwdw

在我们前面的教程中,我们已经学习了 如何安装和配置 MariaDB[1],也学习了 管理 MariaDB 的一些基础命令[2]。现在我们来学习,如何在 MariaDB 服务器上配置一个主从复制。

复制是用于为我们的数据库创建多个副本,这些副本可以在其它数据库上用于运行查询,像一些非常繁重的查询可能会影响主数据库服务器的性能,或者我们可以使用它来做数据冗余,或者兼具以上两个目的。我们可以将这个过程自动化,即主服务器到从服务器的复制过程自动进行。执行备份而不影响在主服务器上的写操作。

因此,我们现在去配置我们的主-从复制,它需要两台安装了 MariaDB 的机器。它们的 IP 地址如下:

◈  主服务器 - 192.168.1.120  主机名 - master.ltechlab.com
◈  从服务器 - 192.168.1.130  主机名 - slave.ltechlab.com

MariaDB 安装到这些机器上之后,我们继续进行本教程。如果你需要安装和配置 MariaDB 的教程,请查看这个教程[1]

第 1 步 - 主服务器配置

我们现在进入到 MariaDB 中的一个命名为 important 的数据库,它将被复制到我们的从服务器。为开始这个过程,我们编辑名为 /etc/my.cnf 的文件,它是 MariaDB 的配置文件。

   
     
     
     
  1. $ vi /etc/my.cnf

在这个文件中找到 [mysqld] 节,然后输入如下内容:

   
     
     
     
  1. [mysqld]

  2. log-bin

  3. server_id=1

  4. replicate-do-db=important

  5. bind-address=192.168.1.120

保存并退出这个文件。完成之后,需要重启 MariaDB 服务。

   
     
     
     
  1. $ systemctl restart mariadb

接下来,我们登入我们的主服务器上的 Mariadb 实例。

   
     
     
     
  1. $ mysql -u root -p

在它上面创建一个命名为 slaveuser 的为主从复制使用的新用户,然后运行如下的命令为它分配所需要的权限:

   
     
     
     
  1. STOP SLAVE;

  2. GRANT REPLICATION SLAVE ON *.* TO  'slaveuser'@'%' IDENTIFIED BY 'iamslave';

  3. FLUSH PRIVILEGES;

  4. FLUSH TABLES WITH READ LOCK;

  5. SHOW MASTER STATUS;

注意: 我们配置主从复制需要 MASTER_LOG_FILE 和 MASTER_LOG_POS 的值,它可以通过 show master status 来获得,因此,你一定要确保你记下了它们的值。

这些命令运行完成之后,输入 exit 退出这个会话。

第 2 步 - 创建一个数据库备份,并将它移动到从服务器上

现在,我们需要去为我们的数据库 important 创建一个备份,可以使用 mysqldump 命令去备份。

   
     
     
     
  1. $ mysqldump -u root -p important > important_backup.sql

备份完成后,我们需要重新登录到 MariaDB 数据库,并解锁我们的表。

   
     
     
     
  1. $ mysql -u root -p

  2. $ UNLOCK TABLES;

然后退出这个会话。现在,我们移动我们刚才的备份到从服务器上,它的 IP 地址是:192.168.1.130。

在主服务器上的配置已经完成了,现在,我们开始配置从服务器。

第 3 步:配置从服务器

我们再次去编辑(从服务器上的) /etc/my.cnf 文件,找到配置文件中的 [mysqld]节,然后输入如下内容:

   
     
     
     
  1. [mysqld]

  2. server-id = 2

  3. replicate-do-db=important

  4. [ …]

现在,我们恢复我们主数据库的备份到从服务器的 MariaDB 上,运行如下命令:

   
     
     
     
  1. $ mysql -u root -p < /data/ important_backup.sql

当这个恢复过程结束之后,我们将通过登入到从服务器上的 MariaDB,为数据库 important 上的用户 'slaveuser' 授权。

   
     
     
     
  1. $ mysql -u root -p

   
     
     
     
  1. GRANT ALL PRIVILEGES ON important.* TO 'slaveuser'@'localhost' WITH GRANT OPTION;

  2. FLUSH PRIVILEGES;

接下来,为了这个变化生效,重启 MariaDB。

   
     
     
     
  1. $ systemctl restart mariadb

第 4 步:启动复制

记住,我们需要 MASTER_LOG_FILE 和 MASTER_LOG_POS 变量的值,它可以通过在主服务器上运行 SHOW MASTER STATUS 获得。现在登入到从服务器上的 MariaDB,然后通过运行下列命令,告诉我们的从服务器它应该去哪里找主服务器。

   
     
     
     
  1. STOP SLAVE;

  2. CHANGE MASTER TO MASTER_HOST= '192.168.1.110′, MASTER_USER='slaveuser', MASTER_PASSWORD='iamslave', MASTER_LOG_FILE='mariadb-bin.000001′, MASTER_LOG_POS=460;

  3. SLAVE START;

  4. SHOW SLAVE STATUS\G;

注意: 请根据你的机器的具体情况来改变主服务器的配置。

第 5 步:测试复制

我们将在我们的主服务器上创建一个新表来测试主从复制是否正常工作。因此,登入到主服务器上的 MariaDB。

   
     
     
     
  1. $ mysql -u root -p

选择数据库为 important

   
     
     
     
  1. use important;

在这个数据库上创建一个名为 test 的表:

   
     
     
     
  1. create table test (c int);

然后在这个表中插入一些数据:

   
     
     
     
  1. insert into test (c) value (1);

检索刚才插入的值是否存在:

   
     
     
     
  1. select * from test;

你将会看到刚才你插入的值已经在这个新建的表中了。

现在,我们登入到从服务器的数据库中,查看主从复制是否正常工作。

   
     
     
     
  1. $ mysql -u root -p

  2. $ use important;

  3. $ select * from test;

你可以看到与前面在主服务器上的命令输出是一样的。因此,说明我们的主从服务工作正常,没有发生任何问题。

我们的教程结束了,请在下面的评论框中留下你的查询/问题。


via: http://linuxtechlab.com/creating-master-slave-replication-mariadb/

作者:Shusain[4] 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者
qhwdw 🌟 🌟 🌟 🌟
共计翻译: 61 篇
贡献时间:97 天

推荐文章

< 左右滑动查看相关文章 >

点击图片、输入文章 ID 或识别二维码直达


登录查看更多
0

相关内容

服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
使用tinc构建full mesh结构的VPN
运维帮
68+阅读 · 2018年12月1日
浅谈浏览器 http 的缓存机制
前端大全
6+阅读 · 2018年1月21日
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
Arxiv
5+阅读 · 2020年3月26日
A Modern Introduction to Online Learning
Arxiv
20+阅读 · 2019年12月31日
Continual Unsupervised Representation Learning
Arxiv
7+阅读 · 2019年10月31日
Learning Recommender Systems from Multi-Behavior Data
Arxiv
6+阅读 · 2018年5月18日
Arxiv
6+阅读 · 2018年3月31日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
使用tinc构建full mesh结构的VPN
运维帮
68+阅读 · 2018年12月1日
浅谈浏览器 http 的缓存机制
前端大全
6+阅读 · 2018年1月21日
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
Top
微信扫码咨询专知VIP会员