CentOS 7搭建部署MySQL主从复制

一、什么是主从复制

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

二、主从复制的作用

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数据

#yum list installed | grep mysql

3.安装mysql

#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

# service mysqld start

5.设置mysql开机自启动

#systemctl enable mysqld

6.设置root密码

mysql_secure_installation

运行mysql_secure_installation会执行几个设置:

--为root用户设置密码

--删除匿名账号

--取消root用户远程登录

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

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

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

7.登陆root账号

# mysql -uroot -pyourpassword

建立远程root用户

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED     BY 'yourpassword' WITH GRANT OPTION;
mysql> flush privileges;

8.配置数据库主从

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

vim /etc/my.cnf

添加:

   log-bin = mysql-bin
   binlog_format = mixed
   server-id =1
   innodb-file-per-table =ON
   skip_name_resolve=ON

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

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

mysql> show global variables like '%log%';

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

mysql> show master logs;

查看主节点的server id

mysql> show global variables like '%server%';

主服务器配置完成。

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

10.配置从服务器

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

在/etc/my.cnf添加:

relay-log=relay-log
relay-log-index=relay-log.index
server-id=12
innodb_file_per_table=ON
skip_name_resolve=ON

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

mysql> show global variables like '%log%';

查看server 相关信息:

mysql> show global variables like '%server%';

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

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

mysql> CHANGE MASTER TO MASTER_HOST='yourmasterip',MASTER_USER='root',MASTER_PASSWORD='yourmasterpassword', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=311;

查看从节点的状态信息:

mysql> show slave status\G;

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

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

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

五、测试

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

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

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

原文发布于微信公众号 - 运维架构之路(linux_ops_root)

原文发表时间:2019-06-26

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

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券