Docker mysql主从同步

1. 在主节点注册一个账号,用于子节点访问主节点

#mysql 1主2从,先创建主节点 ,注意 \ 后面不要带空格

docker run --name mysql-m \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
-d mysql:5.7

#开机自启

docker update mysql-m --restart=always

2. 开启二进制日志(mysql8 默认开启,我的是mysql5.7需要手动开启) 

在挂载配置目录上创建一个配置文件 my.cnf

[mysqld]
# 随机数
server-id=1
# 日志格式化
binlog_format=STATEMENT
# 开启binlog
log-bin=/var/lib/mysql/mysql-bin

#修改完配置文件重启生效

docker restart mysql-m

3. 在主服务器为从服务器开通1个访问账号salve01

create user 'slave01'@'%';

# 为账号设置一个密码为'root'
alter user 'slave01'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

# 授予该账号可以复制主节点的所有库与所有表的权限(*.*)
grant REPLICATION SLAVE ON *.* TO 'slave01'@'%';

# 刷新权限
 flush PRIVILEGES;

# 进入mysql容器,登录mql 执行

show master status;

注意!  里面的信息随着master 数据修改而不断变化,后面配置主从关系时,一定要让master停止写操作,实际工作需要锁库(忽略。自己百度),因为我是自己测试环境,自己玩,没有写操作  binlog就不会发生变化

1.记住/复制/截图/主节点的binlog文件所在位置!后面从节点要读它   (可能会变动)

2.记住/复制/截图/主节点的binlog文件所在位置!后面从节点要读它   (可能会变动)

3.记住/复制/截图/主节点的binlog文件所在位置!后面从节点要读它   (可能会变动)

mysql-bin.000002   154

3. 准备2个从节点,注意 \ 后面不要带空格,根创建主节点一样的

sudo docker run --name mysql-s1 \
-v /usr/local/mysql-s1/data:/var/lib/mysql \
-v /usr/local/mysql-s1/conf:/etc/mysql/conf.d \
-v /usr/local/mysql-s1/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3307:3306 \
-d mysql:5.7


sudo docker run --name mysql-s2 \
-v /usr/local/mysql-s2/data:/var/lib/mysql \
-v /usr/local/mysql-s2/conf:/etc/mysql/conf.d \
-v /usr/local/mysql-s2/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3308:3306 \
-d mysql:5.7

#开机自启

docker update mysql-s1 --restart=always

docker update mysql-s2 --restart=always

!!!!!!!server-id 随意就是3个节点不能相同

sql-s2/my.cnf :

[mysqld]
server-id=2 

sql-s2/my.cnf : 

[mysqld]
server-id=3 

 docker restart mysql-s1

 docker restart mysql-s2

# 两个从节点再分别执行一下,密码校验方式根主节点一样的(特别是 mysql8+

alter user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

 4. 配置主从关系,在从节点s1、s2 执行

# 红色是主节点的binlog位置,(记住/复制/截图/主节点的binlog文件所在位置!)

CHANGE MASTER TO
MASTER_HOST='192.168.208.131',MASTER_PORT=3306,
MASTER_USER='slave01',MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=154

5. 从节点开始连接主节点同步数据

START SLAVE;

SHOW SLAVE STATUS\G

踩坑!!!!!原因是我删除了主库中从库没有的数据库demo

stop slave;

set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

start slave;

show slave status\G

回过头再看看主节点的binlog变化

 

相关推荐

  1. Redis主从同步

    2024-05-16 06:28:03       18 阅读
  2. mysql主从同步

    2024-05-16 06:28:03       5 阅读
  3. mysql的主从同步

    2024-05-16 06:28:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-16 06:28:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-16 06:28:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-16 06:28:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-16 06:28:03       18 阅读

热门阅读

  1. 阅读笔记——《代码整洁之道》ch2

    2024-05-16 06:28:03       8 阅读
  2. ifconfig 无输出

    2024-05-16 06:28:03       11 阅读
  3. pthread_setname_np 线程设置名字 c++

    2024-05-16 06:28:03       12 阅读
  4. 百度:文心大模型日均处理Tokens文本已达2490亿

    2024-05-16 06:28:03       11 阅读
  5. PDF 生成目录和页码 点击跳转(新)

    2024-05-16 06:28:03       12 阅读
  6. Azure SQL server database 权限管理-赋予权限

    2024-05-16 06:28:03       17 阅读
  7. STM32多个外部中断可能共享同一个中断向量

    2024-05-16 06:28:03       10 阅读
  8. STM32 HAL TM1637使用

    2024-05-16 06:28:03       11 阅读
  9. Nginx-04-Docker Nginx

    2024-05-16 06:28:03       12 阅读