创建文件夹和配置文件
mkdir /uni/docker/mysql/master/data
mkdir /uni/docker/mysql/master/conf
#配置master节点
vi /uni/docker/mysql/master/conf/my.cnf
[mysqld]
#同一局域网内的server-id必须唯一
server-id=1
#开启二进制日志功能,并设置日志文件名,文件名可以随便取名(关键)
log-bin=mysql-bin
##启动master节点
docker run -idt --privileged=true --name=mysql-master -p 3301:3306 -v /uni/docker/mysql/master/data:/var/lib/mysql -v /uni/docker/mysql/master/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
mysql执行下面的指令
mysql> create user 'master'@'%' identified WITH 'mysql_native_password' by '123456'; ---创建一个用户用于从节点连接进行拉取备份
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave,replication client on *.* to 'master'@'%'; ---授予用户备份权限
Query OK, 0 rows affected (0.00 sec)
mysql> show master status; --查询主节点的状态,重点关注Position
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 | 157 | | | |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
mkdir -p /uni/docker/mysql/slave_01/data
mkdir -p /uni/docker/mysql/slave_01/conf
touch /uni/docker/mysql/slave_01/conf/my.cnf
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
#同一个局域网内server-id必须具有唯一性
server-id=2
#开启binlog功能,以备作为其他slave的master
log-bin=mysql-slave-bin
#指定中继日志
relay-log=slave_01-relay-bin
##启动slave-01节点
docker run -idt --privileged=true --name=mysql-slave-01 -p 3302:3306 -v /uni/docker/mysql/slave_01/data:/var/lib/mysql -v /uni/docker/mysql/slave_01/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
从节点mysql执行:
-- 关闭同步
stop slave;
-- 设置同步信息
change master to master_host='172.17.0.4' ,master_port=3306,master_user='master',master_password='123456',master_log_file='binlog.000003',master_log_pos=157,master_connect_retry=30;
-- 开启同步
start slave;
docker inspect --format=‘{{.NetworkSettings.IPAddress}}’ mysql-master 查询容器mysql-master的内网ip
检查slave状态:
show slave status;
关注这两个属性如图即为开启了
在my.cnf中配置的binlog_ignore_db和binlog_do_db都没生效,不知道为什么。