当前位置:网站首页>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
插入一条数据,进入从库查看发现库表结构及数据均已同步成功。
边栏推荐
- Introduction to the C language to realize bubble sort
- 颜色选择器的使用
- Quickly enter the current date and time
- Ask next CDC mysql to Doris. Don't show the specific number of lines, how to do?
- Go-Excelize API源码阅读(十一)—— GetActiveSheetIndex()
- 机器人控制器编程实践指导书旧版-实践二 传感器(模拟量)
- PLSQL学习第一天
- 短视频同城流量宣传小魔推有何优势?如何给实体商家带来销量?
- js函数聚合的三种实现方式
- 如何远程调试对方的H5页面
猜你喜欢
ABAP Data Types 和XSD Type 映射关系以及XSD Type属性
navicat for mysql 连接时报错:1251-Client does not support authentication protocol requested by server
MySQL设置初始密码—注意版本mysql-8.0.30
自动化测试框架搭建 ---- 标记性能较差用例
Based on STC8G2K64S4 single-chip microcomputer to display analog photosensitive analog value through OLED screen
卷积神经网络卷积层公式,卷积神经网络运算公式
协同工具满足70%-90%的工作需求,成为企业香饽饽
Unity—UGUI control
PLSQL学习第四天
ATH10 sensor reads temperature and humidity
随机推荐
941 · Sliding Puzzles
[Learn Rust together | Advanced articles | RMQTT library] RMQTT message server - installation and cluster configuration
编程老手如何在autojs和冰狐智能辅助之间选择?
神经网络样本太少怎么办,神经网络训练样本太少
全连接神经网络结构图,神经网络示意图怎么画
如何设计神经网络结构,神经网络设计与实现
神经网络的三种训练方法,神经网络训练全过程
Go-Excelize API源码阅读(十一)—— GetActiveSheetIndex()
NaiveUI中看起来没啥用的组件(文字渐变)实现原来这么简单
foreach遍历删除元素问题总结
预测股票涨跌看什么指标,如何预测明天股票走势
机器人控制器编程实践指导书旧版-实践二 传感器(模拟量)
Ask next CDC mysql to Doris. Don't show the specific number of lines, how to do?
人工神经网络模型的特点,人工神经网络模型定义
VS2013-调试汇编代码-生成asm文件-结构体内存布局-函数参数压栈-调用约定
初使jest 单元测试
StringUtils的具体操作
winget包管理器
【NeRF】原始论文解读
LaTeX出现错误代码Command \algorithmic already defined