Docker Mysql 主从复制配置

docker mysql主从复制

  1. 拉取mysql镜像,这里使用5.7

    docker pull mysql:5.7
    
  2. 创建主mysql容器,端口号为3306

    docker run --name mysql -v /mysql/data:/var/lib/mysql -v /mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql:5.7
    
  3. 创建从mysql容器,端口号为3307

    docker run --name mysql_slave -v /mysql_slave/data:/var/lib/mysql -v /mysql_slave/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -e MYSQL_ROOT_PASSWORD=123456 -d -p 3307:3306 mysql:5.7
    
  4. 进入主mysql配置目录(/mysql/conf)修改配置,如果没有mysqld.cnf文件,创建该配置文件,打开修改。server_id是唯一的,需要注意,修改后重启容器

    [mysqld]
    server_id = 1
    log-bin=mysql-bin
    read-only=0
    replicate-ignore-db=mysql
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    !includedir/etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
  5. 进入从mysql配置目录(/mysql/conf)修改配置,如果没有mysqld.cnf文件,创建该配置文件,打开修改,修改后重启容器

    [mysqld]
    server_id = 2
    log-bin=mysql-bin
    read-only=1
    replicate-ignore-db=mysql
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    !includedir/etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
  6. 登录主mysql,在主mysql中创建同步账户,用户名为syncuser,密码123456

    docker exec -it bash
    mysql -u root -p
    #回车后输入密码123456
    

    登录mysql,执行以下语句,创建同步账户

    GRANT REPLICATION SLAVE ON *.* to 'syncuser'@'%' identified by'123456';
    	```
    
  7. 查看主mysql状态,记住file和position的值

    show master status;
    

    在这里插入图片描述

  8. 登录从mysql,设置同步主库连接信息

    docker exec -it mysql_slave bash
    mysql -u root -p
    #回车后输入密码123456
    

    执行以下语句,设置同步信息

    change master to
    master_host='192.168.2.165',master_user='syncuser',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=1389,master_port=3306;
    --启动同步服务
    start salve;
    show slave status\G;
    

    查询结果,圈出部分是yes,表明已成功在这里插入图片描述

  9. 接下来就在主库中,创建数据库,表,写入数据等操作,进从库中看是否已经同步

mysql主从复制原理

主库(master)开启bin-log,是二进制的日志文件,记录数据库的操作
主库开启IO进程,从库开启IO进程和SQL进程
从库通过IO线程连接主库,获取主库bin-log某一位置之后的数据
从库接收到数据之后,将接收到的日志内容依次添加到从库的的relay-log文件的最末端,并将主库bin-log的文件名和位置记录到master-info文件中
从库的SQL线程,实时检测relay-log中是否有新增加了内容,会解析relay-log的内容,并在从库中执行,完成同步

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值