记录一次docker安装mysql主从服务器

记录一次docker安装mysql主从服务器

安装主机

docker run --name mysql-master -v /home/mysql/master/data:/var/lib/mysql -v /home/mysql/master/conf:/etc/mysql -p 12345:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

看了网上其他人安装的过程,不是少了配置文件的挂载就是挂载目录出错,这里注意mysql5.7的配置文件目录是在/etc/mysql。

接着在自己挂载的配置文件目录找到my.cnf文件,vim修改

vim my.cnf

加上下面的配置项

[mysqld]
log-bin=mysql-bin
server-id=1

开启二进制日志,设置id为1表示master

连接mysql,可以在docker连也可以用navicat等数据库工具

docker exec -it mysql-master bin/bash

连接:

mysql -uroot -proot

创建一个专门用来复制二进制日志文件的账号

grant replication slave on *.* to 'hrr'@'%' identified by 'hrr';
flush privileges;

然后执行

show master status;

11111
记录此时的file与position,不要操作这个数据库,后面配置从机需要

安装从机

同主机安装,有点小区别:

docker run --name mysql-slave -v /home/mysql/slave/data:/var/lib/mysql -v /home/mysql/slave/conf:/etc/mysql -p 12346:3306 --link mysql-master:master -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

注意这里的–link,因为docker里的主从机network是不互通的,把从机链接到主机,简化名称master,让他们之间可以互通

进入从机

docker exec -it mysql-slave bash
mysql -uroot -proot

根据刚才得到的主机日志文件与position信息,将从机连接到主机

change master to master_host='master', master_user='hrr', master_password='hrr', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=581, master_connect_retry=30;

注意master_port要是docker主机内部实际的端口

start slave;

开启slave
然后查看

show slave status\G;
Slave_IO_State: Waiting for master to send event
                  Master_Host: master
                  Master_User: hrr
                  Master_Port: 3306
                Connect_Retry: 30
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 581
               Relay_Log_File: 6774ae81bc25-relay-bin.000034
                Relay_Log_Pos: 367
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
                         ....
             Master_Server_Id: 1
                  Master_UUID: 8976b929-bc8b-11e9-bab3-0242ac110005
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind:
                         ....
1 row in set (0.00 sec)

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两个参数为yes就表示主从同步成功
然后主机新建库新建表,新增数据,从机相应也会有相同的数据
结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值