[Demo示例]Docker构建本地Mysql主从库——手动创建。

缘起
想在本地使用Docker创建Mysql主从库,后续要实现全自动化,本次先手动实现功能。

步骤

  1. 下载镜像docker pull mysql
  2. 启动两个mysql容器。
    此处MYSQL_ROOT_PASSWORD是重点,设置密码为root否则无法启动
    第一个:m1
    docker run -p 3306:3306 --name m1 -e MYSQL_ROOT_PASSWORD=root -d mysql
    第二个:slave1
    docker run -p 3307:3306 --name slave1 -e MYSQL_ROOT_PASSWORD=root -d mysql
  3. 修改mysql配置文件 /etc/mysql/my.cnf
    主要追加3行(可以用linux的sed命令):
    sed '$a第一行\n第二行' my.cnf.bak > my.cnf
    # $表示最后,a表示追加内容,\n表示换行,>表示输出到文本
    
    # 主库的配置
    log-bin=mysql-bin #开启日志,mysql从库通过日志来更新自己的数据。
    server-id=1 
    binlog-do-db=dbName #这里就是指定要同步的数据库
    
    # 从库的配置
    log-bin=mysql-bin #一样的,同上
    server-id=2 #id不能相同
    replicate-do-db=dbName #唯一区别
    

分割线:到此就配置完了,下面执行mysql语句就可以完成了。


  1. 主库创建用户,授权。
    	-- 创建用户
    	create user 'sync'@'172.17.0.3' identified WITH 'mysql_native_password' BY '123';
    	-- 授权
    	grant replication slave on *.* to 'sync'@'172.17.0.3';
        -- 使生效
    	flush privileges;
    
    注:
    容器的ip可以通过 cat /etc/hosts 查看;
    mysql_native_password可以避免访问时对密码加密的要求;
    mysql8之后的版本,用户创建、授权不能同时进行,必须先创建再授权。
  2. 从库开启同步。
    -- 下面的master_log_file和master_log_pos在主库show master status命令获得。
    -- 这两个标识文件和偏移,决定了我们从哪开始同步
    change master to master_host='172.17.0.2',master_user='sync',master_password='123',master_log_file='mysql-bin.000005',master_log_pos=865;
    -- 开启
    start slave;
    -- 查看状态
    show slave status;
    
    注:
    show master status;后面可能会有\G,它是把结果旋转90度,在navicate中会报错,没法用。
    show slave status;结果中有错误信息,有问题可以根据它的提示来修改。只要Slave_IO_Running和Slave_SQL_Running是Yes,那就表示正常运行了~

未完待续,下次要做成一键全自动的,问题有:

  1. 创建容器时,修改my.cnf文件
  2. 分配不同的server-id ,容器名带id
  3. 启动容器时,获取容器ip,授权
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值