MySQL主从复制的简单搭建

Posted yuwenS.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主从复制的简单搭建相关的知识,希望对你有一定的参考价值。

1、mysql一主一从的简单搭建

1.1、主从复制简介

在实际生产中,数据的重要性不言而喻。如果我们的数据库只有一台服务器,那么很容易产生单点故障的问题,如果服务器宕机或者损坏了,那么整个数据库的数据就丢失了,这是重大的安全事故。所有我们必须部署两台或两台以上的服务器来存储我们的数据。也就是说我们将数据复制多份放在不同的服务器上。当某台服务器宕机后其他服务器还能提供服务。

1.2、MySQL主从复制简介

主从复制是指服务器分为主服务器和从服务器,主服务器负责读和写,从服务器只负责读,主从复制也叫 master/slave,master是主,slave是从,但是并没有强制,也就是说从也可以写,主也可以读,只不过一般我们不这么做。主从复制可以实现对数据库备份和读写分离。

1.3、主从复制的架构

架构

1.4、前期准备

  1. 需要两台或者两台以上的服务器或者虚拟机
  2. 保证每台服务器上已经安装好了mysql并且能正常启动

1.5、主要配置实现

1.5.1、测试环境

主服务器ip:176.20.92.71
从服务器ip:176.20.92.73
MySQL版本:5.7.18
Linux版本:centos7

1.5.2、配置my.cnf文件

注意:如果没有这个配置文件的话可以自己在数据库的data目录下新建一个这个文件然后添加如下配置

[client]
port        = 3306
socket      = /usr/local/mysql-5.7.18/data/mysql.sock
default-character-set=utf8

[mysqld]
port    = 3306
socket  = /usr/local/mysql-5.7.18/data/mysql.sock
datadir = /usr/local/mysql-5.7.18/data
log-error = /usr/local/mysql-5.7.18/data/error.log
pid-file = /usr/local/mysql-5.7.18/data/mysql.pid

character-set-server=utf8
lower_case_table_names=1
autocommit = 1

注意 /usr/local/mysql-5.7.18/data 是自己服务器数据库的的data路径

1.5.3、启动mysql测试

这里不是正常启动,而是通过my.cnf这个配置文件启动mysql

./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/my.cnf &

主从两边启动都成功后,需要登录mysql进行测试

./mysql -uroot -h127.0.0.1 -p

主从两边都登录成功后再进行下面的配置

1.5.4、配置主从结构

1.5.4.1、主服务器配置

在my.cnf文件中加入如下配置,然后重新启动mysql

log-bin=mysql-bin   	#表示启用二进制日志
server-id=71 		#表示server编号,编号要唯一

登入mysql输入如下命令

在主服务器上创建复制数据的账号并授权

grant replication slave on *.* to 'copy'@'%' identified by '123456';

查看主服务器状态 默认初始值:
File:mysql-bin.000001
Position:154

show master status;

不是初始状态
如果不是初始值,是因为设置了copy用户导致Position数据增加 需要重置一下状态

重置状态

reset master;

重置之后再次查看状态
重置初始状态
到这里主服务器的配置就完成了,下面来进行从服务器的配置

1.5.4.2、从服务器配置

在my.cnf文件中加入如下配置,然后重新启动mysql

server-id=73 		#表示server编号,编号要唯一

登入mysql输入如下命令

查看服务器状态 初始状态:Empty set

show slave status;

如果不是初始状态,建议重置一下

重置命令如下

stop slave; 	#停止复制,相当于终止从服务器上的IO和SQL线程
reset slave;

设置从服务器的master

change master to master_host='176.20.92.71',master_user='copy',

master_port=3306,master_password='123456',

master_log_file='mysql-bin.000001',master_log_pos=154;

执行开始复制

start slave;

查看主从复制是否搭建完成

show slave status \\G

搭建状态
如果 Slave_IO_Running: 为no 执行如下命令

stop slave;
reset slave;
start slave;

在此mysql的主从复制搭建就完成了,下面来进行测试

1.6、主从复制测试

在主服务器中建立一个testdb数据库
建库
在主服务器的testdb中建立一个t_user表

建表
可以发现主服务器建立t_user表从服务器也会自动创建t_user表

在主服务器中添加值
插值测试
可以发现主服务器的表中添加了值,从服务器中的表中也会添加一模一样的值

在此mysql主从复制的简单搭建就全部完成了

以上是关于MySQL主从复制的简单搭建的主要内容,如果未能解决你的问题,请参考以下文章

MySQL主从复制的简单搭建

基于Docker搭建MySQL主从复制

基于Docker搭建MySQL主从复制

基于Docker搭建MySQL主从复制

mysql5.7 主从复制简单环境搭建以及开启半同步复制等配置

mysql5.7 主从复制简单环境搭建以及开启半同步复制等配置