基于docker实现mysql主从复制

基于docker实现mysql主从复制

俩台机器,一主一从,主节点:10.0.8.17,从节点:10.0.8.14

基于docker部署mysql(主从节点都执行)

  • docker run -p 3306:3306 --name mysql -v /home/mysql/config:/etc/mysql -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -it --privileged=true mysql:8.0.18

    /etc/mysql:mysql默认配置文件路径/var/lib/mysql:数据存储位置MYSQL_ROOT_PASSWORD=123456 设置root用户密码--privileged=true 权限提升 真root权限
  • 修改配置文件

    首先 my.cnf,在[mysqld]下增加一行:skip-grant-tables;重启mysql:docker restart mysql进入mysql容器:docker exec -it mysql /bin/bash
  • 登录mysql修改密码开放远程连接权限

    mysql -uroot -p #提示输入密码,直接回车即可跳过验证FLUSH PRIVILEGES;#不执行这步会报错set password for root@localhost = '新密码';ALTER USER 'root'@'%' IDENTIFIED BY '新密码' PASSWORD EXPIRE NEVER; #修改加密规则 ,ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码' ; #更新一下用户的密码 grant all privileges on *.* to 'root'@'%' with grant option; #开放远程访问FLUSH PRIVILEGES;quit;
  • 再次修改配置

    首先 my.cnf,注释skip-grant-tables;重启mysql:docker restart mysql进入mysql容器:docker exec -it mysql /bin/bashmysql -uroot -p #提示需要密码验证,此时就不可以跳过了
  • 配置主从复制

  • 修改主节点配置

    mysql的配置文件都保存在 /etc/mysql下(容器内),映射到宿主机目录是 /home/mysql/configcd  /home/mysql/configvim my.conf #添加以下内容到[mysqld]###要给从机同步的库(如果不写,默认全部同步)##binlog-do-db=db01###不给从机同步的库(多个写多行)##binlog-ignore-db=mysql##binlog-ignore-db=information_schema##binlog-ignore-db=performance_schema##binlog-ignore-db=performance_schema##binlog-ignore-db=sys###自动清理 7 天前的log文件,可根据需要修改expire_logs_days=7#### 开启二进制日志功能,可以随便取(关键)log-bin=master-bin### 唯一标识server-id=888
  • 重启主节点mysql
    docker restart mysql

  • 修改从节点配置

    vim /home/mysql/config/my.conf #添加以下内容到[mysqld]  ,容器内对应路径/etc/mysql/my.conf##要给从机同步的库(如果不写,默认全部同步)#binlog-do-db=db01##不给从机同步的库(多个写多行)#binlog-ignore-db=mysql#binlog-ignore-db=information_schema#binlog-ignore-db=performance_schema#binlog-ignore-db=performance_schema#binlog-ignore-db=sys##自动清理 7 天前的log文件,可根据需要修改expire_logs_days=7### 开启二进制日志功能,可以随便取(关键)log-bin=slave-bin## 唯一标识server-id=666
  • 重启从节点mysql

  • 主从同步

  • 查看主节点状态

    --通过该命令可以查看master数据库当前正在使用的二进制日志及当前执行二进制日志位置show master status
  • 进入从节点开始同步

    change master tomaster_host='10.0.8.17',master_user='root',master_password='123456',MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=7475567 ;start slave;  ##slave:从节点 master:主节点   stop slave 停止slave。reset slave重启slave。 reset master重启mastermaster_host :主节点的地址,指的是容器的独立ipmaster_port :主节点的端口号,指的是容器的端口号(默认3306)master_user :用于数据同步的用户master_password :用于同步的用户的密码master_log_file :指定从节点从哪个日志文件开始复制数据,即上文中提到的 File 字段的值master_log_pos :从哪个 Position 开始读,即上文中提到的 Position 字段的值
  • 查看状态

    show slave status;如下所示即为成功,现在在主节点新建表或者增加数据,在从节点即可看到。
  • ©著作权归作者所有,转载或内容合作请联系作者
    【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
    平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

    相关阅读更多精彩内容

    友情链接更多精彩内容