Mysql | Docker搭建MySQL服务 (包括主从复制)

Docker搭建MySQL服务 (读写分离之主库搭建)

提示:前要开启docker 不知道移步docker分类入门

  • 拉取镜像docker pull percona:5.7.23

(percona:5.7.23)Orcal 发布的mysql版本 理解为mysql的一个分支就好了

  • 检查镜像 docker images
  • 新建数据,配置文件存放目录,建立文件映射,后期容易修改配置文件
  mkdir /data/mysql/conf -p
  mkdir /data/mysql/data
  ##返回根目录 并对data文件夹加入写权限
  chmod 777 data -R
  • ll目录这样显示
  • 在conf下新建配置文件my.cnf,并输入
    #建议将注释删除
    [mysqld]
    #开启二进制目录文件
    log-bin=mysql-bin
    #服务id不可重复
    server-id=1
    #解决打印台报错 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
    
  • 创建容器
    docker create --name percona-master01 -v /data/mysql/master01/data:/var/lib/mysql -v /data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23

注意端口号映射 -p 3306:3306(前面为机器端口号,后面为docker端口号)

  • 启动容器
    docker start percona-master01 && docker logs -f percona-master01
  • Navicat 连接 刚刚的 mysql(主机名是之前设置过hosts映射的,没设置就写ip地址)
    image
  • mysql创建用户
--用户名@mysql位置地址
CREATE USER 'zhy'@'%'IDENTIFIED BY 'zhy';
grant replication slave on *.* to 'zhy'@'%';
FLUSH PRIVILEGES;

Navicat 窗口报错解决

  • sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

  • docker 重新启动 docker restart 容器名 (后面可选)&& docker logs -f 容器名

  • Navicat show master status; 查看master状态

    日志文件 与 起始位置

  • 查看二进制日志和文件 show GLOBAL VARIABLES like 'binlog%';

  • 查看server相关的配置信息 show GLOBAL VARIABLES LIKE 'server%';

    前面配置过server-id为1 这里看到说明配置文件生效了


Docker搭建MySQL服务 (读写分离之从库搭建)

  • 搭建过程与主库大致相同,配置和文件路径略有区别
  • 新建路径 /data/mysql/slave01 在下面创建 confdata两个目录 用来映射docker目录
  • 对两个文件夹授权chmod 777 *-R 意义在于任意用户可以写
  • 在conf下创建my.cnf
##内容如下
[mysqld]
log-bin=mysql-bin
server-id=2 ##注意从节点不能和主节点id相同
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'                    
  • 创建容器 docker create --name percona-slave01 -v /data/mysql/slave01/data/:/var/lib/mysql -v /data/mysql/slave01/conf:/etc/my.cnf.d -p 3317:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
  • 启动容器 docker start percona-slave01 && docker logs -f percona-slave01
  • Navicat 连接 设置主从关系
CHANGE MASTER TO
master_host='hadoop102',
master_user='zhy',
master_password='zhy',
master_port=3306,
--与上文种主节点1的 状态查询文件与位置一致
master_log_file='mysql-bin.000005',
master_log_pos=154;

  • 启动从服务 START SLAVE; 可以实现主从复制

修改从服务配置 需要停止服务 stop slave;

posted @ 2021-08-18 23:10  —清风碎心—  阅读(63)  评论(0编辑  收藏  举报