从 Docker 下拉取最新的 Mysql, 运行配置 1. 打开命令符, 拉取镜像文件
2. 运行镜像创建两个数据库: mysql-1为主库(33061) mysql-2为从库(33062)
–name 后面跟着的是容器的名字,自己可以自定义
-p 指的是端口映射 本机端口:容器端口,本人选用的本机端口是3306,可以根据自己情况选择端口
-e 指的是启动参数,这个MYSQL_ROOT_PASSWORD参数必须要传,否则等下登录不了MySQL, MYSQL_ROOT_PASSWORD意思是root用户的密码,大家可以自定义
-d 代表后台启动 后面跟的就是镜像的名字,因为之前拉取的时候就是docker pull mysql,所以这个写mysql,如果是 docker pull mysql:5.7 那么这里就是 -d msyql:5.7
1 2 3 4 5 docker run --name mysql-1 -p 33061 :3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8 .0 --character-set -server=utf8mb4 --collation-server=utf8mb4_unicode_ci docker run --name mysql-2 -p 33062 :3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8 .0 --character-set -server=utf8mb4 --collation-server=utf8mb4_unicode_ci
3. 查看 Docker 镜像是否运行成功
4. 在数据库连接上mysql 1 2 3 4 5 6 7 8 9 10 # 连接名 name : mysql-1 # 主机 localhost : 127.0 .0 .1 # 端口号 port : 33061 # 用户名 username : root# 密码 password : root
主机配置 1. 在主机下配置用户, 授权给从机服务器 创建用户 打开mysql-1 console, ‘rep1’为从机登录用户名, 密码为 root, ‘%’代表不需要限制登录地址(也可另外设置)
1 CREATE USER 'rep1'@'%' IDENTIFIED BY 'root';
用户授权
1 GRANT Replication Slave ON *.* TO 'rep1'@'%';
2. 修改主库配置文件 桌面新建一个文件 “mysqld.cnf”
[mysqld]
log-bin=/var/lib/mysql/binlog
server-id=1
binlog-do-db = testdb
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
命令符中进入桌面, 把文件上传到 Docker配置里
1 docker cp ./mysqld.cnf mysql-1 :/etc/mysql/mysql.conf.d/
重新启动 Mysql-1 服务端:
3. 确认主库配置是否成功 打开Nacvicat Premium, mysql-1服务端中: console查询:
binlog.000001
154
testdb
从机配置 1. 修改从库配置文件 桌面新建一个文件 “mysqld.cnf” 注意从机这里只需要配置一下 server-id 即可。
[mysqld]
server-id=2
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
2. 命令符中进入桌面, 把文件上传到 Docker配置里 1 docker cp ./mysqld.cnf mysql-2 :/etc/mysql/mysql.conf.d/
重新启动 Mysql-2 服务端:
3. 进入 Mysql-2容器 1 docker exec -it mysql-2 /bin/bash
4. 登录 Mysql
登陆密码Enter password: root
5. 使用命令配置从机 1 change master to master_host='192.168.101.218' ,master_port=33061 ,master_user='rep1' ,master_password='root' ,master_log_file='binlog.000001' ,master_log_pos=154 ,get_master_public_key=1 ;
这里配置主机地址、端口以及从机登录主机的用户名和密码,注意最后两个参数要和 master 中的保持一致。
6. 启动slave进程
查看从机状态:
下面两项值都要为 YES,则表示配置正确:
Slave_IO_Running: Yes Slave_SQL_Running: Yes
至此,配置完成,主机创建库,添加数据,从机会自动同步。 如果这两个有一个不为 YES ,表示主从环境搭建失败,此时可以阅读日志,查看出错的原因,再具体问题具体解决。