创建MySQL启动的配置文件mysqld.cnf
其内容为:
#mysql master1 config [mysqld]server-id = 1 # 节点ID,确保唯一# log configlog-bin = mysql-bin #开启mysql的binlog日志功能sync_binlog = 1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全binlog_format = mixed #binlog日志格式,mysql默认采用statement,建议使用mixedexpire_logs_days = 7 #binlog过期清理时间max_binlog_size = 100m #binlog每个日志文件大小binlog_cache_size = 4m #binlog缓存大小max_binlog_cache_size= 512m #最大binlog缓存大binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行auto-increment-offset = 1 # 自增值的偏移量auto-increment-increment = 1 # 自增值的自增量slave-skip-errors = all #跳过从库错误
为什么要制作镜像?
因为要修改MySQL启动时加载的配置文件,配置文件在
/etc/mysql/mysql.conf.d/
文件夹下。直接使用官方镜像,是加载的默认配置。
Dockerfile内容为:
FROM mysql:5.7COPY mysqld.cnf /etc/mysql/mysql.conf.d/
使用构建命令构建镜像
docker build -t mysql57:zbk .
docker network create localnet
使用容器命令启动
docker run --restart=always --privileged=true -d -v /e/home/mysql/data/:/var/lib/mysql -p 33306:3306 --name mysql-master --network localnet -e MYSQL_ROOT_PASSWORD=123456 mysql5.7:zbk
注意:Windows的本地挂载文件路径,是/
开头。
创建MySQL启动的配置文件mysqld.cnf
其内容为:
[mysqld]server-id = 2log-bin=mysql-binrelay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%
Dockerfile内容为:
FROM mysql:5.7COPY mysqld.cnf /etc/mysql/mysql.conf.d/
使用构建命令构建镜像
docker build -t mysql57:zbk001 .
使用容器命令启动
docker run --restart=always --privileged=true -d -v /e/home/mysql/data/:/var/lib/mysql -p 33307:3306 --name mysql-slave --network localnet -e MYSQL_ROOT_PASSWORD=123456 mysql5.7:zbk001
docker network inspect localnet
可以看到两个数据库容器均已组网
主数据库容器的Ip地址为172.19.0.2
,从数据库容器的Ip地址为172.19.0.3
。
笔者通过Navicat
连接到容器数据库,Ip地址是WSL2
的网卡地址。
输入下列命令查看
show variables like "%log_bin%";
CREATE USER repl_user IDENTIFIED BY "repl_passwd";
grant replication slave on *.* to "repl_user"@"172.19.0.3" identified by "repl_passwd";FLUSH PRIVILEGES;
mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000002 | 3306 | | mysql | |+------------------+----------+--------------+------------------+-------------------+1 row in set
后面从数据库的配置会使用到文件名mysql-bin.000002
及位置3306
。
mysql> CHANGE MASTER TO MASTER_HOST = "172.19.0.2", MASTER_USER = "repl_user", MASTER_PASSWORD = "repl_passwd",MASTER_PORT = 3306,MASTER_LOG_FILE="mysql-bin.000002",MASTER_LOG_POS=3306,MASTER_RETRY_COUNT = 60,MASTER_HEARTBEAT_PERIOD = 10000;
mysql> start slave;
mysql> show slave status /G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.19.0.2 Master_User: repl_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 3067 Relay_Log_File: mysql-relay-bin.000015 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: mysql.%,test.%,information_schema.% Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 3067 Relay_Log_Space: 1246 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: 1371c90d-0f8c-11ec-b520-0242ac110002 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: 60 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version:1 row in set (0.00 sec)ERROR:No query specified
新建数据库iot、iot1,可以看到从数据库已经同步过来。
看完 点个赞吧 亲 ❤️ ❤️ ❤️ ❤️ ❤️
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/119641.html
摘要:以下命令设置页大小为,簇大小为,大小写敏感,字符集为,数据库名为,实例名为,端口为。如果可用内存过少,可能导致数据库安装或启动失败。安装数据库上传安装包,解压 目...
文章目录 虚拟化技术之docker技术详解(二)关于作者作者介绍前言一、Docker 概念简述1.1 Docker 是什么?1.2 Docker 版本及支持平台1.3 为什么要使用Docker 容器技术1.4 Docker VS 传统虚拟化1.5 Docker 应用场景1.6 Docker 设计目标1.7 Docker 技术架构1.8 Docker 文件系统类型介绍1.9 Docker 镜像、容器...
哈喽,大家好,我是贾斯汀,欢迎进来学习啦~ 【学习背景】 在日常工作和学习MySQL时,经常涉及到MySQL数据的导入和导出,分享几种常用又方便的方式: (1)MySQL命令行source命令 (3)语法into outfile和load data infile (3)MySQL目录bin下的mysqldump工具 本文将会介绍以及测试这几种MySQL导入导出数据的方式及使用注意事项,参...
目录 ? 前言☀️ 软件介绍? IINA – 全格式视频播放神器? Motrix – 万能下载软件? Downie 4 – 视频下载神器? Tuxera Disk Manager – NTFS磁盘管理? Alfred 4 – 全自动效率神器? iShot && Snipaste – 全能截图工具? Parallels Desktop – 虚拟机神器? Mircosoft Remote Deskto...
上次给大家分享了一个springboot+vue的校园招聘系统,视频教程加项目源码,都是开源的,应该说很香了,今天再给大家分享一个不错的springboot的项目。 老规矩,开源,开源,开源!!! 金九银十来了,小伙伴们,冲啊!前面已经整理了很多的面试题,拿去学习吧! 1,❤️爆肝!整理了一周的Spring面试大全【含答案】,吊打Java面试官【建议收藏】!❤️ 2,❤️肝完了,一天掌握数据...
阅读 1162·2023-04-25 22:42
阅读 1967·2021-09-22 15:16
阅读 658·2021-09-09 09:33
阅读 3352·2021-08-30 09:44
阅读 385·2019-08-29 16:44
阅读 3204·2019-08-29 16:20
阅读 2405·2019-08-29 16:12
阅读 3287·2019-08-29 16:07