从库配置
1、创建文件夹
mkdir /data/mysql/slave01 -p
2、进入文件夹
cd /data/mysql/slave01
3、在文件夹内创建继续创建文件夹
mkdir conf data
4、授权(涉及到docker权限问题,所以要授权)
chmod 777 * -R
5、创建一个my.cnf文件
vim my.cnf
6、插入数据
[mysqld]
log-bin=mysql-bin
server-id=2
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
7、在docker内创建镜像
docker create --name percona-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v /data/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 percona:5.7.23
8、启动容器
docker start percona-slave01 && docker logs -f percona-slave01
为了在实现主从复制,需要在主数据库创建用户并授权
以下是在navicat中实现,事先需要连接对应的服务器中的数据库
9、在navicat中增加
CHANGE master TO
master_host='47.114.1.149',
master_user='itcast',
master_password='itcast',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=154;
其中第六项和第七项分别是主库中的log(之前在主库中show master status得到的,分别是File和position)如下
10、开启slave
start slave;
查看slave状态
show slave status;
11、设置主从复制模式(混合模式、默认为row模式)
binlog_format=MIXED
将以上语句加入到my.cnf中,重启docker
注意!!!
如果出现执行第九步的时候出错,先:
show global variables like 'server%'
显示出的server-id是0的话,是因为server-id没有配置好(也就是配置没有生效),执行:
SET GLOBAL server_id=2
再次查看:
之后再执行以上语句