1. 下载镜像(最好与MySql的版本一致)
这里我的MySql是5.19版本的
docker pull mysql:5.7.19
2. 创建文件目录结构
那个master目录如果不在Docker配置主服务器的话就没有用到,可不创建
my.cnf 配置文件里修改内容
[mysqld]
server_id = 2
log-bin= mysql-bin
read-only=1
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
3. 启动从服务器镜像容器:
docker run --name mysql-slave -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=‘Your password’ -v /Users/mac/Desktop/docker_mysql/slave/data:/var/lib/mysql -v /Users/mac/Desktop/docker_mysql/slave/conf/my.cnf:/etc/mysql/my.cnf -v /Users/mac/Desktop/docker_mysql/slave/mysql-files:/var/lib/mysql-files mysql:5.7.19
后面三个-v映射的本机路径为刚才创建的目录结构的路径
4. 测试从服务器是否创建成功
/usr/local/mysql/bin/mysql -uroot -p‘Password’ -h 192.168.1.6 --port=3308
本机ip 主服务器端口
show databases;
输入后观察到有4个初始数据库就没有问题了
5. 收集主机数据库服务器原有数据
/usr/local/mysql/bin/mysqldump -uroot -p‘Password’ --all-databases --lock-all-tables > ~/Desktop/master_db.sql
lock类似在从服务器收集数据时候,主服务器不要操作所有的表,好像是这个意思~~~~~
收集位置为master_db.sql
6. 将数据复制到从机数据库服务器
/usr/local/mysql/bin/mysql -uroot -‘Password’ -h 192.168.1.6 --port=3308 < ~/Desktop/master_db.sql
7. 创建从机账号
7.1 登录到主机
```bash
/usr/local/mysql/bin/mysql -uroot -p'Your password'
```
7.2 创建账号
```bash
grant replication slave on *.* to 'slave'@'%' identified by 'slave';
```
创建一个名为slave的从机账号,密码为slave,可以访问主机的所有表和数据库
7.3 刷新权限
```bash
flush privileges;
```
8. 进行主从同步,连接主机
8.1 显示主机状态
```bash
show master status;
```
8.2 丛机中进行该操作 主从同步
change master to master_host='192.168.1.6', master_user='slave',master_password='slave',master_log_file='mysql-bin.000021',master_log_pos=18990,master_port=3306
ip 地址
访问主机的名字为上面定义的名字
访问主机的密码为上面定义的密码
master_log_file
master_log_pos 为上图中的数据
表示从机从改位置开始读取主机的日志就可以和主机保持同步了
8.3启动从机服务
start slave;
显示从机状态
show slave status;
观察到下图就是配置成功了
![请添加图片描述](https://img-blog.csdnimg.cn/3b18437765584141b7449ab54b4ee8d6.png
否则重新来过~~~
stop slave;