MySQL主从配置说明文档

该文档的MySQL数据库基于Docker设置两个实例,MySQL-Master和MySQL-Slave两个。

在使用Navicat for MySQL远程连接实例时,无法连接成功,需要进行如下设置:

 

 

命令:docker exec -it mysql-master bash

登录MySQL:root@1a435d89b15f:/# mysql -uroot -proot123

进行如下设置:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123';

即可进行登录。

 

 

主数据库配置:

docker exec -it 627a2368c865[容器的id] /bin/bash或

docker exec -it mysql-master[容器的名称] /bin/bash命令进入到Master容器内部。

 

cd /etc/mysql切换到/etc/mysql目录下

vi my.cnf 对my.cnf进行编辑

报出bash: vi: command not found,

需要在docker容器内部自行安装vim

先使用apt-get update命令

再使用apt-get install vim命令安装vim

 

 

在my.cnf中新增:

[mysqld]

## 同一局域网内注意要唯一

server-id=100 

## 开启二进制日志功能,可以随便取(关键)

log-bin=mysql-bin

 

完成后,使用service mysql restart完成重启使生效。

重启mysql服务时会使得docker容器停止,需启动容器:docker start mysql-master

 

在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

 

从数据库配置:

操作同上,进入容器内部,修改my.cnf文件,文件修改如下:

 

链接Master(主)和Slave(从):

在Master进入mysql,执行show master status;

File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。

 

进入Slave 中mysql,执行如下命令:

change master to master_host='172.17.0.2', master_user='slave', master_password='root123',

master_port=3306, master_log_file='binlog.000003', master_log_pos= 437,

master_connect_retry=30;

命令说明:

1、master_host:Master的地址,指的是容器的独立ip;可通过如下命令获取

docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-master

docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-slave

2、master_port:Master的端口号,指的是容器的端口号(内部的端口,不是外部的)

3、master_user:用于数据同步的用户

4、master_password:用于同步的用户的密码

5、master_log_file:指定 Slave 从哪个日志文件开始复制数据,上文中的 File 字段的值

6、master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

7、master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

 

show slave status \G;--用于查看主从同步状

一般SlaveIORunning、 SlaveSQLRunning 都是No,使用start slave开启主从复制过程,若都为yes表明复制开始

 

 

若使用start slave开启主从复制过程后,如果SlaveIORunning:Connecting,连接出现问题,可进行修改,之后执行如下命令:

stop slave;

change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=155, master_connect_retry=30;

start slave;

 

可以在slave的mysql中测试同步账号连接master数据库

root@9d8270cf51b4:/# mysql -uslave -h172.17.0.2 -p -P3306

可连接则证明账号密码无误

 

在start slave 时提示Relay log 导致复制启动失败,可进行如下解决:

reset slave;

start slave;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值