如何在CentOS / RHEL 7和Debian 8中设置MariaDB(主从)复制

即使在一些IT人听到“ 数据库复制 ”,他们往往与需要具有相同信息的多个副本,以避免硬件故障或数据损坏的情况下丢失数据的关联。 虽然这在某种程度上是真实的,但是数据库复制远远超过了备份数据库和数据可用性的常见概念。

CentOS / RHEL 7和Debian 8中的MariaDB主从复制

在主从设置中的数据库复制的其他好处包括:

  1. 备份可以在从服务器上完成,而不会影响主机中的写操作(并受其影响)。
  2. 可以在从设备上执行资源密集型操作(例如数据分析),而不会影响主设备的性能。

在这篇文章中,我们将解释如何设置主从复制的MariaDB的10.1。 相对于经典的复制,MariaDB的推出全球交易的ID(GTIDs)V10.0的概念,它允许改变一个从连接到和复制从不同的易于掌握。 此外,从站的状态以崩溃安全的方式记录(状态的更新在与数据的更新相同的事务中完成)。

如果您正在寻找下的CentOS / RHEL 6 MySQL复制,按照本指南安装的MySQL(主从)复制在CentOS / RHEL 6

在CentOS / RHEL 7和Debian 8中安装MariaDB 10.1

我们的测试环境包括以下机器(都是CentOS的七 ):

Master: 192.168.0.18
Slave: 192.168.0.19

要安装最新版本的MariaDB,我们需要将它们的存储库添加到我们的服务器。 如果您使用的是旧版本的MariaDB 5.5,请考虑使用下面的文章升级到最新的10.1版本。

  1. Upgrde MariaDB 5.5升级到MariaDB 10.1

在CentOS / RHEL

创建一个文件名为MariaDB.repo/etc/yum.repos.d系统的下列内容:

# MariaDB 10.1 CentOS repository list - created 2016-01-23 14:16 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

保存文件并使用yum在两台服务器上安装MariaDB:

# yum update && yum install MariaDB-server MariaDB-client

在Debian / Ubuntu

添加验证软件包和MariaDB存储库的密钥:

# apt-get install software-properties-common
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
# add-apt-repository 'deb [arch=amd64,i386] http://mirror.edatel.net.co/mariadb/repo/10.1/debian jessie main'

:在上面的突出显示的行替换版本名称代号

安装使用apt-get命令:

# apt-get update
# apt-get install mariadb-server

在主从服务器上检查MariaDB版本

一旦你已经安装MariaDB的,运行mysql_secure_installation上主机和从机的程序,让我们建立了一个样本测试数据库中的老爷机。

在主服务器上设置示例MySQL数据库

现在,我们将设立在主服务器中的Employeeshttps://github.com/datacharmer/test_db数据库(它提供400万条记录分布在六个表的数据集)中的两个简单的步骤:

克隆存储库并使用它将示例数据库导入到MariaDB安装:

# git clone https://github.com/datacharmer/test_db
# cd test_db
# mysql < employees.sql

在主服务器上配置MySQL服务器

要配置主服务器,请按照下列步骤操作:

第1步:编辑/etc/my.cnf文件。 根据[mysqld]部分中,添加以下四行:

log-bin
server_id=1
replicate-do-db=employees
bind-address=192.168.0.18

并重新启动MariaDB:

# systemctl restart mariadb

第2步:登录到MariaDB的服务器根目录,创建用户Minion,分配必要的补助:

MariaDB [(none)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;

最后一个命令(SHOW MASTER STATUS)返回二进制日志中的当前位置(精确坐标指示正好这一点从应该从复制:

配置MySQL主机进行复制

第3步:退出MariaDB的提示(与exit; ),并使用以下命令采取员工数据库的快照。 当你打回车后 ,系统会提示您输入您之前设置过root用户的密码mysql_secure_installation

# mysqldump -u root -p employees > employees-dump.sql

转储完成后,再次连接到数据库服务器以解锁表,然后退出:

MariaDB [(none)]> UNLOCK TABLES;
MariaDB [(none)]> exit;

第4步:将转储复制到从站:

# scp employees-dump.sql root@192.168.0.19:/root/ 

第5步:运行mysql_upgrade过程升级系统表(会提示你输入MariaDB的root密码):

# mysql_upgrade -u root -p

第6步:允许通过防火墙数据库服务:

# firewall-cmd --add-service=mysql
# firewall-cmd --add-service=mysql --permanent
# firewall-cmd --reload

现在让我们配置从站。

在从设备上配置MySQL服务器

要配置从站,请按照下列步骤操作:

第1步:创建帐号执行复制任务。 使用以下命令连接到本地MariaDB服务器:

# mysql -u root –p

并输入您之前设置的密码。

第2步:一旦连接到数据库服务器,创建用户和一个空的数据库,并授予权限:

MariaDB [(none)]> CREATE DATABASE employees;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON employees.* TO 'slave'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

第3步:退出MariaDB的提示,并加载在主服务器中创建的转储:

# mysql -u root -p employees < employees-dump.sql

第4步:编辑/etc/my.cnf文件到服务器ID分配给下的Minion[mysqld]部分。 需要注意的是它需要比1不同的整数,如我们在主用1:

server_id=2
replicate-do-db=employees

重新启动数据库服务器:

# systemctl restart mariadb

第5步:运行mysql_upgrade过程升级系统表(会提示你输入MariaDB的root密码):

# mysql_upgrade -u root -p

第6步:一旦转储已导入的Minion,我们只有几步,开始复制。 登录到数据库并在MariaDB提示符中运行以下命令。 要特别注意的MASTER_LOG_FILEMASTER_LOG_POS变量,应在“配置大师”上述第2步匹配SHOW MASTER STATUS返回的值。

MariaDB [(none)]> CHANGE MASTER TO
MASTER_HOST='192.168.0.18',
MASTER_USER='slave',
MASTER_PASSWORD='SlavePassword',
MASTER_PORT=3306,
MASTER_LOG_FILE='master-bin.000001',
MASTER_LOG_POS=314,
MASTER_CONNECT_RETRY=10,
MASTER_USE_GTID=current_pos;

STEP 7:启动Minion,检查其状态,但不退出MariaDB的提示:

MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G;

不是现在你需要这个,但请注意,你可以停止Minion:

MariaDB [(none)]> STOP SLAVE;

如果SHOW SLAVE STATUS\G;命令返回的任何错误。 使用这些错误进行故障排除,然后运行START SLAVE;再次测试。

测试MySQL / MariaDB数据库复制

让我们记录添加到主服务器中的员工表:

MariaDB [(none)]> INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');

然后验证此更改是否已复制到从属:

MariaDB [(none)]> USE employees;
MariaDB [(none)]> SELECT * FROM employees WHERE emp_no=500000;

检查MariaDB MySQL数据库复制

如您所见,复制在主机到从机正常工作。

概要

在这篇文章中,我们已经解释了如何在CentOS的/ RHEL 7和Debian 8安装最新版本的MariaDB的,并讨论了如何建立与GTIDs主从复制。 欲了解更多信息,您可能要参考MariaDB的复制指南 ,不要犹豫,使用下面的表格与我们联系,如果您有任何问题或意见。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏