ubuntu mysql主从配置_ubuntu docker中mysql8主从设置教程

前提条件:

(1).先确保已经安装好了两个mysql容器. 我系统是用了ubuntu20.4,容器是用dnmp集成安装环境创建的.

如果你和我一样用的是dnmp,你应该知道怎么修改docker-compose.yml文件才能创建两个mysql的容器,下面是我修改的,其实就是照着原有的mysql节点写的,改容器名字,volumes

d58960576737400cbbfc6de96eb38062.png

(2)mysql配置文件修改. 我把mysql容器作为主,mysql_2容器作为从

主配置文件mysql.cnf添加了

#主从配置相关

log_bin=/var/lib/mysql/mysql-bin.log

server-id=1

#如果复制多个数据库,重复设置这个选项即可,从机设置replicate_do_db

binlog_do_db=abc

#忽略同步的数据库也可用,从机设置replicate_ignore_db

binlog-ignore-db=mysql

从配置文件mysql_2.cnf

#从机设置

log_bin=/var/lib/mysql/mysql-bin.log

server-id=2

replicate-do-db=abc #待同步的数据库

replicate-ignore-db=mysql #不同步的数据

如图:

03c1e5a4d1fa24746ac7daef47b07e18.png

(3).手动同步一次数据库. 我的两个容器都有一个新建的数据库abc,都是没有任何表的就不同步了.同步也很简单,借助navicat的数据传输很容易就做到

9593fc10e0f7f4a7ab53bb7282ada8f5.png

(4).记录主机的ip ,我用sudo docker inspect mysql|grep IPAddress查看了作为主机的mysql容器的ip

172.18.0.2就是我要的

aeaa29757199f376fe604ea8d20a9fbd.png

第一部分:主机器的设置

(1).登录主机的mysql新建同步用的账户,查看master信息

用root登陆主机,依次执行下面的sql

create user 'repl'@'%' identified with mysql_native_password by 'repl123456';

grant replication slave on *.* to 'repl'@'%';

flush privileges;

这里的%是主机的ip,这里我完全可以换成 172.18.0.2

(2)测试刚生成的同步账户

1e00f39556aa975797f01cf4ca55bbc8.png

可以看出同步用的账户是没问题的,顺便罗嗦一下每做一步关键的操作要核实是否生效了,不然到了最后一大堆的问题缠绕你,需要一步步的排查是很痛苦的.

第二部分:从机器的设置

(1).测试同步用的账户

进入从机器的mysql 容器mysql_2

402940724845d174fd0cc745922ec0cf.png

说明在从机器上使用同步用的账户是没问题的,要注意的是这里的ip是主机器的ip,这一步没通过的话会有问题 Last_IO_Error: error connecting to master 'replication@…

(2).实现主从同步

用从机mysql_2的root登录,执行

change master to

master_host='172.18.0.2',

master_user='repl',

master_password='repl123456',

master_log_file='mysql-bin.000007',

master_log_pos=811;

#这里的master_user,master_password是之前创建的同步用的账户和密码

#master_host是主机器的ip

#master_log_file和master_log_pos是第一部分(1) 里记录的File和Position

执行start slave; #开启从库 (stop slave:关闭从库)

执行show slave status; #检查服务器状态

看到Slave_IO_State为Waiting for master to send event

Slave_IO_Running为Yes

Slave_SQL_Running为Yes基本可以断定设置成功了

(3)验证主从同步是否生效

在主库建个表试试

create table `abc`.`tb` (

`id` int(10) not null,

`content` varchar(255) null,

primary key (`id`)

);

dc1f72cf7c476df7941f29b243668465.png

右边显示的从机的,刚开始执行show tables是空的,主机上建表后,从机上也就有表了,说明同步是成功的!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值