拉取mysql的镜像
docker search mysql
docker pull mysqlmysql
经过镜像建立容器,这里先建立第一个容器做为master mysql
-v /etc/mysql:/etc/mysql/conf.d 表示目录共享,目录提早建立好,第二个容器要目录不同sql
docker run -d --name one_mysql -v /etc/mysql:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysqldocker
进入容器
docker exec -it one_mysql bash数据库
宿主机的配置文件
/etc/mysql/mysql.cnfbash
[mysqld]
server-id = 1
log-bin = mysql-bin加密
进入容器后
show master status
查看下当前的状态,若是看到binlog日志是咱们配置的文件名就说明咱们配置成功了日志
建立第二个容器做为咱们的slave mysqlserver
docker run -d --name two_mysql -v /etc/mysql2:/etc/mysql/conf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
宿主机的配置文件
/etc/mysql2/mysql.cnfblog
[mysqld]
server-id = 2it
进入容器看看变量变了没有,若是已是咱们配置的就说明配置文件是成功的
docker exec -it two_mysql bash
show variables like 'server_id';
开启主从复制
change master to master_host='172.17.0.3',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=155;
start slave
show slave status
看到Slave_Io_Running:yes Slave_SQL_Running:yes 就能够了
修改密码的加密方式,由于默认的加密方式,主从复制的时候,从数据库链接不上
USE mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
docker inspect 容器ID 查看该容器的IP