Mysql主从复制搭建

database

1.mysql主库会把所有的写操作记录在binlog日志中,并且生成log dump线程,将binlog日志传给从库的I/O线程,从库生成两个线程,一个是I/O线程,另外一个是SQL线程。

主将更改操作记录到binlog里从将主的binlog事件(sql语句) 同步本机上并记录在relaylog里从根据relaylog里面的sql语句按顺序执行。

2.主从复制步骤:

  • 确保从数据库与主数据库里的数据一致
  • 在主数据库里创建一个同步账户授权给从数据库使用
  • 配置主数据库(修改配置文件)
  • 配置从数据库(修改配置文件)

  • 一主一从
  • 主主复制
  • 一主多从---扩展系统读取的性能,因为读是在从库读取的
  • 多主一从---5.7版本开始支持
  • 联级复制

3.需求:

搭建两台MYSQL服务器,一台作为主服务器,一台作为从服务器,主服务器进行写操作,从服务器进行读操作。

4.环境说明【使用docker启动两个】

名称	Ip	Port

M1 192.168.149.128 3307

M1S1 192.168.149.128 3308

5.安装【阿里云需要放掉端口3307,3308,本机关闭防火墙即可】

docker run --name M1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker run --name M1S1 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

6.修改配置文件

*** 一、将容器里面的配置文件复制出来,主要修改服务器的配置。  

# 1.在root目录下创建一个mysqlms的目录存放从docker容器里面复制过来的配置文件。

mkdir mysqlms

docker cp M1:/etc/mysql/conf.d/docker.cnf m1.cnf 

docker cp M1S1:/etc/mysql/conf.d/docker.cnf m1s1.cnf

# 2.配置主机:主机里面要记录sql 语句,以后从机会把该sql 语句偷过去

vi m1.cnf

server-id=1

log-bin=master.bin

# 3.配置从机:

vi m1s1.cnf

server-id=2

*** 二、配置文件修改后,复制到容器里面

docker cp m1.cnf M1:/etc/mysql/conf.d/docker.cnf

docker cp m1s1.cnf M1S1:/etc/mysql/conf.d/docker.cnf

*** 三、重启

docker restart M1 M1S1

7.配置主机:执行sql

7.1 进入主机,执行配置

docker exec -it M1 bash

mysql -uroot -p123456

7.2 创建账户

create user "rep"@"%" identified by "123456";

7.3 给该用户授予权限:

grant replication slave on *.* to "rep"@"%";

flush privileges

7.4  至此:M1 里面已经创建了一个用户:rep 123456 拥有所以库,所有表replication slave  

尝试使用M1 里面的rep 用户登录:

8.配置从机:执行sql

8.1 配置登录

docker exec -it M1S1 bash;

mysql -u root -p123456;

8.2 从机执行

change master to master_host="127.0.0.1",master_port=3307,master_user="rep",master_password="123456",master_log_file="master.000001",master_log_pos=745;

注意:master_log_file:该文件具体叫什么名称,需要从主机里面去看看:

进入M1 里面使用root 用户登录M1,执行下面的sql:

show master status;

8.3 启动主从,查询状态 有两个yes

start slave;

show slave status G;

8.4 规范如下:

1 只能在主机里面执行DML 语句,绝对不能在【从机】里面执行DML语句【会破坏主从】

2 只在从机里面可以执行查询语句

3 主机只有一台,但是从机可以有多台

9.测试

在M1 里面创建数据库,看M1S1 有没有复制过去

以上是 Mysql主从复制搭建 的全部内容, 来源链接: utcz.com/z/532890.html

回到顶部