栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

macbookpro m1 docker安装mysql主从

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 mtu 1500
	options=6463
	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
	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中建库建表,插入数据,再去从库中查看,验证主从同步…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751997.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号