前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS 7搭建部署MySQL主从复制

CentOS 7搭建部署MySQL主从复制

作者头像
用户5766185
发布2019-07-08 14:55:51
2.7K0
发布2019-07-08 14:55:51
举报
文章被收录于专栏:运维架构之路

一、什么是主从复制

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库。

二、主从复制的作用

1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。

2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。 3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

三、主从复制的原理

1.数据库有个bin-log二进制文件,记录了所有sql语句。

2.我们的目标就是把主数据库的bin-log文件的sql语句复制过来。

3.让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。

具体需要三个线程来操作:

1.binlog输出线程:每当有从库连接到主库的时候,主库都会创建一个线程然后发送binlog内容到从库。在从库里,当复制开始的时候,从库就会创建两个线程进行处理:

2.从库I/O线程:当START SLAVE语句在从库开始执行之后,从库创建一个I/O线程,该线程连接到主库并请求主库发送binlog里面的更新记录到从库上。从库I/O线程读取主库的binlog输出线程发送的更新并拷贝这些更新到本地文件,其中包括relay log文件。

3.从库的SQL线程:从库创建一个SQL线程,这个线程读取从库I/O线程写到relay log的更新事件并执行。

可以知道,对于每一个主从复制的连接,都有三个线程。拥有多个从库的主库为每一个连接到主库的从库创建一个binlog输出线程,每一个从库都有它自己的I/O线程和SQL线程。

四、安装步骤

1.环境

我使用的是阿里云的云服务器,如下:

数据库版本:mysql5.6

2.两个ECS都安装mysql,检查系统是否安装其他版本的MYSQL数据

代码语言:javascript
复制
#yum list installed | grep mysql

3.安装mysql

代码语言:javascript
复制
#wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
#rpm -ivh mysql-community-release-el7-5.noarch.rpm
#yum install mysql-community-server -y  

4.启动mysql

代码语言:javascript
复制
# service mysqld start

5.设置mysql开机自启动

代码语言:javascript
复制
#systemctl enable mysqld

6.设置root密码

代码语言:javascript
复制
mysql_secure_installation

运行mysql_secure_installation会执行几个设置:

--为root用户设置密码

--删除匿名账号

--取消root用户远程登录

--删除test库和对test库的访问权限

--刷新授权表使修改生效

通过这几项的设置能够提高mysql库的安全,按照提示选择即可。

7.登陆root账号

代码语言:javascript
复制
# mysql -uroot -pyourpassword

建立远程root用户

代码语言:javascript
复制
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED     BY 'yourpassword' WITH GRANT OPTION;
mysql> flush privileges;

8.配置数据库主从

编辑主节点配置文件,添加启用二进制日志文件

代码语言:javascript
复制
vim /etc/my.cnf

添加:

代码语言:javascript
复制
   log-bin = mysql-bin
   binlog_format = mixed
   server-id =1
   innodb-file-per-table =ON
   skip_name_resolve=ON

修改配置后,需要重启mysql。

9.进入数据库,查看日志信息,查看二进制日志是否开启

代码语言:javascript
复制
mysql> show global variables like '%log%';

查看主节点二进制日志列表

代码语言:javascript
复制
mysql> show master logs;

查看主节点的server id

代码语言:javascript
复制
mysql> show global variables like '%server%';

主服务器配置完成。

注意:确保主服务器的iptables没有阻断3306的访问端口。

10.配置从服务器

编辑从节点配置文件,开启中继日志

在/etc/my.cnf添加:

代码语言:javascript
复制
relay-log=relay-log
relay-log-index=relay-log.index
server-id=12
innodb_file_per_table=ON
skip_name_resolve=ON

进入mysql,查看从节点日志信息,查看中继日志是否开启:

代码语言:javascript
复制
mysql> show global variables like '%log%';

查看server 相关信息:

代码语言:javascript
复制
mysql> show global variables like '%server%';

在从节点配置访问主节点的参数信息,添加主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。

注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。

代码语言:javascript
复制
mysql> CHANGE MASTER TO MASTER_HOST='yourmasterip',MASTER_USER='root',MASTER_PASSWORD='yourmasterpassword', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=311;

查看从节点的状态信息:

代码语言:javascript
复制
mysql> show slave status\G;

因为没有启动 从节点的复制线程,IO线程 和 SQL 线程都为NO.

启动复制线程START SLAVE 可以指定线程类型:IO_THREAD ,SQL_THREAD, 如果不指定,则两个都启动。然后再次查看从节点状态信息.

此时,主从复制已搭建成功,下面我们进行测试!

五、测试

在主节点创建数据库,并查看主节点二进制日志信息

在从节点查找二进制日志信息,并查看mydb数据库是否复制成功

ok,主从测试成功~这只是简单的主从搭建,自己动手体验下吧.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维架构之路 微信公众号,前往查看

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

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

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