mysql集群+docker镜像+主从复制

1.主从复制原理:

在这里插入图片描述
mysql主(master)从(slave)复制的原理:

(1)master讲数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制事件,binary log events)

(2)slave讲master的binary log events拷贝到他的中继日志(relay log)

(3)slave重做中继日志的事件,将改变反映它自己的数据(数据重演)

总结:主库(master)中有一个二进制文件通过I/O线程关联到从库中的二进制二件,从库中通过SQL线程来完成对主库的复制。

主从配置注意点:

主DBserver和从DBserver数据库的版本一致

主DBserver和从DBserver数据库一致

主DBserver尅器二进制日志,主DBserver和从DBserver的server_id都必须唯一

2.搭建主库:

1)创建目录,并设置权限:

mkdir /data/mysql/master01 -p

cd /data/mysql/master01

mkdir conf data

chmod 777 * -R

或者直接使用xftp进行创建:
在这里插入图片描述
2)配置文件的创建:

cd /data/mysql/master01/conf

vim my.cnf

下面是需要在my.cnf里输入的内容:

[mysqld]

log-bin=mysql-bin #开启二进制日志

server-id=1

sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’ #防止出现1055的错误

3)创建容器:

docker create --name percona-master01 -v /data/mysql/master01/data:/var/lib/mysql -v /data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23

注:这里主要是用docker镜像来完成的,直接使用压缩包也是可以完成的。
在这里插入图片描述
安装完成

4)启动docker容器:

docker start percona-master01 && docker logs -f percona-master01

注意点:在启动docker的时候,会出现卡顿的现象,当出现Version: ‘5.7.23-23-log’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 Percona Server (GPL), Release 23, Revision 500fcf5就可以直接ctrl+c结束就可以了。

5)通过数据库的连接,创建同步账户以及权限:

create user ‘此处可按照需求填写’@’%’ identified by ‘此处可按照需求填写’;

grant replication slave on . to ‘此处可按照需求填写’@’%’;

flush privileges;

注意:上面要求按照要求填写的一定要一致
在这里插入图片描述6)因为设置了权限,要重新启动docker容器:

docker restart percona-master01 && docker logs -f percona-master01

7)查看master的状态(在数据库中操作):

show master status;
在这里插入图片描述
8)查看二进制日志相关的配置项:

show global variables like ‘binlog%’;
在这里插入图片描述
9)查看server相关的配置项:

show global variables like ‘server%’;

下面的server_id只有出现的时候,才能说明主库安装成功
在这里插入图片描述

3.搭建从库:

1)创建目录:

mkdir /data/mysql/slave01

cd /data/mysql/slave01

mkdir conf data

chmod 777 * -R

2)创建配置文件,并添加内容:

cd /data/mysql/slave01/conf

vim my.cnf

–添加到上面的文件里–

[mysqld]

server-id=2 #服务 id,不可重复

sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’ #防止出现1055的错误

3)创建mysql容器:(注意端口号:)

docker create --name percona-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v /data/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23

4)启动docker:

docker start percona-slave01 && docker logs -f percona-slave01

5)设置master相关信息:(在数据库中设置)

set sql_mode = ‘’;

set sql_mode = ‘NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES’;

CHANGE MASTER TO

master_host=‘192.168.80.139’, #此处的IP地址需要设置成自己的LinuxIP地址

master_user=’***’, #就是主库中设置的权限的名称

master_password=’***’, #就是主库中设置的权限的名称

master_port=3306, #主库设置的端口号

master_log_file=‘mysql-bin.000004’, #此处和下面可以在主库中通过show master status;查询到

master_log_pos=154;

6)启动同步:(这个步骤非常重要,是实现主从复制的关键,一定要开启)

start slave;

7)查看master状态:(在主库中进行查询)

show slave status;

注意:下面红框内的必须要都为YES,如果没有或者只有一个的话,只能从第一步重来。
在这里插入图片描述
8)测试:
在这里插入图片描述
在主库中创建之后,可以直接刷新从库,如果从库出现了和主库创建的数据库一致,就表明mysql集群安装成功。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值