操作系统 | CentOS7.6 x64 |
---|---|
Docker版本 | 1.13.1 |
使用yum安装docker
yum install -y docker
查看是否安装docker
yum list installed | grep docker
启动docker
systemctl start docker
查看docker是否启动成功
systemctl status docker
成功如图
拉取mysql镜像,可以使用docker pull mysql:latest获取最新mysql镜像
docker pull mysql:5.7
查看镜像是否拉取成功
docker images
创建主数据库
docker run --name mysql-master -p 3337:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
创建从数据库
docker run --name mysql-slave -p 3338:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
查看dcoker容器
docker ps -a
进入master容器
docker exec -it mysql-master /bin/bash
登录mysql
mysql -u root -p123456
修改root权限,可以通过任何客户端连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
修改 MySQL 配置文档 /etc/mysql/mysql.conf.d/mysqld.cnf
,在 [mysqld]
段添加以下配置:
log-bin=mysql-bin //[必须]启用二进制日志
server-id=1 //[必须]服务器标识ID,每台服务器唯一
你可能会遇到bash: vi: command not found,这是因为vim没有安装,可以使用如下命令安装:
apt-get update
apt-get install vim
进入slave容器
docker exec -it mysql-slave /bin/bash
登录mysql
mysql -u root -p123456
修改root权限,可以通过任何客户端连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
修改 MySQL 配置文档 /etc/mysql/mysql.conf.d/mysqld.cnf
,在 [mysqld]
段添加以下配置:
log-bin=mysql-bin //[必须]启用二进制日志
server-id=2 //[必须]服务器标识ID,每台服务器唯一
记得在配置完主数据和从数据库后要重启数据库,红线处就是容器ID
docker restart <容器 ID> 重启容器
连接主数据库,查看数据库状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
记录 File 的值和 Position 的值,等会配置 slave 服务器的时候要用
连接从数据库,配置主从复制
mysql>change master to
master_host='x.x.x.x', // 这里填 master 主机 ip
master_user='root',
master_log_file='mysql-bin.000001', // 这里填写 File 的值
master_log_pos=154, // 这里填写 Position 的值。
master_port=3337,
master_password='123456';
Query OK, 0 rows affected, 2 warnings (0.03 sec)
mysql> start slave; // 启动从服务器复制功能
Query OK, 0 rows affected (0.01 sec)
如果不小心配置错, 输入 mysql> stop slave; 然后再录入一遍就可以了。
查看主从连接状态,图中红色框内两个必须位yes才表示成功
show slave status\G
然后你就可以使用navicat连接主从数据库,记得连接数据库的端口为你3306映射到的端口号。连接成功后,你操作主数据库,你会发现从数据库也进行了同样的操作