1、新建文件夹data 和主数据库数据文件夹mysql3308,从数据库数据文件夹mysql3307
两个my.cnf文件放在conf文件夹下
1.配置文件主数据库
docker run -d -p 3308:3306 --privileged=true -v /data/mysql3308/log:/var/log/mysql -v /data/mysql3308/data:/var/lib/mysql -v /data/mysql3308/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name=mysql-master mysql
主MySQL配置文件my.cnf
## 默认编码格式
[client]
default_character_set=utf8
[mysqld]
## 设置服务端编码格式
collation_server = utf8_general_ci
## 设置编码格式
character_set_server = utf8
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
会遇到问题
Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.
解决:
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
show master status;
2、从数据库
docker run -d -p 3307:3306 --privileged=true -v /data/mysql3307/log:/var/log/mysql -v /data/mysql3307/data:/var/lib/mysql -v /data/mysql3307/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name=mysql-slave mysql
从MySQL配置文件my.cnf
## 默认编码格式
[client]
default_character_set=utf8
[mysqld]
## 设置服务端编码格式
collation_server = utf8_general_ci
## 设置编码格式
character_set_server = utf8
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
这里的ip地址是你环境里的局域网ip
change master to master_host='127.0.0.1', master_user='slave', master_password='123456', master_port=3308, master_log_file='mall-mysql-bin.000003', master_log_pos=995, master_connect_retry=30;
Query OK, 0 rows affected, 10 warnings (0.02 sec)
show slave status \G;
mysql> start slave;
测试一下
主数据库新建
#创建db01库
CREATE DATABASE test;
#进入db01库
use test;
#创建表t1
CREATE table bools(id int ,book varchar(20),price decimal(10,2));
#新增数据
INSERT into bools VALUES (1,"aa",33);
#新增数据
#查询t1表
SELECT * from bools;
从数据库查询