mysql一主一从搭建

tech2022-09-28  119

https://blog.csdn.net/weixin_43879074/article/details/88525006(参考链接)

Mysql主从同步

1. 主从同步的定义2. 主从同步的实现原理3. 为什么要使用主从同步4. 搭建主从复制环境4.1. 数据库信息4.2. master数据库配置4.2.1. 编辑my.cnf配置4.2.2. 创建用于同步的slave用户 4.3. slave数据库配置4.3.1. 编辑my.cnf配置4.3.2. 配置master数据库 4.4. 查看主从同步效果


1. 主从同步的定义

将两个不同的数据库分别部署,一个设置为master数据库负责对数据进行写入,一个设置为slave服务器负责对数据的搜索,master数据库将写入的记录保存到binlog文件中,slave数据库检测master的binlog文件的变化,将变更的记录同步到自身,从而保证master数据库跟slave数据库的数据一致性,这就是主从同步

2. 主从同步的实现原理

从库执行start slave语句,从库创建了IO线程 以及 Sql执行线程创建了IO线程的同时,IO线程连接到主库,并且请求主库返回binlog中的变更记录主库检测到从库的连接,给该从库的连接创建一个dump log线程用来给从库 i/o线程传binlog主库将变更的binlog日志传递给从库从库的IO线程将读取到主库返回的binlog文件,将文件写入relay log文件中从库的Sql执行线程读取relay log文件更新数据

3. 为什么要使用主从同步

数据的热备份,对数据进行“半即时”备份读写分离, 降低主数据库的压力, 将主要的查询业务分配到从数据库上执行,主数据库主要负责数据的写入以及少部分的查询业务实时灾备,用于故障切换

4. 搭建主从复制环境

4.1. 数据库信息

主库域名:MySql_Master1 从库域名:MySql_Slave1

4.2. master数据库配置

4.2.1. 编辑my.cnf配置

vim /etc/mysql/my.cnf

[mysqld] server-id=1 log-bin=mysql-bin

重启mysql服务是my.cnf生效

4.2.2. 创建用于同步的slave用户

进入 master数据库 执行以下语句

create user ‘slave’@‘localhost’ identified by ‘123456’; grant replication slave on . to ‘myslave’@’%’ FLUSH PRIVILEGES;

SHOW MASTER STATUS查看master服务配置信息

±--------------±---------±-------------±-----------------±------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | ±--------------±---------±-------------±-----------------±------------------+ | binlog.000006 | 156 | | | | ±--------------±---------±-------------±-----------------±------------------+

4.3. slave数据库配置

4.3.1. 编辑my.cnf配置

vim /etc/mysql/my.cnf

[mysqld] server-id=2 # 非必须 # log-bin=mysql-bin

重启mysql服务是my.cnf生效

4.3.2. 配置master数据库

停止slave服务

stop slave;

设置master数据库信息

change master to master_host='MySQL_Master1',master_user='slave',master_port=3306,master_password='123456',master_log_file='binlog.000006',master_log_pos=156;

启动slave服务

start slave;

查看slave配置信息

show slave status\G; # 显示的信息中开启了io线程以及sql执行线程表示开启成功 Slave_IO_Running: Yes Slave_SQL_Running: Yes

4.4. 查看主从同步效果

在主数据创建数据库test

CREATE DATABASE test

切换master, 查看master数据库的列表数据

±-------------------+ | Database | ±-------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | ±-------------------+

切换slave, 查看slave数据库的列表数据

±-------------------+ | Database | ±-------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | ±-------------------+

从上面可以看出在master数据库创建了test数据库之后,在slave也同样创建了数据库test

最新回复(0)