CentOS-7.5 搭建 MySQL 主从复制

一、实验环境
两台同样配置的CentOS-7.5虚拟机;
两台虚机的防火墙+selinux均关闭;
两台虚机均可以上外网;
master:CentOS-1(192.168.218.128)
slave: CentOS-2 (192.168.218.136)

二、搭建主从复制
1)两台服务器同时安装MySQL服务
说明:因为本人之前已经写过“CentOS-7.5 安装 社区版 MySQL-5.7”这样的博文,所以在此就不在做重复性动作了;两台虚拟机安装MySQL服务的操作是一摸一样的,直接复制粘贴即可
博文链接为:https://blog.51cto.com/14783377/2485030

2)修改两台MySQL的配置文件
master端如下:

slave端如下:

切记:修改完配置文件以后,都要重启MySQL服务使配置生效

3)mysql主服务器初始化以后的第一次全备
[[email protected] ~]#
[[email protected] ~]# mysqldump -uroot -p‘Mysql.2020‘ --all-databases --single-transaction > /tmp/mysql_all.sql #数据库第一次全量备份
mysqldump: [Warning] Using a password on the command line interface can be insecure.
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don‘t want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# ll /tmp | grep ‘mysql*‘

4)将mysql主服务器的第一次全备拷贝到从服务器
[[email protected] ~]#
[[email protected] ~]# scp /tmp/mysql_all.sql [email protected]:/tmp/ #将数据库的全备文件从主服务器拷贝到从服务器

在从服务器端进行查看:
[[email protected] ~]#
[[email protected] ~]# ll /tmp | grep ‘mysql*‘

5)在从服务器端进行全备恢复
[[email protected] ~]#
[[email protected] ~]# mysql -uroot -p‘Mysql.2020‘ < /tmp/mysql_all.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[[email protected] ~]#

此时,master端和slave端数据处于一致状态

6)主服务器对从服务器的授权

主服务器端执行:
[[email protected] ~]#
[[email protected] ~]# mysql -uroot -p‘Mysql.2020’
mysql>
mysql> grant replication slave on . to [email protected] identified by ‘Mysql.2019‘; #授权repluser账户可以通过从服务器192.168.218.136来复制主服务器的所有库和所有表
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>
mysql> flush privileges; #刷新权限
Query OK, 0 rows affected (0.00 sec)

mysql>

从服务器端执行:
[[email protected] ~]#
[[email protected] ~]# mysql -uroot -p‘Mysql.2020‘
mysql>
mysql> change master to master_host=‘192.168.218.128‘,master_user=‘repluser‘,master_password=‘Mysql.2019‘,master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.11 sec)

mysql>
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> show slave status\G #查看slave状态

三、验证主从同步是否成功

思路:如果在master端插入或者删除SQL语句,在slave端能出现一样效果的话,就说嘛主从同步配置成功

1)在验证前,先对比master和slave数据是否一致
master服务器端执行:
[[email protected] ~]#
[[email protected] ~]# mysql -uroot -p‘Mysql.2020‘ #登录master
mysql>
mysql> show databases;

slave服务器端执行:
[[email protected] ~]#
[[email protected] ~]# mysql -uroot -p‘Mysql.2020‘ #登录slave
mysql>
mysql> show databases;

对比结果:验证前的master和slave两端数据一致

2)在master端创建数据库并插入数据
mysql>
mysql> create database db_1;
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> use db_1;
Database changed
mysql>
mysql> create table Student(
-> Sid varchar(10),
-> Sname nvarchar(10),
-> Sage datetime,
-> Ssex nvarchar(10)
-> );
Query OK, 0 rows affected (0.13 sec)

mysql>
mysql> desc Student;

mysql>
mysql>
mysql> insert into Student values(‘01‘,‘张磊‘,‘1995-02-08‘,‘男‘);
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> insert into Student values(‘02‘,‘李华‘,‘1995-06-11‘,‘男‘);
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> insert into Student values(‘03‘,‘王青‘,‘1996-01-06‘,‘男‘);
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> select * from Student;

3)去slave端查看是否存在master中插入的数据
[[email protected] ~]#
[[email protected] ~]# mysql -uroot -p‘Mysql.2020‘
mysql>
mysql> show databases;

mysql> use db_1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>
mysql> show tables;

mysql>
mysql> desc Student;

mysql>
mysql> select * from Student;

4)在master端删除数据
mysql>
mysql> drop database db_1;
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> show databases;

5)去slave端查看db_1数据库是否还存在
mysql>
mysql> show databases;

结论:经验证得出,MySQL-5.7主从同步搭建成功

原文地址:https://blog.51cto.com/14783377/2485053

时间: 2024-11-05 23:37:01

CentOS-7.5 搭建 MySQL 主从复制的相关文章

基于Centos 7搭建MySQL主从复制及读写分离

博文目录一.MySQL主从复制原理二.MySQL读写分离原理三.搭建MySQL主从复制四.配置MySQL读写分离 在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性还是高并发等各个方面都是完全不能满足实际需求的.因此,一般来说实际生产环境中都是通过主从复制(Master--Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力这样的方案来进行部署与实施的. 如下图所示,一台MySQL主服务器带两台MySQL从服务器做数据复制,前端应用在进

搭建 MySQL主从复制与读写分离

搭建 MySQL主从复制与读写分离 案例概述 : 在实际环境中 ,如果对数据库的读和写都在同一个数据库服务中操作 ,无论实在安全性.高可用性, 还是高并发等各个方面都是完全不能满足实际需求的 ,因此 ,一般来说都只通过主从复制的方式来同 步数据 ,在通过读写分离来提升数据库的并发负载能力 ,这样的方案来进行部署与实施 . 环境拓补图 : 本案环境 : 主机 操作系统 IP地 址 主要软件 主服务器 CentOS 7.3 x86_64 192.168.217.130 NTP 从服务器1 CentO

两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……

两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connecting to master '[email protected]:3306'…… 首先查看B的错误日志文件,发现如下错误: ERROR] Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60  

在CentOS7上搭建MySQL主从复制与读写分离

MySQL主从复制原理 MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离. (1)MySQL支持复制的类型. 1)基于语句的复制.MySQL默认采用基于语句的复制,效率比较高. 2)基于行的复制.把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 3)混合类型的复制.默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制. (2)MySQL复制的工作过程如图所示.1)在每个事务更新数据

CentOS 6.8搭建mysql cluster(7.3)

CentOS 6.8搭建mysql cluster(7.3): 注:共5台,1台管理节点(10.0.0.21),2台SQL节点(10.0.0.22.10.0.0.23),2台数据节点(10.0.0.24.10.0.0.25) 参考网址:http://blog.itpub.net/9034054/viewspace-2097706 下载网址(选择Red Hat的tar包并进行解压):https://dev.mysql.com/downloads/cluster/7.3.html#downloads

基于Docker搭建MySQL主从复制

摘要: 本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建. 本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建.根据网上教程走还是踩了一些坑,不过所幸最终搭建成功,因此记录下来,避免以后踩了重复的坑. 搭建环境 Centos 7.2 64位 MySQL 5.7.13 Docker 1.13

基于 Docker 搭建 MySQL 主从复制

本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建. 根据网上教程走还是踩了一些坑,不过所幸最终搭建成功,因此记录下来,避免以后踩了重复的坑. 搭建环境 Centos 7.2 64位 MySQL 5.7.13 Docker 1.13.1 接下来,我们将会在一台服务器上安装docker,并使用docker运行三个MySQL容器,分别为一主两从. 安装docker 执行命令 如果有提示,一路y下去

【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构 一、业务发展驱动数据发展

一.业务发展驱动数据发展 随着网站业务的不断发展,用户量的不断增加,数据量成倍地增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案不够健壮,那么数据库服务器很有可能在高并发访问负载压力下宕机,造成数据访问服务的失效,从而导致网站的业务中断,给公司和用户造成双重损失.那么,有木有一种方案能够解决此问题,使得数据库不再因为负载压力过高而成为网站的瓶颈呢?答案肯定是有的. 目前,大部分的主流关系型数据库都提供了主从热备功能,通过配置

搭建mysql主从复制和删库数据恢复策略

搭建主从复制 主机: [mysqld] 下增加 vim /etc/my.cnf ## 设置 server_id,一般设置为 IP server_id=8 # # 复制过滤:需要备份的数据库,输出 binlog binlog-do-db=testdb #复制过滤:不需要备份的数据库,不输出(mysql 库一般不同步) binlog-ignore-db=mysql # 开启二进制日志,以备 Slave 作为其它 Slave 的 Master 时使用 log-bin=master-log-1 binl