1、搭建主库
#创建目录
mkdir /data/mysql/master01
如果不存在:mkdir /data/mysql/master01 -p
#进入master01目录
cd /data/mysql/master01
#创建conf和data文件夹 用来存放配置和数据
mkdir conf data
#给文件夹授权
chmod 777 * -R
#创建配置文件
cd /data/mysql/master01/conf
vim my.cnf
#输入如下内容
[mysqld]
#开启二进制日志
log-bin=mysql-bin
#服务id,不可重复
server-id=1
#创建并运行容器
docker run --name=mysql-master01 -v /data/mysql/master01/data:/var/lib/mysql -v /data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
#创建同步账户以及授权 账户wlwpass 密码wlwpass
create user 'wlwpass'@'%' identified by 'wlwpass';
flush privileges;
解决错误:
修改my.conf文件
vim /data/mysql/master01/conf/my.conf
文件后添加:
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
#重启mysql服务并打印日志
docker restart mysql-master01 && docker logs -f mysql-master01
再重新flush privileges;
但是我还是报错,于是:
show variables like '%sql_mode%';
set sql_mode=(select replace(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
show master status;
发现File和Position为空值
发现日志没打开
vim /data/mysql/master01/conf/my.conf
log-bin配置项表示binlog的base name,产生的日志文件名称类似,mysql-bin.00001,mysql-bin.00002,mysql-bin.00003。
重启mysql
如果使用了GTID(global transaction ID),Executed_Gtid_Set表示已经在这个master上执行的GTID集合,与这个server上的系统变量gtid_executed 含义相同。
如果该server是slave,则执行show slave status中是输出的对应列Executed_Gtid_Set,含义也相同。
以上还是解决不了打开不了日志,用下面方法
docker exec mysql-master01 bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
docker exec mysql-master01 bash -c "echo 'server-id=1' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
成功!!!!!!!
#查看二进制日志相关的配置项 show global variables like 'binlog%';
#查看server相关的配置项 show global variables like 'server%';
主库配置结束
搭建从库
#创建目录
mkdir /data/mysql/slave01
cd /data/mysql/slave01
mkdir conf data
chmod 777 * -R
#创建配置文件
cd /data/mysql/slave01/conf
vim my.cnf
#输入如下内容
[mysqld]
server-id=2 #服务id,不可重复
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
docker run --name=mysql-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v
/data/mysql/slave01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=iot@2020
mysql:5.7
主的配置:
在从中配置映射:
CHANGE MASTER TO
master_host='10.2.10.67',
master_user='wlwpass',
master_password='wlwpass',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=154;