主库
#创建目录
mkdir /data/mysql/master01
cd /data/mysql/master01
mkdir conf data
chmod 777 * -R
#创建配置文件
cd /data/mysql/master01/conf
vim my.cnf
#输入如下内容
[mysqld]
#开启二进制日志
log-bin=mysql-bin
#服务id,不可重复
server-id=1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
binlog_format=MIXED
#创建容器, 并启动
docker run --privileged=true --name percona-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 percona:5.7.23
#创建同步账户以及授权
create user 'itcast'@'%' identified by 'itcast';
grant replication slave on *.* to 'itcast'@'%';
flush privileges;
#查看master状态
show master status;
#查看二进制日志相关的配置项
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 --privileged=true --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=root percona:5.7.23
#设置master相关信息 ,ip为master的ip, user/password为刚刚master中创建的,port 为master的端口,master_log_file、master_log_pos在master通过show master status;查询出来的结果
CHANGE MASTER TO
master_host='192.168.253.129',
master_user='itcast',
master_password='itcast',
master_port=3306,
master_log_file='mysql-bin.000002',
master_log_pos=648;
#启动同步
start slave;
#查看master状态
show slave status;
测试;
在从库的运行
show slave status;
字段Slave_IO_Running/Slave_SQL_Running都为yes说明主从搭建成功
另:在主库中创建数据库,表都会在从库中自动创建出来
来源:CSDN
作者:WoodieWang
链接:https://blog.csdn.net/qq_26896085/article/details/104479818