MySQL数据库详细教程,mysql主从复制搭建步骤

本文介绍了在Linux环境下,如何搭建MySQL的主从复制。主要步骤包括:下载安装MySQL,配置主库和从库的my.cnf文件,创建复制账号,启动数据库并设置主从同步,最后通过show slave status检查同步状态。文章还提供了遇到问题时的解决办法,并验证了主从复制的正确性。
摘要由CSDN通过智能技术生成

相信有些初学MySQL数据库的小伙伴对mysql主从复制的搭建步骤还不是很了解,今天这篇文章就来分享给大家详细的搭建步骤。

环境:

linux64位,一台机器两个实例,主库3306端口,从库3307端口

步骤:

一、下载安装

先下载安装mysql,这里使用了5.7.21版本,具体过程不做详细说明,如何下载安装,我推荐可以看动力节点老杜讲的mysql教程,详细讲了mysql的下载安装步骤,点下边观看

https://www.bilibili.com/video/BV1fx411X7BD

二、配置

1.master配置,/etc/my.cnf文件入下

[mysqld]

port=3306

server-id=1

basedir=/home/shared_disk/mysql-5.7.21

datadir=/home/shared_disk/mysql-5.7.21/data

socket=/home/shared_disk/mysql-5.7.21/data/mysql.sock

symbolic-links=0

log-error=/home/shared_disk/mysql-5.7.21/data/error.log

pid-file=/home/shared_disk/mysql-5.7.21/data/mysql.pid

#skip-grant-tables

#开启gtid模式,global transaction identified

gtid-mode=on

#保证gtid强一致性

enforce-gtid-consistency=1

#slave记录binlog,否则slave执行完relay log后就删了,找不到slave的执行记录

log_slave_updates

#按行记录binlog

binlog_format=row

#binlog文件名

log-bin=/home/shared_disk/mysql_datadir/mysql-bin

#需要记录binlog的数据库,即需要同步的数据库,同步是通过binlog实现的

binlog-do-db=allen

#不需要记录binlog的数据库

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

其中红色部分是主从同步必须的配置

2. 启动主库,安装到系统服务的直接service命令启动即可,没安装的运行mysqld --defaults-file=/etc/my.cnf --user=mysql &

3.登录主库,创建主从复制的账号

create user 'sync'@'localhost' identified by 'sync';

给账号授权

grant file,replication slave on *.* to 'sync'@'localhost' identified by 'sync';

4. slave配置

配置文件/etc/my-slave.cnf入下

[mysqld]

port=3307

server-id=2

basedir=/home/shared_disk/mysql-slave

datadir=/home/shared_disk/mysql-slave/data

socket=/home/shared_disk/mysql-slave/data/mysql.sock

symbolic-links=0

log-error=/home/shared_disk/mysql-slave/data/error.log

pid-file=/home/shared_disk/mysql-slave/data/mysql.pid

#skip-grant-tables

gtid-mode=on

enforce-gtid-consistency=1

log_slave_updates

binlog_format=row

log-bin=/home/shared_disk/mysql_datadir/mysql-bin

#从库启动时跳过自动启动slave这一步

skip_slave_start=1

replicate-ignore-db=mysql

replicate-ignore-db=information_schema

replicate-ignore-db=performance_schema

replicate-ignore-db=sys

5. 启动从库,service命令或mysqld --defaults-file=/etc/my-slave.cnf --user=mysql &

启动后登录进去,执行

stop slave;

change master to master_host='locahost',master_port=3306,master_user='sync',master_password='sync',master_auto_position=1;

start slave;

show slave status\G;

看到以下两个YES即说明主从已经搭建成功

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

PS:

当slave遇到问题时候,我们可以show slave status\G;看到同步情况

Retrieved_Gtid_Set: 9461bcc7-4850-11e8-a9f7-525400045eeb:1-7

Executed_Gtid_Set: 4f7a4829-9a29-11e8-aa21-525400045eeb:1-5,9461bcc7-4850-11e8-a9f7-525400045eeb:1-7。

其中9461bcc7-4850-11e8-a9f7-525400045eeb是主库的mysql实例唯一id,4f7a4829-9a29-11e8-aa21-525400045eeb是从库的mysql实例唯一id,

Retrieved_Gtid_Set和Executed_Gtid_Set分别为已接收的和已执行的gtid,已执行的gtid中有一个和Retrieved_Gtid一样的,表明是执行了从主库同步过来的事务,另一个则是本机自己执行的事务。

假设现在Executed_Gtid_Set如下:

Executed_Gtid_Set: 4f7a4829-9a29-11e8-aa21-525400045eeb:1-5,9461bcc7-4850-11e8-a9f7-525400045eeb:1-3

我们可以看到同步的gtid从4之后就没执行了,应该是遇到错误了导致slave停止了,我们可以用以下操作跳过第四个gtid,让slave继续工作

stop slave;

set gtid_next='9461bcc7-4850-11e8-a9f7-525400045eeb:4';

begin;

commit;

set gtid_next='automatic';

start slave;

show slave status\G;

原理就是让下一个事务指到第四个,然后begin接着commit,中间为空实现,让slave以为这个事务执行成功了。

三、验证

主库建表,插入数据,去从库看是否存在相同数据。

从库使用show slave status\G;命令查看Retrieved_Gtid_Set和Executed_Gtid_Set。

 以上就是mysql主从复制搭建步骤”,希望对大家有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值