当前位置:网站首页>Docker搭建Mysql一主一从
Docker搭建Mysql一主一从
2022-08-10 08:18:00 【苦 糖 果】
1.启动两个mysql节点,分别对应3307,3317端口
docker run -p 3307:3306 --name mysql-master -v /mydata/mysql/master/conf:/etc/mysql -v /mydata/mysql/master/logs:/var/log/mysql -v /mydata/mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker run -p 3317:3306 --name mysql-slave01 -v /mydata/mysql/slave/conf:/etc/mysql -v /mydata/mysql/slave/logs:/var/log/mysql -v /mydata/mysql/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
2. 修改配置
2.1 修改主库配置
vi /mydata/mysql/master/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='set collation_connection=utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
server_id=1
log-bin=mysql-bin
read-only=0
binlog-do-db=user_db #设置需要同步的数据库
#屏蔽系统库同步
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
2.2 修改从库配置
vi /mydata/mysql/slave/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='set collation_connection=utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
server_id=2 #主从模式下server_id不能重复
log-bin=mysql-bin
read-only=1 #开启只读
replicate_wild_do_table=user_db.%
replicate_wild_ignore_table=sys.%
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
可以在Slave上使用 replicate_wild_do_table和 replicate_wild_ignore_table 来解决跨库更新的问题
3. 重启mysql,分配从库复制权限
重启mysql
docker restart mysql-master mysql-slave01
进入mysql实例内部
docker exec -it mysql-master /bin/bash
连接mysql,然后输入密码
mysql -u root -p
查看root账号权限
select * from mysql.user where user='root'\G;
权限都有,如果没有,可以使用以下命令创建
全局权限,作用于整个MySQL实例,这些权限信息保存在mysql库的user表里。给用户’root赋一个最高权限:
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
添加用来主从复制的账号:记得末尾带上分号
grant replication slave on *.* to 'backup'@'%' identified by '123456';
查看主库状态:
show master status\G;
退出mysql
exit
退出mysql容器
exit
4. 从库开启主从配置
进入mysql实例内部
docker exec -it mysql-slave01 /bin/bash
连接mysql,然后输入密码
mysql -u root -p
修改从库指向到主库,使用上一步记录的文件名以及位点
change master to master_host='192.168.1.117',master_user='backup', master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3307;
启动同步
start slave;
查看从库状态,该命令在可视化界面执行观察更方便
SHOW SLAVE STATUS;

Slave_IO_Running 不是 YES,猜测是网络问题
停止同步
stop slave;
因为使用的是腾讯元服务器,改成内网地址试试
change master to master_host='10.0.4.14',master_user='backup', master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3307;
启动同步
start slave;
查看从库状态,双yes一切正常
5. 验证
在主库创建数据库和表
CREATE DATABASE `user_db`
CREATE TABLE `t_user` (
`user_id` BIGINT(20) NOT NULL,
`username` VARCHAR(64) DEFAULT NULL,
`ustatus` VARCHAR(32) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
插入一条数据,进入从库查看发现库表结构及数据均已同步成功。
边栏推荐
- placeholder 1
- iwemeta metaverse: a doll sells for 9999 yuan, and Bubble Mart thinks it is not expensive at all
- 上课笔记(7)(1)——#647. 找树根和孩子(root)
- Uni applet Tencent map polygon background transparency
- 差分、前缀和模板
- [机缘参悟-65]:《兵者,诡道也》-7-三十六计解读-败战计
- Introduction to C integer data storage
- Day36 LeetCode
- 本地生活商家如何通过短视频赛道,提升销量曝光量?
- The probability distribution and its application
猜你喜欢

day16--The use of the packet capture tool Charles

NPU架构与算力分析

机器人控制器编程实践指导书旧版-实践一 LED灯(数字量)

预测股票涨跌看什么指标,如何预测明天股票走势

Rust学习:6.1_复合类型之切片

快速输入当前日期与时间

iwemeta元宇宙:一个娃娃卖9999元,泡泡玛特认为一点也不贵

PLSQL学习第二天

C# 获取PCI等设备的插槽位置信息

Based on STC8G2K64S4 single-chip microcomputer to display analog photosensitive analog value through OLED screen
随机推荐
It is obvious that a unique index is added, why does it still generate duplicate data?
Obtain - 65 [chances] : "soldiers, subtlety also - 7-36 meter reading - defeat
[深入研究4G/5G/6G专题-56]: L3信令控制-5-无线承载管理
自动化测试框架Pytest(三)——自定义allure测试报告
模糊查询除了like+ % 还能用什么方式
Power function Exponential function Logarithmic function
神经网络的三种训练方法,神经网络训练全过程
同步锁synchronized追本溯源
Introduction to the C language to realize bubble sort
What is an MQTT gateway?What is the difference with traditional DTU?
PLSQL学习第三天
SQL SERVER 数据库,表的数据发生增删改,该表的索引会在ldf日志中记录吗?
day16--抓包工具Charles的使用
MySQL设置初始密码—注意版本mysql-8.0.30
Rust学习:6.2_复合类型之元组
初使jest 单元测试
手把手教你进行Mysql查询操作
Binary tree --- heap
每日一题,二叉树中增加一行
Rust learning: 6.2_ Tuples of composite types