如何使用Docker配置Mysql5.7主从复制

1、创建mysql本地l数据库目录

 mkdir -p /usr/mysql/master/date

2、创建MySQL本地配置文件目录

mkdir -p /usr/mysql/master/conf

3、创建mysql配置文件:

vim /usr/mysql/master/conf/my.cnf

[client]

#设置mysql客户端默认字符集
default-character-set=utf8
[mysql]
default-character-set=utf8

[mysqld]

#设置mysql服务端默认字符集
character-set-server=utf8

#同局域网内的server-id必须具有唯一性
server-id=1

#指定复制那些数据库
binlog-do-db=venus

#指定不复制那些数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

#开启二进制日志功能,并设置日志文件名,文件名可以随便取名(关键)
log-bin=mysql-bin

#设置binlog日志格式,其取值可以为row(默认)、statement和mixed
binlog_format=statement

#设置每隔多少次事务提交操作才会将这些操作写入二进制文件
sync_binlog=1

#默认使用 ”mysql——native——password“ 认证
default_authentication_plugin=mysql_native_password

4、创建并运行容器

docker run -id --name m_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /usr/mysql/master/conf:/etc/mysql/conf.d -v /usr/mysql/master/date:/var/lib/mysql mysql:5.7
注意:创建完成后重启容器 docker restart m_mysql

        运行容器

        docker exec -it m_mysql /bin/bash

5、连接主节点:使用MySQL客户端

        #配置mysql密码

        ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

        #配置mysql可以远程连接

        grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

        GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

6、创建从节点同步主节点数据的账号,并授权

[client]

#设置mysql客户端默认字符集
default-character-set=utf8
[mysql]
default-character-set=utf8

[mysqld]

#设置mysql服务端默认字符集
character-set-server=utf8

#同局域网内的server-id必须具有唯一性
server-id=2

#指定复制那些数据库

#指定中继承日志
relay-log=slave1-relay-bin




#设置每隔多少次事务提交操作才会将这些操作写入二进制文件
#sync_binlog=1

#默认使用 ”mysql——native——password“ 认证
default_authentication_plugin=mysql_native_password

7、docker创建从数据库 

docker run -id --name=m_mysql -e MYSQL_ROOT_PASSWORD=123456!  -p 3307:3306  -v /usr/mysql/master/conf:/etc/mysql/conf.d -v /usr/mysql/master/logs:/logs -v /usr/mysql/master/data:/var/lib/mysql  mysql:5.7

 运行容器

        docker exec -it s_mysql /bin/bash

8、连接主节点:使用MySQL客户端

        mysql -u -p 

        此时密码为空,密码回车就行

  •  #配置mysql密码

        ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

  • #配置mysql可以远程连接

        grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

  • #为'root'@'%'用户分配主从复制权限

        grant REPLICATION SLAVE on *.* to 'root'@'%';

        从数据库目前配置完成

8、开始配置从库连接

        #使用mysql数据库查询

  • 在主库使用show master status;查询binlog日志

 

  •  在从库使用配置连接主库的语句

停止slave

      stop slave;

change master to 
master_host='8.137.97.94',                
master_port=3307, 
master_user='root',
master_password='123456', 
master_log_file='mysql-bin.000007', 
master_log_pos=342;

change master to 
master_host='8.137.97.94',        #主库ip地址        
master_port=3307,                     #主库数据库端口号
master_user='root',                     #主库数据库账户
master_password='123456',         #主库账户密码
master_log_file='mysql-bin.000007',         #主库binlog日志文件名
master_log_pos=342;                    #主库binglog日志文件位置

9.开启主从同步操作

 在从库执行

start replica;       #8.0.22之前版本

start slave;        #8.0.22之前版本

10.查看主从同步状态

 在从库执行

showreplica status;       #8.0.22之前版本

show slave status;        #8.0.22之前版本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值