MySQL利用Docker快速搭建主从复制
搭建步骤1、拉取镜像docker pull mysql:latest2、查看镜像docker images ———————————————————————————— mysql latest c8562eaf9d81 5 months ago 546MB3、创建启动容器
Masterdocker run -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
Slavedocker run -p 3307:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
MySQL 主数据库端口为 3306,容器名称为 mysql-master,默认密码为 123456,-d 为后台运行。
MySQL 从数据库端口为 3307,容器名称为 mysql-slave,默认密码为 123456,-d 为后台运行。4、配置Master
进入容器:docker exec -it mysql-master /bin/bash
修改配置文件:cd /etc/mysql vim my.cnf ———————————————————————————— bash: vim: command not found
找不到vim命令解决:# 更新包 apt-get update # 安装vim apt-get install vim -y
修改配置文件,添加如下配置:# 同一局域网内注意要唯一 server-id=1 # 开启二进制日志功能,二进制文件名称 log-bin=master-bin # 二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。 binlog-format=ROW # 同步的数据库名称,如果不配置,表示同步所有的库 binlog-do-db=数据库名
重启容器:docker restart mysql-master5、配置Slave
进入容器:docker exec -it mysql-slave /bin/bash
修改配置文件如下:# 同一局域网内注意要唯一 server-id=2 # 开启二进制日志功能,二进制文件名称 log-bin=slave-bin # 二进制文件的格式 binlog-format=ROW
重启容器:docker restart mysql-slave6、开启 Master-Slave 主从复制
进入 master 容器或者通过 MySQL 客户端工具,执行 show master status 查看 master 状态,记录相关信息。mysql->show master status; ———————————————————————————— -------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +-------------------+----------+--------------+------------------+-------------------+ | master-bin.000007 | 156 | | | |
查看 master 容器的独立IP:docker inspect --format="{{.NetworkSettings.IPAddress}}" mysql-master ———————————————————————————— 172.17.0.4
进入slave容器或者通过MySQL客户端工具,执行如下命令:change master to master_host="172.17.0.4", master_user="root", master_password="123456", master_port=3306, master_log_file="master-bin.000007", master_log_pos=156, master_connect_retry=60;master_host:master的容器独立IPmaster_port:master的容器端口号master_user:用于同步数据的用户master_password:用于同步数据的用户密码master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
启动 slave:start slave
查看 slave 状态:show slave status G; ———————————————————————————— *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.17.0.4 Master_User: root Master_Port: 3306 Connect_Retry: 30 Master_Log_File: master-bin.000007 Read_Master_Log_Pos: 4187 Relay_Log_File: a40ee670e244-relay-bin.000002 Relay_Log_Pos: 4356 Relay_Master_Log_File: master-bin.000007 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: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 4187 Relay_Log_Space: 4572 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: 0 Master_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: 77e35acb-bfb0-11eb-9513-0242ac110002 Master_Info_File: mysql.slave_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: 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: Master_public_key_path: Get_master_public_key: 0 Network_Namespace:
看到 Slave_IO_Running: Yes,Slave_SQL_Running: Yes 说明启动成功了。7、关闭主从
进入 slave 容器 mysql 客户端stop slave;8、主从测试
通过 MySQL 客户端自主创建数据库表...不展示了...相关命令语法拉取镜像docker pull {镜像名称}:{版本号(默认为latest)}查看镜像docker images创建启动容器docker run -p {对外暴露端口}:{容器内端口} --name {自定义容器名称} -e {参数} -d {镜像名称}:{版本号}重启容器docker restart {容器id或者容器名称}进入容器docker exec -it {容器id或者容器名称} /bin/bash查看容器信息或指定信息docker inspect {容器id或者容器名称} docker inspect --format="{{.NetworkSettings.IPAddress}}" {容器id或者容器名称}
朝鲜马路上汽车很少,经常能见到汽车抛锚?到朝鲜清津的途中,几乎全部是颠簸的土路。汽车驶过的时候,尘土飞扬,让能见度都变得很低,所以后面的车辆,都需要拉开很远的距离。进入清津市区后,发现路面也是坑坑洼洼,很多地段都裂开了。
遵义新蒲中桥有座掉脸山山脚看掉脸山掉脸山,又名龙角山,双筛山,白石,位于遵义新蒲中桥境内,中桥水库边上。如果你驾车从遵义城区出发向东去虾子方向,在老326国道上能看见如果你驾车在遵义绕城高速公路上由南向
拜占庭,一个在罗马废墟上建立的帝国,却跟罗马有诸多相似之处文白面书誏编辑白面书誏拜占庭帝国(公元4至15世纪)的社会由皇室和男性贵族主导,但由于战争人口流动帝国赐予的土地和头衔以及通婚,社会进步的机会也随之而来。下层阶级的大多数人会跟随他
旅游市场新物种!王府井国际免税港亮相海南万宁北京日报客户端记者马婧随着春节临近,海南迎来了旅游度假高峰。1月18日,王府井国际免税港在热闹的舞狮表演中开启了试营业,这是王府井集团获得免税牌照后开设的首家免税项目,也是海南万宁
这个颜色就算撞衫我也要穿高饱和度越高的颜色存在感就越强,克莱因蓝便属于最纯粹的蓝,它能轻松营造出纯净和静谧的氛围感这个纯粹的蓝色源自1956年,由法国艺术家伊夫克莱因用纯色染料和一种粘合介质,制成了属于自
春天的颜色,大象的翠绿好物盘点随着春节的到来,也代表着冬天即将过去,春天走近。什么颜色最能代表春天呢,肯定莫过于翠绿色,毕竟要想生活过得去,必须带点绿嘛!大象发现还是有不少绿色的好物,今天就来跟大家一起盘点一下
6款比肉还香的炸丸子,建议列入年夜饭菜单,外酥里嫩鲜香味美大家好这里是香姐说美食,每天分享好吃的家常菜。不久之后就要到大年三十了,除夕夜的团圆饭是一年中最重要的一餐,每家每户都会安排一桌丰盛的晚餐,鸡鸭鱼肉一大桌美味。我们家的除夕夜晚餐有
春节穿什么颜色的衣服比较好看春节还属于比较冷的季节,最好穿保暖一点的衣服其次,可以穿表示喜庆的红色衣服,这样比较有过年的气氛再者,还可以搭配红色的小饰品,如帽子围巾耳环等。接下来就来学习一组时尚穿搭博主的新年
争创国家全域旅游示范区冰川蓝泪湖青4860红,达古冰川想给你点颜色看看亲近过高原冰湖,你才知道世界的博大观赏过雪山日出,你会发现生命如此沸腾对话过万年冰川,你将参悟永恒和瞬间为进一步擦亮大冰川品牌,助燃四川研学市场,四川阿坝达古冰川景区在第十三届冰雪
田野新语节日慰问,既要有慰更要多问春节将至,各地都在积极开展走访慰问活动,为特殊群体特别是生活困难群众送上现金米面油等生活物资,让他们过上一个温暖祥和的新春佳节。逢年过节,领导干部代表党和政府,通过走访慰问的形式,
新春走基层摩托小军的回家路央广网北京1月18日消息(记者邓君洋傅琦恩李阳阳)据中央广播电视总台中国之声新闻和报纸摘要报道,近年来,骑摩托车从广东回广西过年的摩托大军被人们熟知。这两年,驾驶私家车和坐高铁回乡