docker--mysql的主从服务器

1.新建主服务容器

docker run -p 3307:3306 --name mysql-master -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql

2. 进入/mydata/mysql-master/conf目录下新建my.cnf

        2.1.在主机上vim my.cnf

[mysqld]
#设置server-id,注意要唯一
server-id=101
#开启二进制日志功能
log_bin=mall-mysql-bin
#设置二进制使用内存大小
binlog_cache_size=1M
#二级制日志格式,有三种 row,statement,mixed
binlog_format=mixed
#控制binlog日志文件保留时间,超过保留时间的binlog日志会被自动删除
expire_logs_days=7
#跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断
#如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
#不同步的数据库
binlog-ignore-db=mysql

3.修改完配置后重新启动master实例

docker restart mysql-master

4.进入mysql-master容器

# 重新进入到mysql-master容器中
docker exec -it mysql-master /bin/bash
# 以root的身份进入到mysql中
mysql -uroot -p 

5.master容器实例内创建数据同步用户

# 创建用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 授权
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';

6.新建从服务器容器实例3308

docker run -p 3308:3306 --name mysql-slave -v /mydata/mysql-slave/log:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql

7.进入、mydata/mysql-slave/conf目录下新建my.cnf

# 1. 打开my.cnf
vim my.cnf
#2.配置内容
[mysqld]
#设置server-id,注意要唯一
server-id=102
#开启二进制日志功能,以备slave作为其他数据实例的master时使用
log_bin=mall-mysql-slave1-bin
#设置二进制使用内存大小
binlog_cache_size=1M
#二级制日志格式,有三种 row,statement,mixed
binlog_format=mixed
#控制binlog日志文件保留时间,超过保留时间的binlog日志会被自动删除
expire_logs_days=7
#跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断
#如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
#不同步的数据库
binlog-ignore-db=mysql
#relay_log配置中继日志
relay_log=mall-mysql-relay-bin
# log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
# slave设置为只读(具有super权限的用户除外)
read_only=1

8.修改完成后重启salve实例

docker restart mysql-slave

9.在主数据库中查看从同步状态

show master status;

10.进入mysql-slave容器

# 重新进入到mysql-slave容器中
docker exec -it mysql-slave /bin/bash
# 以root的身份进入到mysql中
mysql -uroot -p 

11.在从数据库中配置主从复制

# master_host:宿主机的ip
# master_user:在主数据库创建的用于同步数据的用户账号
# master_password:在主数据库创建的用于同步数据的用户密码
# master_port:主数据库的运行端口
# master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取file参数
# master_log_pos:指定从数据库从那个位置开始复制数据,通过查看主数据的状态,或者position的参数
# master_connnect_retry:连接失败重试的时间间隔,单位为秒



change master to
master_host='172.17.0.2',
master_user='root',
master_password='123456',
master_port='3307',
master_log_file='mall-master-bin.000001',
master_log_pos=617,
master_connnect_retry=30;

12.在从数据库中查看主从同步状态

# 显示格式不同,可不加G
show slave status \G;

13.在从数据库中开启主从同步

start slave;

14.查看从数据状态发现已经同步

# 显示格式不同,可不加G
show slave status \G;

15.主从复制测试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值