创建主数据库容器
-. 本地创建 master 配置文件
mkdir -p /data/mysql/master01
cd /data/mysql/master01
mkdir conf data
chmod 777 * -R
vim /data/mysql/master01/conf/my.cnf
----------------------------------------
[mysqld]
log-bin = mysql-bin
server-id = 1
-. docker 创建容器,并指定数据库的配置文件
docker create --name percona-master01 \
-v /data/mysql/master01/data:/var/lib/mysql \
-v /data/mysql/master01/conf:/etc/my.cnf.d \
-p 3307:3306 \
-e MYSQL_ROOT_PASSWORD=123 \
percona:5.7.23
-. 启动容器
docker start percona-master01
docker logs -f percona-master01
-. 创建从库连接的用户及密码
create user 'itcast'@'%' identified by '123';
grant replication slave on *.* to 'itcast'@'%';
flush privileges;
创建从数据库容器
mkdir -p /data/mysql/slave01
cd /data/mysql/slave01
mkdir conf data
chmod 777 * -R
vim /data/mysql/slave01/conf/my.cnf
-----------------------------------
[mysqld]
server-id=2
docker create --name percona-slave01 \
-v /data/mysql/slave01/data:/var/lib/mysql \
-v /data/mysql/slave01/conf:/etc/my.cnf.d \
-p 3308:3306 \
-e MYSQL_ROOT_PASSWORD=123
percona:5.7.23
配置主从关系
主数据库执行查询
mysql > show master status;
得到结果:
从数据执行
change master to
master_host='192.123.123.1', # 主数据库的IP地址
master_user='itcast',
master_password='123',
master_port=3306,
master_log_file='mysql-bin.000008', #上图中的File值
master_log_pos=1698; #上图中的Position值
start slave;
show slave status; # 查看从数据库的状态。 Slave_IO_Running 和 Slave_SQL_Running 为 yes时,成功
查看从数据库状态时,其中 Slave_IO_Running 和 Slave_SQL_Running都为yes时,配置成功。如果 Slave_IO_Running为Connecting, 原因是在change master to ... 配置时出现问题,可能的原因有:网络问题, 连接不到主数据库所在的服务器
pos 配置错误
连接主数据库的用户以及密码错误
其他如主数据的防火墙,权限,主数据绑定了bind_address等