macbookpro m1 docker安装mysql主从

  • 在docker hub 搜索 amd64/mysql,找到自己需要的版本
  • 以5.7为例,https://registry.hub.docker.com/r/amd64/mysql/tags
  • 先下载运行mysql-master(注意修改你的相应路径和密码)
docker run -p 3307:3306 --name mysql-master \
-v /Users/jelex/dockerV/mysql-master/log:/var/log/mysql \
-v /Users/jelex/dockerV/mysql-master/data:/var/lib/mysql \
-v /Users/jelex/dockerV/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d amd64/mysql:5.7
  • 查看是否启动成功
docker ps
  • 配置mysql-master的cnf文件
jelex@localhost conf % pwd
/Users/jelex/dockerV/mysql-master/conf
jelex@localhost conf % cat my.cnf 
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

server_id=1
#不需要同步的db
binlog-ignore-db=mysql
log-bin=mall-mysql.bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
#跳过主健重复
slave_skip_errors=1062
  • 重启mysql-master并查看是否成功
docker restart mysql-master
docker ps
  • 登录mysql-master容器内
#我们尽量避免使用slave这种词汇
mysql> create user 'replica'@'%' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.08 sec)

mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'replica'@'%';
Query OK, 0 rows affected (0.03 sec)

mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| mall-mysql.000004 |      617 |              | mysql            |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)

mysql> 
  • 另起一个终端,开始运行mysql-replica从库
docker run -p 3308:3306 --name mysql-replica \
-v /Users/jelex/dockerV/mysql-replica/log:/var/log/mysql \
-v /Users/jelex/dockerV/mysql-replica/data:/var/lib/mysql \
-v /Users/jelex/dockerV/mysql-replica/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d amd64/mysql:5.7

#查看是否运行成功
docker ps mysql-replica
  • 配置从库的cnf
jelex@localhost conf % pwd
/Users/jelex/dockerV/mysql-replica/conf

jelex@localhost conf % cat my.cnf 

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

server_id=102
#不需要同步的db
binlog-ignore-db=mysql
log-bin=mall-mysql-replica1.bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
#跳过主健重复
slave_skip_errors=1062
relay_log=mall-mysql-relay-bin
#将复制事件写进自己的二进制日志
log_slave_updates=1
#replica 设置为只读(具有super权限的用户除外)
read_only=1
  • 修改从库配置后重启
docker restart mysql-replica
# 查看是否重启成功
docker ps

  • 进入从库容器
jelex@localhost conf % docker exec -it mysql-replica /bin/bash
root@6915ccd9c25d:/# 
root@6915ccd9c25d:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  • 起第三个终端,查看本机IP(127.0.0.1不行
>ifconfig
...
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether f8:4d:89:96:86:92 
	inet6 fe80::8b5:ca7c:23d:cd98%en0 prefixlen 64 secured scopeid 0xe 
	inet 192.168.0.101 netmask 0xffffff00 broadcast 192.168.0.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
...
找到你自己的IP,我这是 192.168.0.101
  • 回到从库容器mysql内(第2个终端)
mysql> change master to master_host='192.168.0.101', master_user='replica',master_password='root',master_port=3307,master_log_file='mall-mysql.000004',master_log_pos=617,master_connect_retry=30;
Query OK, 0 rows affected, 2 warnings (0.14 sec)

mysql>
mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 127.0.0.1
                  Master_User: replica
                  Master_Port: 3307
                Connect_Retry: 30
              Master_Log_File: mall-mysql.000004
          Read_Master_Log_Pos: 617
               Relay_Log_File: mall-mysql-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mall-mysql.000004
             Slave_IO_Running: No
            Slave_SQL_Running: No
             ...省略...
             ...省略...
           Master_TLS_Version: 
1 row in set (0.00 sec)

现在看到  Slave_IO_Running: No
        Slave_SQL_Running: No
  • 启动主从
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
  • 再看从库同步状态
mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 127.0.0.1
                  Master_User: replica
                  Master_Port: 3307
                Connect_Retry: 30
              Master_Log_File: mall-mysql.000004
          Read_Master_Log_Pos: 617
               Relay_Log_File: mall-mysql-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mall-mysql.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
             ...省略...
             ...省略...
           Master_TLS_Version: 
1 row in set (0.00 sec)
  • 最后:在主库mysql-master中建库建表,插入数据,再去从库中查看,验证主从同步…
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值