docker 安装 mysql
拉取mysql镜像
本人使用mysql版本是5.7
docker pull mysql:5.7
拉取成功后,查询看镜像 docker images 命令
创建mysql容器
因为原来Linux系统3306的端口已被占用,创建主库时,使用3307的端口,从库使用3308端口
#启动主库,配置root登录密码123456
docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
#启动从库,配置root登录密码123456
docker run --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
配置主从数据库
- 从docker进入主库容器
docker exec -it mysql-master /bin/bash
- 连接mysql,修改 root 可以通过任何客户端连接
mysql -u root -p123456
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
执行以上命令后,使用navicat连接一下
- 修改主库mysql配置
vim /etc/mysql/mysql.conf.d/mysqld.cnf
注意:docker没有安装vim命令,执行以下命令
#更新
apt-get update
#安装vim
apt-get install vim
- 配置内容 在mysqld.cnf中 [mysqld]添加以下配置
log-bin=mysql-bin #日志
server-id=100 # 服务器id,自定义保证唯一
- 进入从库配置
- 重复主库配置步骤
docker exec -it mysql-slave /bin/bash
mysql -u root -p123456
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
- 修改从库配置
vim /etc/mysql/mysql.conf.d/mysqld.cnf
- 配置内容 在mysqld.cnf中 [mysqld]添加以下配置
log-bin=mysql-bin #日志
server-id=101 # 服务器id,自定义保证唯一
配置主从复制
- 在主数据库master查看数据库状态
mysql> show master status;
查询 File 的值和 Position 的值,配置从库时使用
- 配置主从复制
- 进行从库mysql
mysql>change master to
master_host='192.168.81.131',
master_user='root',
master_log_file='mysql-bin.000002',
master_log_pos=694,
master_port=3307,
master_password='123456';
master_host=‘x.x.x.x’ // 这里填 主机 ip
master_log_file=‘mysql-bin.000002’, // 这里填写 File 的值
master_log_pos=694,// 这里填写 Position 的值。
#开启复制功能 ,start slave不带任何参数,表示同时启动I/O 线程和SQL线程。
mysql> start slave;
stop slave #停止主从复制功能
- 重启一下主从数据库
docker stop mysql-master
docker start mysql-master
docker stop mysql-slave
docker start mysql-slave
- 在从库数据中查询一下主从连接状态
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
显示以上结果就成功了
注意: 出现这情况Slave_IO_Running: Connecting
1.检查防火墙端口是否打开
firewall-cmd --list-ports ##查询开放端口
2.进行主数据执行:
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456';
验证是否配置成功
可以在主库master创建一个新库,再创建表,插入数据,再查询从库是否已复制成功